「アラビア語ヒンディー数字」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Inuuik (トーク | 投稿記録)
編集の要約なし
Inuuik (トーク | 投稿記録)
ページの白紙化
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
Mery エディタ マクロ:  アラビア語ヒンディー数字
<pre>
  選択範囲のアラビア語のヒンディー数字とアラビア数字、
  ۰۱۲۳۴۵۶۷۸۹  と  0123456789  を相互に置換


  ヒンディー数字(インド数字)と、アラビア数字は、アラビア語の文中で、
  どちらを使うこともできる。
  同じ文章で両方の表記が混在していることもある。
  どちらの数字も、RTL(右から左)の文中で、左から右に読み書きする。
  ※ ヒンディー数字は Unicode 文字なので、シフトJIS など
  これ以外のエンコーディングでは扱えない。
  ○ 検索した複数の文字の、対応する複数の文字への相互置換(交換)
    置換の途中で、括弧で捕獲した部分文字列( p1 )を、関数で受け取り、関
    数内で必要な処理をしてから、その処理結果を括弧の値として、置換する。
    この「コールバック関数置換(ラムダ式)」は、Mery の正規表現置換では、
    できない。そこで、マクロでは JavaScript の正規表現を replace で使う。
</pre>
※ マクロitokusu_ArabicNum: [[ファイル:itokusu_ArabicNum.zip]]
<pre>
アラビア語ヒンディー数字(Alt+N).js
下の内容を、上の名前のファイル (UTF-8 BOM付き) にして、
My Macros\itokusu に置く。
もしフォルダがなければ、itokusu フォルダを作成してからコピー。
そこから Mery で開いて、マクロ - これを選択、
ツール - オプション - キーボード の マクロ で Alt+N に割り当て。
または…、
マクロitokusu の使い方:
  フォルダ付きで展開したら、itokusu フォルダを My Macros にコピー。
  (すでにフォルダがあれば、そのフォルダ内にファイルを追加コピー)
  マクロ - カスタマイズ - 新規作成 で、 My Macros\itokusu フォルダ
  を選択、Ctrlキーを押しながらファイル名をクリックで、登録しようと
  している複数のマクロをすべて選択してから - 開く。
    アラビア語ヒンディー数字(Alt+N).js
  は、
  ツール - オプション - キーボード の マクロ で Alt+N に割り当て。
</pre>
<source lang="javascript">
// - 糸くす~------------------------------------- Copyright(C)2011-2012 inuuik -
// アラビア語ヒンディー数字(Alt+N)
//
//  選択範囲のアラビア語のヒンディー数字とアラビア数字、
//  ۰۱۲۳۴۵۶۷۸۹  と  0123456789  を相互に置換
//
//  ヒンディー数字(インド数字)と、アラビア数字は、
//  アラビア語の文中で、どちらを使うこともできる。
//  同じ文章で両方の表記が混在していることもある。
//
//  どちらの数字も、RTL(右から左)の文中で、左から右に
//  読み書きする。
//
//  文中の数字ではないところも、Mery は RTL 言語表記には
//  対応していないため、すべて左から右に表示する。
//
//  ※ ヒンディー数字は Unicode 文字なので、シフトJIS など
//  これ以外のエンコーディングでは扱えない。
//
// revised  inuuik  2011-09-25
// revised  inuuik  2012-09-20
// - ------------------------ --------------------------------------------------
{
  var s = document.selection;
  var x = s.GetActivePointX(mePosView);
  var y = s.GetActivePointY(mePosView);
  var tx = s.GetTopPointX(mePosView);
  var ty = s.GetTopPointY(mePosView);
  var bx = s.GetBottomPointX(mePosView);
  var by = s.GetBottomPointY(mePosView);
  Redraw = false;
  if (!s.IsEmpty) {
    var t = s.Text;
    s.Text = t.replace(/([0-9۰۱۲۳۴۵۶۷۸۹]+)/g,
      function(str, p1, offset, s) {
        var da = new Array();
        da = {"0":"۰","1":"۱","2":"۲","3":"۳","4":"۴","5":"۵","6":"۶","7":"۷","8":"۸","9":"۹","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9"};
        var r = "";
        var d = p1.toString();
        for (var i = 0; i < d.length; i++) {
          r += da[d.charAt(i)];
        }
        return r;
      }
    );
  }
  if (x === tx && y === ty) {
    s.SetAnchorPoint(mePosView, bx, by);
    s.SetActivePoint(mePosView, tx, ty, true);
  }
  else {
    s.SetAnchorPoint(mePosView, tx, ty);
    s.SetActivePoint(mePosView, bx, by, true);
  }
  Redraw = true;
}
// - ------------------------ --------------------------------------------------
</source>

2013年1月15日 (火) 00:10時点における最新版

スポンサーリンク