利用者:Naggy Nagumo/Edit Formatter.js
ナビゲーションに移動
検索に移動
注意: 保存後、変更を確認するにはブラウザーのキャッシュを消去する必要がある場合があります。
- Firefox / Safari: Shift を押しながら 再読み込み をクリックするか、Ctrl-F5 または Ctrl-R を押してください (Mac では ⌘-R)
- Google Chrome: Ctrl-Shift-R を押してください (Mac では ⌘-Shift-R)
- Internet Explorer / Microsoft Edge: Ctrl を押しながら 最新の情報に更新 をクリックするか、Ctrl-F5 を押してください
- Opera: Ctrl-F5を押してください
// <nowiki>
EDIT.フォーマット = {
実行: function (f) {
const 元のテキスト = $('#' + EDIT.テキストボックスID).val();
const 整形後テキスト = f(元のテキスト);
$('#' + EDIT.テキストボックスID).val(整形後テキスト);
},
フォーマット: function (ウィキテキスト) {
let 整形後テキスト = ウィキテキスト;
整形後テキスト = 整形後テキスト.split('{{infl|').join('{{head|');
整形後テキスト = 整形後テキスト.split('{{see|').join('{{also|');
整形後テキスト = 整形後テキスト.replace(new RegExp(`\\*\\s*【\\[\\[`, 'g'), `#【[[`)
整形後テキスト = EDIT.フォーマット.日本語デフォルトソートを変更(整形後テキスト);
整形後テキスト = EDIT.フォーマット.inf_jaを変更(整形後テキスト);
整形後テキスト = EDIT.フォーマット.見出しを整形(整形後テキスト);
整形後テキスト = EDIT.フォーマット.不要テンプレート除去(整形後テキスト);
整形後テキスト = EDIT.フォーマット.言語間リンク除去(整形後テキスト);
整形後テキスト = EDIT.フォーマット.言語コードを3文字から2文字に変更(整形後テキスト);
整形後テキスト = EDIT.フォーマット.言語見出しを変更(整形後テキスト);
整形後テキスト = EDIT.フォーマット.空行を整理(整形後テキスト);
return 整形後テキスト;
},
見出しを整形: function (ウィキテキスト) {
return ウィキテキスト
.replace(/^\n?(={1,6})\s*([^=\n]+?)\s*(={1,6})[^=\n]*\n/, '$1$2$3\n')
.replace(/\n(={1,6})\s*([^=\n]+?)\s*(={1,6})[^=\n]*\n/g, '\n$1$2$3\n');
},
不要テンプレート除去: function (ウィキテキスト) {
return ウィキテキスト
.split('{{lcsort}}\n').join('')
.split('{{mid}}\n').join('')
.split('{{mid2}}\n').join('')
.split('{{mid3}}\n').join('')
.split('{{mid4}}\n').join('')
.split('{{mid5}}\n').join('')
.split('{{mid10}}\n').join('')
.split('{{rel-mid}}\n').join('')
.split('{{rel-mid3}}\n').join('')
.split('{{rel-mid4}}\n').join('')
.split('{{rel-mid5}}\n').join('')
.split('{{trans-mid}}\n').join('');
},
言語間リンク除去: function (ウィキテキスト) {
return ウィキテキスト.replace(/\n\[\[(aa|ab|af|ak|am|an|ang|ar|as|ast|av|ay|az|bcl|be|bg|bh|bi|bm|bn|bo|br|bs|ca|ch|chr|co|cr|cs|csb|cy|da|de|diq|dv|dz|el|en|eo|es|et|eu|fa|fi|fj|fo|fr|fy|ga|gd|gl|gn|gom|gu|gv|ha|he|hi|hif|hr|hsb|hu|hy|ia|id|ie|ik|io|is|it|iu|ja|jbo|jv|ka|kk|kl|km|kn|ko|ks|ku|kw|ky|la|lb|li|ln|lo|lt|lv|mg|mh|mi|min|mk|ml|mn|mni|mnw|mr|ms|mt|my|na|nah|nds|ne|nia|nl|nn|no|oc|om|or|pa|pi|pl|pnb|ps|pt|qu|rm|rn|ro|roa-rup|ru|rw|sa|sc|scn|sd|sg|sh|shn|shy|si|simple|sk|skr|sl|sm|sn|so|sq|sr|ss|st|su|sv|sw|ta|te|tg|th|ti|tk|tl|tn|to|tpi|tr|ts|tt|tw|ug|uk|ur|uz|vec|vi|vo|wa|wo|xh|yi|yo|yue|za|zh|zh-min-nan|zu):[^\]]*\]\]/g, '');
},
言語コードを3文字から2文字に変更: function (ウィキテキスト) {
const 言語コード置換テーブル = UTIL.code3_to_code2_t;
Object.keys(言語コード置換テーブル).forEach(function (key) {
ウィキテキスト = ウィキテキスト
.split(`{{${key}}}`).join(`{{${言語コード置換テーブル[key]}}}`)
.split(`{{anagrams|${key}`).join(`{{anagrams|${言語コード置換テーブル[key]}`)
.split(`{{bor|${key}|`).join(`{{bor|${言語コード置換テーブル[key]}|`)
.replace(new RegExp(`\\{\\{bor\\|([^\\}\\|]*)\\|${key}\\|`, 'g'), `{{bor|$1|${言語コード置換テーブル[key]}|`)
.split(`{{context|lang=${key}`).join(`{{context|lang=${言語コード置換テーブル[key]}`)
.replace(new RegExp(`(\\{\\{context\\|[^\\}]*)\\|lang=${key}`, 'g'), `$1|lang=${言語コード置換テーブル[key]}`)
.split(`{{der|${key}|`).join(`{{der|${言語コード置換テーブル[key]}|`)
.replace(new RegExp(`\\{\\{der\\|([^\\}\\|]*)\\|${key}\\|`, 'g'), `{{der|$1|${言語コード置換テーブル[key]}|`)
.split(`{{derived|${key}|`).join(`{{derived|${言語コード置換テーブル[key]}|`)
.replace(new RegExp(`\\{\\{derived\\|([^\\}\\|]*)\\|${key}\\|`, 'g'), `{{derived|$1|${言語コード置換テーブル[key]}|`)
.split(`{{desc|${key}|`).join(`{{desc|${言語コード置換テーブル[key]}|`)
.split(`{{etyl|${key}|`).join(`{{etyl|${言語コード置換テーブル[key]}|`)
.replace(new RegExp(`\\{\\{etyl\\|([^\\}\\|]*)\\|${key}\\}\\}`, 'g'), `{{etyl|$1|${言語コード置換テーブル[key]}}}`)
.split(`{{etyl|${key}}}`).join(`{{etyl|${言語コード置換テーブル[key]}}}`)
.split(`{{head|${key}|`).join(`{{head|${言語コード置換テーブル[key]}|`)
.split(`{{inh|${key}|`).join(`{{inh|${言語コード置換テーブル[key]}|`)
.replace(new RegExp(`\\{\\{inh\\|([^\\}\\|]*)\\|${key}\\|`, 'g'), `{{inh|$1|${言語コード置換テーブル[key]}|`)
.replace(new RegExp(`(\\{\\{IPA[12]?\\|[^\\}]*)\\|lang=${key}`, 'g'), `$1|lang=${言語コード置換テーブル[key]}`)
.split(`{{L|${key}}}`).join(`{{L|${言語コード置換テーブル[key]}}}`)
.split(`{{l|${key}|`).join(`{{l|${言語コード置換テーブル[key]}|`)
.split(`{{lang|${key}|`).join(`{{lang|${言語コード置換テーブル[key]}|`)
.split(`{{language|${key}}}`).join(`{{language|${言語コード置換テーブル[key]}}}`)
.split(`{{lb|${key}|`).join(`{{lb|${言語コード置換テーブル[key]}|`)
.split(`{{m|${key}|`).join(`{{m|${言語コード置換テーブル[key]}|`)
.split(`{{pron|${key}}}`).join(`{{pron|${言語コード置換テーブル[key]}}}`)
.split(`{{T|${key}}}`).join(`{{T|${言語コード置換テーブル[key]}}}`)
.split(`{{タグ|${key}`).join(`{{タグ|${言語コード置換テーブル[key]}`);
});
return ウィキテキスト;
},
日本語デフォルトソートを変更: function (ウィキテキスト) {
if(mw.config.get('wgTitle').match(/^[ぁ-ゖァ-ヺー]+$/)){
return ウィキテキスト
.replace(/\{\{(デフォルトソート|DEFAULTSORT):[^\}]+\}+/, '{{ja-DEFAULTSORT}}');
}
else{
return ウィキテキスト
.replace(/\{\{(デフォルトソート|DEFAULTSORT):([ぁ-ん]+)\}\}/, '{{ja-DEFAULTSORT|$2}}')
.replace(/\{\{(デフォルトソート|DEFAULTSORT):([ぁ-ん]+)[ _]\{\{PAGENAME\}\}\}\}/, '{{ja-DEFAULTSORT|$2}}')
.replace(/\{\{(デフォルトソート|DEFAULTSORT):([ぁ-ん]+)[ _]([ぁ-ん]+)\}\}/, '{{ja-DEFAULTSORT|$3}}')
.replace(/\{\{(デフォルトソート|DEFAULTSORT):([ぁ-ん]+)[ _]([ぁ-ん]+)[ _][^\n]*\}\}/, '{{ja-DEFAULTSORT|$3}}');
}
},
inf_jaを変更: function (ウィキテキスト) {
return ウィキテキスト
.replace(/\{\{inf-ja\|古語[_ ]\|[^\|]*\|([^\|]*)\|([^\|]*\|[^\|\}]*)[^\}]*\}\}/g, '===={{conjug}}====\n{{古典日本語$1段活用|$2}}')
.replace(/古典日本語変段活用/g, '古典日本語変格活用')
.replace(/\{\{inf-ja\|\|([^\|])*\|([^\|]*)\|([^\|]*\|[^\|\}]*)[^\}]*\}\}/g, '===={{conjug}}====\n{{日本語$1$2活用}}')
.replace(/日本語[アカガサザタダナハバパマヤラワ]+(五|上一|下一)活用/g, '日本語$1段活用');
},
言語見出しを変更: function (ウィキテキスト) {
return ウィキテキスト
.replace(/^\n?==\{\{(\w+)\}\}==\n/, '=={{L|$1}}==\n')
.replace(/\n==\{\{(\w+)\}\}==\n/g, '\n=={{L|$1}}==\n');
},
空行を削除: function (ウィキテキスト) {
return ウィキテキスト.replace(/\n{2,}/g, '\n');
},
空行を整理: function (ウィキテキスト) {
let コメント = [];
ウィキテキスト = EDIT.コメントを退避(ウィキテキスト, コメント);
// H1~H6の前に改行挿入
let 改行を入れる位置 = [];
const 正規表現 = /\n(={1,6}[^=\n]+={1,6}[^=\n]*|----)/g;
let 正規表現実行結果;
while ((正規表現実行結果 = 正規表現.exec(ウィキテキスト)) !== null) {
改行を入れる位置.push(正規表現実行結果.index);
}
改行を入れる位置.sort(function (a, b) {
return b - a;
}).forEach(index => {
ウィキテキスト = ウィキテキスト.slice(0, index) + '\n' + ウィキテキスト.slice(index);
});
// 最初のセクションヘッダーの前は空行を入れない
ウィキテキスト = ウィキテキスト.replace(/\n*?(\n?={1,6}[^=\n]+={1,6}[^=\n]*\n)/, '$1');
// 連続空行を除去
ウィキテキスト = ウィキテキスト.replace(/\n{3,}/g, '\n\n').replace(/\n{2,}$/, '\n');
ウィキテキスト = EDIT.コメントを戻す(ウィキテキスト, コメント);
return ウィキテキスト;
},
コメントを削除: function (ウィキテキスト) {
return EDIT.コメントを除去(ウィキテキスト);
},
フォーマットボタン: $('<button>フォーマット</button>').click(function () {
EDIT.フォーマット.実行(EDIT.フォーマット.フォーマット);
}),
空行を削除ボタン: $('<button style="float: right;">空行を削除</button>').click(function () {
EDIT.フォーマット.実行(EDIT.フォーマット.空行を削除);
}),
コメントを削除ボタン: $('<button style="float: right;">コメントを削除</button>').click(function () {
EDIT.フォーマット.実行(EDIT.フォーマット.コメントを削除);
}),
};
$('#editform').before(EDIT.フォーマット.フォーマットボタン);
$('#editform').before(EDIT.フォーマット.空行を削除ボタン);
$('#editform').before(EDIT.フォーマット.コメントを削除ボタン);
// </nowiki>