Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。
たまにはコピペ用のエントリも書きたくなってきたので、以前、参照コードを<pre>で書くかって記事ら辺で作った整形フォームをバージョンアップしました。
ラジオボタンで<pre><code>タイプと<ol><li><code>タイプを切り替えてます。ホントは<ol>タイプ用に行頭の空白を数えるとこまでやっときたかったんだけど、力及ばず。JavaScriptの正規表現はまだよく掴めない^^;
以下、記録用にソースコードと関連リンクを貼っときます。今回は配布用じゃないので、あんま綺麗じゃないけど!
JavaScript
var escape_html= {
init: function(){
var ex1 = document.getElementById('ex1');
var ex2 = document.getElementById('ex2');
var ori = document.getElementById('text1');
var gen = document.getElementById('text2');
if(ex1.checked == true) this.genOrderList(ori,gen);
if(ex2.checked == true) this.genPreformat(ori,gen);
},
genOrderList: function(ori,gen){
var str = ori.value;
var str2 = "";
// 一行ずつ分解
var line = new Array;
line = str.split('\n');
for(var i=0;i<line.length;i++){
line[i] = this.escapeTag(line[i],true);
// 偶数行なら...奇数行なら...
if((i+1)%2 == 0) {
line[i] = line[i].replace(/^/,'<li class="even tab1"><code>');
line[i] = line[i].replace(/$/,'</code></li>');
} else {
line[i] = line[i].replace(/^/,'<li class="odd tab1"><code>');
line[i] = line[i].replace(/$/,'</code></li>');
};
// 行末に改行コードを入れて連結
str2 = str2 + '\n' + line[i];
}
// HTMLタグを挿入
str2 = str2.replace(/^/g,'<ol class="codelist">');
str2 = str2.replace(/$/i,'\n</ol>');
str2 = str2.replace(/<code><\/code>/ig,'<code> </code>');
this.genSample(gen,str2);
},
genPreformat: function(ori,gen){
var str = ori.value;
var str2 = "";
// 一行ずつ分解
var line = new Array;
line = str.split('\n');
for(var i=0;i<line.length;i++){
line[i] = this.escapeTag(line[i]);
// 行末に改行コードを入れて連結
str2 = str2 + '\n' + line[i];
}
// HTMLタグを挿入
str2 = str2.replace(/^/g,'<pre class="codelist"><code>');
str2 = str2.replace(/$/i,'\n</code></pre>');
this.genSample(gen,str2);
},
escapeTag: function(str,head){
// 行頭/行末の空白を削除
if(head) str = str.replace(/^\s+/g,'');
str = str.replace(/\s+$/g,'');
str = str.replace(/\&/g,'&');
str = str.replace(/\</g,'<');
str = str.replace(/\>/g,'>');
str = str.replace(/\"/g,'"');
str = str.replace(/\'/g,''');
return str;
},
genSample: function(gen,str2) {
// textareaに出力
gen.value = str2;
// Sample生成
var prev = document.getElementById('sample');
var body = document.getElementById('exampleOutput');
var sample = document.createElement('div');
sample.setAttribute('id', 'sample');
sample.innerHTML = '<h3>Sample</h3>\n' + str2;
if(prev) {
body.replaceChild(sample,prev);
} else {
body.appendChild(sample);
}
}
}
Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。