shebangを含む複数行のテキストからshebang(らしきもの)を検索して、実行プログラム名を取得し、実行するScript言語のファイルの拡張子を判定するAppleScriptです。
RTFで記述したシェルスクリプトやRubyのスクリプトのスケルトンに、色分けしたパラメータ部分のデータを差し替えてRubyやシェルスクリプトの実行ファイルを動的に書き出し、所定のスクリプト言語処理系で実行するAppleScriptを書いたときに用いたものです。
割と処理内容はヘロヘロでたいした固い処理は行なっていませんが、凶悪な処理を行うためのキーパーツです。
AppleScript名:shebangっぽい行から実行プログラムを取得してスクリプト言語の拡張子を取得 |
set aText to "#!/usr/bin/env python import re " set aLang to splitLangFromShebangStr(aText) of me if aLang = false then error "This data seems not a shebang" set aExt to detectScriptFileExtension(aLang) of me return {aLang, aExt} –> {"python", "py"} –shebangっぽい行から実行プログラム名を抽出 on splitLangFromShebangStr(aText) set aTmpList to paragraphs of aText repeat with i in aTmpList set j to contents of i if j starts with "#!" then set aWorkList to words of j set aLang to contents of last item of aWorkList return aLang end if end repeat return false end splitLangFromShebangStr on detectScriptFileExtension(aLang) ignoring case if aLang = "Ruby" then return "rb" else if aLang = "Python" then return "py" else if aLang = "perl" then return "pl" else if aLang = "sh" then return "sh" else return "" end if end ignoring end detectScriptFileExtension |
More from my site
(Visited 143 times, 1 visits today)
ぴよまるソフトウェアが選ぶ、2018年に書いた「価値あるScript」 – AppleScriptの穴 says:
[…] ・shebangっぽい行から実行プログラムを取得してスクリプト言語の拡張子を取得 […]