Mery本体のバージョンチェック

提供:MeryWiki
ナビゲーションに移動 検索に移動

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 = "小文字でごめん。";
}
スポンサーリンク