テキスト変換
概要
開いているドキュメントのテキストを変換します.
特徴
- 機能追加が簡単.
使用方法
- 基本コードを拡張子 .js で保存します.
- 必要な拡張コードを追加します.
- 「拡張機能の追加」とある場所に,コードをコピペすれば拡張が可能です.
- 上から順にポップアップに表示されます.
f[f.length] = "--";
でセパレータを挿入できます(- の数は任意).
- マクロを実行すると登録されている機能の一覧が表示されるので,選択して実行します.
- テキストを選択している場合は,対象を「選択テキスト」「全体」から選べます.
- テキストを選択していない場合は「全体」が対象です.
コード
拡張コード
- 大文字に変換
f[f.length] = {
title:"大文字に変換",
replace:function(text){ return text.toUpperCase() }
};
- 小文字に変換
f[f.length] = {
title:"小文字に変換",
replace:function(text){ return text.toLowerCase() }
};
- カンマ前後の空白を削除
f[f.length] = {
title:"カンマ前後の空白を削除",
replace:function(text){ return text.replace(/^[ \t ]+|[ \t ]+$/mg, "").replace(/[ \t ]*,[ \t ]*/mg, ","); }
};
- BASE64エンコード(Unicode)
f[f.length] = {
title:"BASE64エンコード(Unicode)",
replace:function(text){
var map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
var Ch = function(n){ return n<text.length ? text.charCodeAt(n) : 0 };
var len = text.length, pad = len % 3, s = "";
for (var i=0; i<len; i+=3) {
var tmp = (Ch(i)<<16) | (Ch(i+1)<<8) | Ch(i+2);
s += map[(tmp>>>18)&0x3F] + map[(tmp>>>12)&0x3F] + map[(tmp>>>6)&0x3F] + map[tmp&0x3F];
}
if (pad) { s = s.substring(0, s.length-(3-pad)) + "===".substring(pad) }
return s;
}
};
基本コード
#title = "テキスト変換"
// -----------------------------------------------------------------------------
// 手軽にテキスト変換を行うためのマクロ
// -----------------------------------------------------------------------------
var f = [];
// 拡張機能の追加
// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
f[f.length] = {
title:"行頭の空白文字を削除",
replace:function(text){ return text.replace(/^[ \t ]+/mg, "") }
};
f[f.length] = {
title:"行末の空白文字を削除",
replace:function(text){ return text.replace(/[ \t ]+$/mg, "") }
};
f[f.length] = {
title:"行頭・行末の空白文字を削除",
replace:function(text){ return text.replace(/^[ \t ]+|[ \t ]+$/mg, "") }
};
f[f.length] = {
title:"空白行を削除",
replace:function(text){ return text.replace(/^\n/mg, "") }
};
// ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
// 実行
(function(){
var popup = CreatePopupMenu();
var selPopup = null;
var docPopup = popup;
var SELECTION_ID = 0x1000;
var DOCUMENT_ID = 0x2000;
// 選択文字列があるときは選択肢追加
var sel = document.Selection;
if (sel.Text) {
selPopup = CreatePopupMenu();
docPopup = CreatePopupMenu();
popup.AddPopup("選択文字列", selPopup);
popup.AddPopup("全体", docPopup);
}
// 選択肢追加
for (var i=0; i<f.length; i++) {
if (typeof f[i]["title"] == "string" && typeof f[i]["replace"] == "function") {
if (selPopup) {
selPopup.Add(f[i].title, SELECTION_ID+i);
}
docPopup.Add(f[i].title, DOCUMENT_ID+i);
} else if (typeof f[i] == "string" && /^-+$/.test(f[i])) {
// セパレータ処理
if (selPopup) {
selPopup.Add("", 0, meMenuSeparator);
}
docPopup.Add("", 0, meMenuSeparator);
}
}
// ポップアップを表示して選択されたコマンドを実行
var mePosCaret = 0;
var select = popup.Track(mePosMouse);
if (select > 0) {
if (select & SELECTION_ID) {
sel.Text = f[select-SELECTION_ID].replace(sel.Text, sel);
} else {
sel.SelectAll();
Document.Text = f[select-DOCUMENT_ID].replace(Document.Text, sel);
}
}
})();
スポンサーリンク