「マクロ・関数をメニューで呼び出す」の版間の差分

MSY-07 (トーク | 投稿記録)
<source>タグを<syntaxhighlight>タグに置き換える
MSY-07 (トーク | 投稿記録)
SyntaxHighlightにcopyの追加
 
(同じ利用者による、間の10版が非表示)
1行目: 1行目:
お盆休みにマクロ作成に挑戦してみました.
お盆休みにマクロ作成に挑戦してみました。関数やマクロをメニュー形式で呼び出すためのマクロです。
関数やマクロをメニュー形式で呼び出すためのマクロです.


マクロの本体(コード)のファイル '''menu.js''' と,メニューそのものをオブジェクトリテラルで定義するファイル '''menu.json''' から成ります.
マクロの本体(コード)のファイル menu.js と、メニューそのものをオブジェクトリテラルで定義するファイル menu.json から成ります。menu.json は、menu.js と同じフォルダに置いてください。
'''menu.json''' は,'''menu.js''' と同じフォルダに置いてください.


== menu.js ==
== ソースコード ==
マクロの本体です.'''eval''' を多用していてちょっとキタナいです(笑).
=== menu.js ===
マクロの本体です。eval を多用していてちょっとキタナいです(笑)。


メニューの定義は,別途 '''menu.json''' に記述します.
メニューの定義は、別途 menu.json に記述します。menu.js と同じフォルダに置いてください。
'''menu.js''' と同じフォルダに置いてください.
 
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript" copy>
#title = "Menu"
#title = "Menu"


46行目: 45行目:
</syntaxhighlight>
</syntaxhighlight>


== menu.json ==
=== menu.json ===
メニューを定義するファイルです.値が Object になる式で記述します.
メニューを定義するファイルです。値が Object になる式で記述します。
Object のプロパティ(名)がメニューに表示される項目,
 
その値がメニュー選択時の実行内容になります.
Object のプロパティ(名)がメニューに表示される項目、その値がメニュー選択時の実行内容になります。
 
実行される内容は、値の型によって異なりますが、詳細は下のサンプルのコメントを参考にしてください。


実行される内容は,値の型によって異なりますが,詳細は下のサンプルのコメントを参考にしてください.
関数定義や変数への代入を、コンマ演算子を使って、前に並べておくこともできます(ちょっとキタナい(笑))。


関数定義や変数への代入を,コンマ演算子を使って,前に並べておくこともできます.
<syntaxhighlight lang="javascript" copy>
(ちょっとキタナい(笑))
// 関数を定義する場合は、事前に関数定義をコンマで区切って並べておきます。
<syntaxhighlight lang="javascript">
// (全体を式として評価するため、実際は式をコンマ演算子で並べていることに
// 関数を定義する場合は,事前に関数定義をコンマで区切って並べておきます.
// (全体を式として評価するため,実際は式をコンマ演算子で並べていることに
//  なります)
//  なります)
function message2() { alert("Good Luck!"); },
function message2() { alert("Good Luck!"); },
flag = false,
flag = false,
// メニュー項目を Object で表記します.
// メニュー項目を Object で表記します。
{
{
"Hello": function () { alert("Hello!"); }, // 値が関数オブジェクトなら,それを実行します.
"Hello": function () { alert("Hello!"); }, // 値が関数オブジェクトなら、それを実行します。
"---": null, // --- で始まるプロパティはセパレータになります.
"---": null, // --- で始まるプロパティはセパレータになります。
"重複行の削除": "連続する重複行を削除.js",  // 値が文字列なら,マクロを呼び出します.
"重複行の削除": "連続する重複行を削除.js",  // 値が文字列なら、マクロを呼び出します。
"Good Luck": flag && message2, // 値が false なら,無効に(灰色に)なります.
"Good Luck": flag && message2, // 値が false なら、無効に(灰色に)なります。
"----": null, // 複数のセパレータを用いる場合はプロパティを変えてください.
"----": null, // 複数のセパレータを用いる場合はプロパティを変えてください。
"Sub": { // 値が Object なら,サブメニューになります.
"Sub": { // 値が Object なら、サブメニューになります。
"Good Luck": flag || message2,
"Good Luck": flag || message2,
"Good Bye": meMenuGrayed // これでも無効に(灰色に)なります.
"Good Bye": meMenuGrayed // これでも無効に(灰色に)なります。
}
}
}
}
</syntaxhighlight>
</syntaxhighlight>
--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月19日 (月) 20:39 (JST)


== コメント ==
== コメント ==
* 実行中マクロのフルパスは ScriptFullName で参照できます.(ks)
* 実行中マクロのフルパスは ScriptFullName で参照できます。(ks)
* ありがとうございます.ScriptFullName を使って書き直してみました.(aliquis)
* ありがとうございます。ScriptFullName を使って書き直してみました。(aliquis)


== 更新履歴 ==
== 変更履歴 ==
* libdir を,マクロのパスから取得するように変更しました.--[[特別:投稿記録/202.215.166.72|202.215.166.72]] 2013年8月20日 (火) 21:02 (JST)
* 1.0.0 (2013-08-20)
** libdir をマクロのパスから取得するように変更しました
スポンサーリンク