「Mery本体のバージョンチェック」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Sukemaru (トーク | 投稿記録)
ページを新規作成
 
MSY-07 (トーク | 投稿記録)
空行の除去
 
(2人の利用者による、間の3版が非表示)
1行目: 1行目:
 
Mery のバージョンがマクロの要件以上かチェックします。<br>
Mery のバージョンがマクロの要件以上かチェックする
Mery の更新状態を確認([[最新版を確認]])するマクロではありません。<br>
用途として、「ベータ版」で新設されたメソッドやプロパティを使用するさいに「正式版」や古いベータ版などでのエラー回避を想定したものです。


== VersionCheck() 関数 ==
== VersionCheck() 関数 ==
;組み込み関数 VersionCheck()
;組み込み関数 VersionCheck()
マクロを動作させるうえでの必要条件として Mery 本体のバージョンチェックをおこないます。<br>
マクロを動作させるうえでの必要条件として Mery 本体のバージョンチェックをおこないます。<br>
10行目: 10行目:
組み込み関数本体 を任意のマクロのソースコード内にペーストして使用します。<br>
組み込み関数本体 を任意のマクロのソースコード内にペーストして使用します。<br>
使い方は [[#使い方|使用例]] を参考にしてください。
使い方は [[#使い方|使用例]] を参考にしてください。


== ソースコード ==
== ソースコード ==
 
// #title = "Mery のバージョンチェック"
<source lang="javascript">
/**
// #title = "Mery のバージョンチェック"
  * 組み込み関数 VersionCheck( versionStr )
/**
  * Mery 本体が引数で指定したバージョン以上かチェックする( e.g. "2.7.0" )
* 組み込み関数 VersionCheck( versionStr )
  * 戻り値は、真偽値 true/false
* Mery 本体が引数で指定したバージョン以上かチェックする( e.g. "2.7.0" )
  */
* 戻り値は、真偽値 true/false
<syntaxhighlight lang="javascript">
*/
function VersionCheck( versionStr ) {
function VersionCheck( versionStr ) {
  // 文字列中の半角1ケタの数字を0埋めする
   var Pad2 = function( string ) {
   var Pad2 = function( string ) {
     return string.replace( /[0-9]+/g , function( $0 ) {
     return string.replace( /[0-9]+/g , function( $0 ) {
28行目: 25行目:
     } );
     } );
   }
   }
  // バージョンNo. "X.Y.ZZ" を数値 X0YZZ にする(e.g. "2.7.0" => 20700)
   var editorVer = Number( Pad2( editor.Version ).replace( /\./g, "" ).slice( 0, 6 ) );
   var editorVer = Number( Pad2( editor.Version ).replace( /\./g, "" ).slice( 0, 6 ) );
   var requirement = Number( Pad2( versionStr ).replace( /\./g, "" ).slice( 0, 6 ) );
   var requirement = Number( Pad2( versionStr ).replace( /\./g, "" ).slice( 0, 6 ) );
   return ( editorVer >= requirement );
   return ( editorVer >= requirement );
}
}
</source>
</syntaxhighlight>
 


== 使い方 ==
== 使い方 ==
  /**
  /**
   * 【使い方】
   * 【使い方】
47行目: 41行目:
   */
   */


// '''例1'''  Begin/EndUndoGroup() メソッドを使えるのは Ver 2.7.0 以降


'''例1'''  Begin/EndUndoGroup() メソッドを使えるのは ver 2.7.0 以降
<syntaxhighlight lang="javascript">
// 文書の先頭/末尾に <html> </html> 、改行部分に <br/> を挿入する


<source lang="javascript">
// 文書の先頭/末尾に <html> </html> 、改行部分に <br/> を挿入する
if ( VersionCheck( "2.7.0" ) ) {
if ( VersionCheck( "2.7.0" ) ) {
   // ブックマーク設定を維持して置換
   // ブックマーク設定を維持して置換
70行目: 64行目:
   }
   }
}
}
</syntaxhighlight>


// Begin/EndUndoGroup() のみを囲うだけでもよいが、古いバージョンでマクロを実行するとアンドゥするとき面倒なことに…
if ( VersionCheck( "2.7.0" ) ) {
  BeginUndoGroup();
}


// Begin/EndUndoGroup() のみを囲うだけでもよいが、アンドゥするとき面倒なことに…
// '''例2'''  ChangeCase() メソッドで定数 meCaseCapitalize を使えるのは Ver 2.6.10 以降
if ( VersionCheck( "2.7.0" ) ) {
  BeginUndoGroup();
}
 
</source>
 
 
'''例2'''  ChangeCase() メソッドで定数 meCaseCapitalize を使えるのは ver 2.6.10 以降


<source lang="javascript">
<syntaxhighlight lang="javascript">
if ( document.Selection.IsEmpty ) {
if ( document.Selection.IsEmpty ) {
   document.selection.SelectLine();
   document.selection.SelectLine();
96行目: 88行目:
   Status = "小文字でごめん。";
   Status = "小文字でごめん。";
}
}
</source>
</syntaxhighlight>

2024年9月9日 (月) 04:42時点における最新版

Mery のバージョンがマクロの要件以上かチェックします。
Mery の更新状態を確認(最新版を確認)するマクロではありません。
用途として、「ベータ版」で新設されたメソッドやプロパティを使用するさいに「正式版」や古いベータ版などでのエラー回避を想定したものです。

VersionCheck() 関数[編集]

組み込み関数 VersionCheck()

マクロを動作させるうえでの必要条件として Mery 本体のバージョンチェックをおこないます。
要件以上のバージョンであれば true、要件を満たさなければ false を返します。

組み込み関数本体 を任意のマクロのソースコード内にペーストして使用します。
使い方は 使用例 を参考にしてください。

ソースコード[編集]

// #title = "Mery のバージョンチェック"
/**
 * 組み込み関数 VersionCheck( versionStr )
 * Mery 本体が引数で指定したバージョン以上かチェックする( e.g. "2.7.0" )
 * 戻り値は、真偽値 true/false
 */
function VersionCheck( versionStr ) {
  var Pad2 = function( string ) {
    return string.replace( /[0-9]+/g , function( $0 ) {
      return $0.length < 2 ? "0" + $0 : $0;
    } );
  }
  var editorVer = Number( Pad2( editor.Version ).replace( /\./g, "" ).slice( 0, 6 ) );
  var requirement = Number( Pad2( versionStr ).replace( /\./g, "" ).slice( 0, 6 ) );
  return ( editorVer >= requirement );
}

使い方[編集]

/**
 * 【使い方】
 *
 * 要件以上のバージョンであればメインのコードを実行し
 * 要件未満のバージョンであれば別のコードを実行する
 *
 * ※引数に指定するバージョンNo.は "ダブルクオート" で囲うこと
 */

// 例1 Begin/EndUndoGroup() メソッドを使えるのは Ver 2.7.0 以降

// 文書の先頭/末尾に <html> </html> 、改行部分に <br/> を挿入する

if ( VersionCheck( "2.7.0" ) ) {
  // ブックマーク設定を維持して置換
  BeginUndoGroup();
  document.selection.Replace( "\n", "<br/>\n", meFindReplaceRegExp + meReplaceAll );
  document.selection.StartOfDocument();
  document.selection.Text = "<html>\n";
  document.selection.EndOfDocument();
  document.selection.Text = "\n</html>";
  EndUndoGroup();
}
else {
  var confirmStr = "Mery 2.7.0 以上でないとブックマーク設定がふっ飛びます。"
                 + "\n\n実行しますか?";
  if ( Confirm( confirmStr ) ) {
    // ブックマーク設定を無視して一括置換
    document.Text = "<html>\n" + document.Text.replace( /$/gm, "<br/>" ) + "\n</html>";
  }
}
// Begin/EndUndoGroup() のみを囲うだけでもよいが、古いバージョンでマクロを実行するとアンドゥするとき面倒なことに…

if ( VersionCheck( "2.7.0" ) ) {
  BeginUndoGroup();
}

// 例2 ChangeCase() メソッドで定数 meCaseCapitalize を使えるのは Ver 2.6.10 以降

if ( document.Selection.IsEmpty ) {
  document.selection.SelectLine();
}

if ( VersionCheck( "2.6.10" ) ) {
  // 単語の最初の文字を大文字に変換
  document.selection.ChangeCase( meCaseCapitalize );
}
else {
  // 小文字に変換
  document.selection.ChangeCase( meCaseLowerCase );
  Status = "小文字でごめん。";
}
スポンサーリンク