2015/06/30(火) [n年前の日記]
#2 [prog][javascript] Atomエディタ + Script でエラーが出る問題
Windows7 x64 上でAtomエディタを試しているのだけど。Scriptパッケージを使えば、今現在開いてるバッファの内容をキーを叩くだけで実行してくれるわけです。しかし、Pythonスクリプト等の、1行目のおまじない ――
_シバン行
で余計なことをしてエラーを出しちゃうわけですよ。
シバン行ってのは、下のような行ですが。
一応、C:\Users\アカウント名\.atom\packages\script\lib\script-view.coffee を開いて、getShebangメソッド?の中に return を書いとけばエラーは回避できるのですが。本来なら、
調べてみたら、JavaScript、というか Node.js の場合、os.platform() や process.platform で、OSの種類を取得できるようで。'win32' が返ってきたら Windows で動かしてると。一応、node[Enter]で REPL なるものを動かして、os.platform() や process.platform と打ってみたら 'win32' と表示されたので、たぶん合ってると思いますが。合ってるのかな。どうなんだろう。初心者だから自信ないですけど。 *2
しかし、Atomのパッケージは CoffeeScript で書かれてるわけで。その場合、どう書けばいいのやら。JavaScript のアレコレはそのまま使えるの? どうなの? CoffeeScript 独自の何かで置き換えないといけないの?
などと悩みながら少し試してたんですが、たぶん以下のような感じで書いとけばOKっぽいなと分かったのでメモ。
公式のほうでもそうしておいて貰えないものか…。でも自分は英語が分からんから、どうにも…。何か他の部分で不具合出るかもしれんし。
他で不具合云々を考えると、オプション設定で変えられるようになってたほうがいいのかな。
シバン行ってのは、下のような行ですが。
#!/usr/bin/env python*1
一応、C:\Users\アカウント名\.atom\packages\script\lib\script-view.coffee を開いて、getShebangメソッド?の中に return を書いとけばエラーは回避できるのですが。本来なら、
- 「今、何のOSの上で動かしてるの?」
- 「もし Windows上で動かしてるなら何もせずに return せよ」
- 「Windows以外で動いてるなら今まで通りの処理をせよ」
調べてみたら、JavaScript、というか Node.js の場合、os.platform() や process.platform で、OSの種類を取得できるようで。'win32' が返ってきたら Windows で動かしてると。一応、node[Enter]で REPL なるものを動かして、os.platform() や process.platform と打ってみたら 'win32' と表示されたので、たぶん合ってると思いますが。合ってるのかな。どうなんだろう。初心者だから自信ないですけど。 *2
しかし、Atomのパッケージは CoffeeScript で書かれてるわけで。その場合、どう書けばいいのやら。JavaScript のアレコレはそのまま使えるの? どうなの? CoffeeScript 独自の何かで置き換えないといけないの?
などと悩みながら少し試してたんですが、たぶん以下のような感じで書いとけばOKっぽいなと分かったのでメモ。
getShebang: (editor) -> return if process.platform is 'win32' text = editor.getText() lines = text.split("\n") firstLine = lines[0] return unless firstLine.match(/^#!/) firstLine.replace(/^#!\s*/, '')process.platform が /^win32/ とマッチしたら何もせずに return せよ、みたいな。
公式のほうでもそうしておいて貰えないものか…。でも自分は英語が分からんから、どうにも…。何か他の部分で不具合出るかもしれんし。
他で不具合云々を考えると、オプション設定で変えられるようになってたほうがいいのかな。
[ ツッコむ ]
以上です。