JavaScriptの整形はjsbeautifier.orgの整形が良さそうだったので、jsbeautifierのコードを利用してマクロを作成しました。
■目的
JavaScriptのコードをEmEditor上で整形する。
整形には、jsbeautifierの整形コード(beautify.js)を使用する。
■環境
OS | Windows XP |
---|---|
EmEditor | EmEditor Professional (32-bit) Version 11.0.5 |
■JavaScritp整形コード(beautify.js)のダウンロード
jsbeautifier.orgが使用しているJavaScriptを整形するJavaScriptのコード「beautify.js」をhttps://github.com/einars/js-beautifyからダウンロードします(*1)。
*1:この説明では、2012-10-04時点での「beautify.js」を使用しています。
■EmEditor用JavaScritp整形マクロファイルの作成
EmEditor用のマクロファイル(beautity-js.jsee)を作成します。
【マクロファイル(beautity-js.jsee)のコード】
#include "include/beautify.js"; /* beautify for EmEditor JavaScript Created by Shinichi Yamaura. */ document.selection.SelectAll(); // beautifyのオプション設定 var options = { 'indent_size': 1, 'indent_char': '\t', 'preserve_newlines': false, 'break_chained_methods': false, 'jslint_happy': true, 'brace_style': "collapse", 'space_before_conditional': true, 'unescape_strings': false } code = document.selection.Text; // 整形前に改行コードをLFに変換(beautifyのコードを実行用) code = code.replace(/\r\n/g, '\n'); // beautifyの実行 var code = js_beautify(code, options); // 整形後に改行コードをCR+LFに変換 code = code.replace(/\n/g, '\r\n'); document.selection.DestructiveInsert(code); document.selection.StartOfDocument(false);
■整形マクロの説明
「beautify.js」をインクルードして、マクロから「beautify.js」を利用しています。
【注意】#includeは、スクリプトのメイン コードの上の最初の行に指定する必要があります。
編集しているコードを「beautify.js」の関数「js_beautify()」を使用して整形し、整形前のコードを上書きして整形後のコードを挿入します。
「js_beautify()」では、二番目の引数に整形のオプションを指定します。マクロの中で、beautifyのオプション指定をしているので、好みに合わせて設定してください。
beautifyのオプションは「beautify.js」のコメントに記載されています。補足説明にコメントに記載されているオプションの説明を整理しました。
マクロ内で、改行コードの置換をしています。これは補足説明を参照してください。
■ファイルの配置
「JavaScritp整形コード(beautify.js)」と「マクロファイル(beautify-js.jsee)」をEmEditorマクロフォルダに配置します。
「JavaScritp整形コード」は、EmEditorマクロフォルダ内にサブフォルダ(include)を作成して配置します。
My Macros │ beautify-js.jsee │ └─include beautify.js
■実行方法
EmEditorのマクロで、マクロファイル(beautify-js.jsee)を実行してください。
■補足説明
●改行コード
マクロを作成している時に、改行コードで問題が発生したので、問題とその対応についての説明を記載しておきます。
EmEditorは、改行コードの混在ができるため「js_beautify()」での整形前に、編集しているテキストのコードの改行コードをLFに変換してから整形しています。
「js_beautify()」で出力されるコードは、改行コードをLFで出力されます。Windowsでは、改行コードをCR+LFにしたいので「js_beautify()」の整形後に改行コードをCR-LFに変換しています。
●js_beautify()のオプション
2012-10-04時点
オプション | 既定値 | 説明 |
---|---|---|
indent_size | 4 | indentation size |
indent_char | space | character to indent with |
preserve_newlines | true | whether existing line breaks should be preserved |
max_preserve_newlines | unlimited | maximum number of line breaks to be preserved in one chunk |
jslint_happy | false | if true, then jslint-stricter mode is enforced |
brace_style | "collapse" | "collapse" | "expand" | "end-expand" | "expand-strict" put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line. |
space_before_conditional | true | should the space before conditional statement be added, "if(true)" vs "if (true)" |
unescape_strings | false | should printable characters in strings encoded in \xNN notation be unescaped, "example" vs "\x65\x78\x61\x6d\x70\x6c\x65" |
opt_break_chained_methods | false | 2012-10-04時点でコメントに記載がないがコード内では実装されている。メソッドチェーンに関するオプション。 |
1 件のコメント:
最新のものにアップデートしていただけないでしょうか。うまくいきません。
コメントを投稿