<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>サーバなしでハイライト済みテキストを生成するページ</title>
<meta charset="utf-8" />
<script type="text/javascript" src="syntaxhighlighter_3.0.83/scripts/shCore.js"></script>
<script type="text/javascript">
var version = "syntaxhighlighter_3.0.83";
var brushes = {
'ActionScript3': ['as3', 'shBrushAS3.js', ],
'Bash/shell': ['bash', 'shBrushBash.js', ],
'ColdFusion': ['cf', 'shBrushColdFusion.js', ],
'C#': ['c-sharp', 'shBrushCSharp.js', ],
'C++': ['cpp', 'shBrushCpp.js', ],
'CSS': ['css', 'shBrushCss.js', ],
'Delphi': ['delphi', 'shBrushDelphi.js', ],
'Diff': ['diff', 'shBrushDiff.js', ],
'Erlang': ['erl', 'shBrushErlang.js', ],
'Groovy': ['groovy', 'shBrushGroovy.js', ],
'JavaScript': ['js', 'shBrushJScript.js', ],
'Java': ['java', 'shBrushJava.js', ],
'JavaFX': ['jfx', 'shBrushJavaFX.js', ],
'Perl': ['perl', 'shBrushPerl.js', ],
'PHP': ['php', 'shBrushPhp.js', ],
'Plain Text': ['plain', 'shBrushPlain.js', ],
'PowerShell': ['ps', 'shBrushPowerShell.js', ],
'Python': ['py', 'shBrushPython.js', ],
'Ruby': ['ruby', 'shBrushRuby.js', ],
'Scala': ['scala', 'shBrushScala.js', ],
'SQL': ['sql', 'shBrushSql.js', ],
'Visual Basic': ['vb', 'shBrushVb.js', ],
'XML': ['xml', 'shBrushXml.js', ],
};
var styles = {
"Default": ['shCoreDefault.css', 'shThemeDefault.css'],
"Django": ['shCoreDjango.css', 'shThemeDjango.css'],
"Eclipse": ['shCoreEclipse.css', 'shThemeEclipse.css'],
"Emacs": ['shCoreEmacs.css', 'shThemeEmacs.css'],
"FadeToGrey": ['shCoreFadeToGrey.css', 'shThemeFadeToGrey.css'],
"MDUltra": ['shCoreMDUltra.css', 'shThemeMDUltra.css'],
"Midnight": ['shCoreMidnight.css', 'shThemeMidnight.css'],
"RDark": ['shCoreRDark.css', 'shThemeRDark.css'],
};
function attachScript( id ){
if (!isChecked('checkbox_blogger_linebreak_remove') && !isChecked('checkbox_copy_paste_helper')) {
return "";
}
var PACKED_LIB = "eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p}('2 P(a){4 b=f.y(a);4 c=b.z;c=c.o(/\\\\n/g,\\'\\');c=c.o(/h(.*?)><\\\\/h/g,\"h$1>&Q;</h\");b.z=c};2 R(a){4 b=f.y(a).S(\\'5\\');p(i=0;i<b.q;i++){b[i].A(\"T\",B)}}2 j(a,b,c){6(a==s)7 s;4 d=c!=C?a.D:[a.E],t={\\'#\\':\\'U\\',\\'.\\':\\'9\\'}[b.F(0,1)]||\\'G\\',u,k;u=t!=\\'G\\'?b.F(1):b.V();6((a[t]||\\'\\').H(u)!=-1)7 a;p(4 i=0;d&&i<d.q&&k==s;i++)k=j(d[i],b,c);7 k};2 v(a,b){7 j(a,b,C)};2 I(a,b){7 a.9.H(b)!=-1};2 J(a,b){6(!I(a,b))a.9+=\\' \\'+b};2 K(a,b){a.9=a.9.o(b,\\'\\')};2 B(e){4 a=e.w,l=v(a,\\'.W\\'),8=v(a,\\'.8\\'),3=f.X(\\'3\\'),Y;6(!8||!l||j(8,\\'3\\'))7;J(l,\\'L\\');4 b=8.D,5=[];p(4 i=0;i<b.q;i++)5.Z(b[i].10||b[i].11);5=5.12(\\'\\\\r\\');3.M(f.13(5));8.M(3);3.14();3.15();m(3,\\'16\\',2(e){3.E.17(3);K(l,\\'L\\')})};2 m(a,b,c,d){2 x(e){e=e||N.18;6(!e.w){e.w=e.19;e.1a=2(){1b.1c=O}}c.1d(d||N,e)};6(a.m){a.m(\\'1e\\'+b,x)}1f{a.A(b,x,O)}};',62,78,'||function|textarea|var|code|if|return|container|className||||||document||div||findElement|found|highlighterDiv|attachEvent||replace|for|length||null|propertyToFind|expectedValue|findParentElement|target|handler|getElementById|innerHTML|addEventListener|quickCodeHandler|true|childNodes|parentNode|substr|nodeName|indexOf|hasClass|addClass|removeClass|source|appendChild|window|false|LBRemover|nbsp|addDblClickListener|getElementsByTagName|dblclick|id|toUpperCase|syntaxhighlighter|createElement|highlighter|push|innerText|textContent|join|createTextNode|focus|select|blur|removeChild|event|srcElement|preventDefault|this|returnValue|call|on|else'.split('|'),0,{}))";
var scriptstr = "\n<script type=\"text/javascript\">\n";
if (isChecked('checkbox_append_library')) {
scriptstr += "/*SyntaxHighlighter Copyright (C) 2004-2010 Alex Gorbatchev.*/\n"
scriptstr += PACKED_LIB + ";";
}
var utility_function_str = "(function(){";
if (isChecked('checkbox_blogger_linebreak_remove')) {
utility_function_str += "LBRemover('" + id + "');";
}
if (isChecked('checkbox_copy_paste_helper')) {
utility_function_str += "addDblClickListener('" + id + "');";
}
utility_function_str += "})()\n";
scriptstr += utility_function_str;
scriptstr += '<' + "/script>";
var ele = document.getElementById('packed_lib_script');
if (ele == null) {
ele = document.createElement("script");
ele.type = "text/javascript";
ele.innerHTML = PACKED_LIB;
ele.id = "packed_lib_script";
document.getElementsByTagName('head')[0].appendChild(ele);
}
ele = document.getElementById('packed_lib_exec_script');
if (ele != null) {
document.body.removeChild(ele);
ele = null;
}
ele = document.createElement("script");
ele.type = "text/javascript";
ele.innerHTML = utility_function_str;
ele.id = "packed_lib_exec_script";
document.getElementsByTagName('body')[0].appendChild(ele);
return scriptstr;
}
function toClipBoard(id) {
var ele = document.getElementById(id);
if (ele != null) {
ele.select();
document.execCommand("copy");
}
}
function loadfile(fname) {
try{
var xmlHttp = new XMLHttpRequest();
xmlHttp.overrideMimeType("text/plain");
xmlHttp.open("GET", fname, false);
xmlHttp.send(null);
return xmlHttp.responseText;
}
catch (e) {
return null;
}
}
function loadStyle() {
var eles = document.getElementsByName("style");
for (i = 0; i < eles.length; i++) {
if (eles[i].checked) {
var fname = version + "/styles/" + styles[eles[i].value][0];
var stylestr = loadfile(fname);
if (stylestr == null) {
document.getElementById('div_nonchrome').style.display = 'none';
document.getElementById('div_chrome').style.display = "block";
document.getElementById('atag_style').href = fname;
}
else {
document.getElementById('style_textarea').value =
"<style type=\"text/css\">"
+ stylestr
+ "\n.syntaxhighlighter {overflow-y: hidden !important;};"
+ "</style>";
}
var head = document.getElementsByTagName('head')[0];
var ele = document.getElementById("id_stylelink");
if (ele != null) {
head.removeChild(ele);
}
var link = document.createElement('link');
link.id = "id_stylelink";
link.rel = 'stylesheet';
link.type = 'text/css';
link.href = fname;
head.appendChild(link);
}
}
}
function getBrush() {
var eles = document.getElementsByName("brush");
for (i = 0; i < eles.length; i++) {
if (eles[i].checked) {
return brushes[eles[i].value][0];
}
}
}
function isChecked(id) {
var ele = document.getElementById(id);
if (ele == null) {
alert(id + " is null");
}
return ele.checked;
}
function makeRadioTable(type) {
var arr = brushes;
if (type == "style") {
arr = styles;
}
var COLMAX = 5;
var cnt = 0;
var str = "<table>";
str += "<tr><th colspan='" + COLMAX + "' align='center'>";
if (type == "style") {
str+="スタイル";
}
else {
str += "言語(ブラシ)";
}
str += "の選択</th></tr>";
for (var key in arr) {
if (cnt % 5 == 0) {
if (cnt != 0) {
str += "</tr>";
}
str += "<tr>";
}
str += "<td><input type='radio' name='" + type + "' value='" + key + "'";
if (key == "C++" || key == "Django") {
str += " checked";
}
str += " /><label>" + key + "</label>";
cnt++;
}
if (cnt % 5 != 0) {
for (var i = 0 ; i < cnt - (cnt % 5) ; i++) {
str += "<td></td>";
}
}
str += "</tr></table>";
return str;
}
function makeRadioButtons() {
var radiobuttonarea = document.getElementById('radiobuttonarea');
radiobuttonarea.innerHTML += makeRadioTable('style') + makeRadioTable('brush');
}
function getSyntaxHighlighterId( ele ) {
var divs = ele.getElementsByTagName('div');
for (var i = 0; i < divs.length; i++) {
if (divs[i].id.match(/^highlighter_/)) {
return divs[i].id;
}
}
return null;
}
function conv() {
load_brushes();
document.getElementById('resultdispareadiv').style.display = "block";
loadStyle();
var divdiv = document.getElementById('divdiv');
var pre = document.getElementById('preprepre');
var otheropts = document.getElementById('text_otheroption').value;
if (pre != null && pre.tagName.match(/DIV/i)) {
divdiv.removeChild(pre);
pre = null;
}
if (pre == null) {
pre = document.createElement('pre');
divdiv.appendChild(pre);
pre.id = 'preprepre';
}
var src_textarea = document.getElementById("src_textarea");
var dst_textarea = document.getElementById("dst_textarea");
dst_textarea.value = "";
var src = src_textarea.value;
pre.className = "brush: " + getBrush();
if (otheropts != "") {
pre.className += " " + otheropts;
}
pre.textContent = src;
SyntaxHighlighter.defaults['auto-links'] = isChecked('checkbox_auto_links');
SyntaxHighlighter.defaults['toolbar'] = false;
SyntaxHighlighter.defaults['html-script'] = isChecked('checkbox_html_highlight');
SyntaxHighlighter.defaults['tab-size'] = document.getElementById("text_tabsize").value;
SyntaxHighlighter.defaults['gutter'] = isChecked('checkbox_gutter');
SyntaxHighlighter.config.bloggerMode = isChecked('checkbox_blogger_mode');
SyntaxHighlighter.highlight();
var result = document.getElementById("preprepre");
var shid = getSyntaxHighlighterId(result);
var resulthtml = result.innerHTML;
divdiv.removeChild(result);
var resultpreview = document.getElementById("resultdiv");
resultpreview.innerHTML = "<h3>ハイライト処理済みhtml版プレビュー</h3>"
+ resulthtml;
dst_textarea.value = resulthtml + attachScript(shid);
}
function appendBrushScript(src) {
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = version + "/scripts/" + src;
document.head.appendChild(s);
}
function load_brushes() {
for (var key in brushes) {
appendBrushScript(brushes[key][1]);
}
}
load_brushes();
</script>
</head>
<body>
<div id="radiobuttonarea"></div>
<script type="text/javascript">
makeRadioButtons();
</script>
<input type="checkbox" id="checkbox_html_highlight" name="checkbox_html_highlight" value="true" />
<label>html-script</label>
<input type="checkbox" id="checkbox_blogger_mode" name="checkbox_blogger_mode" value="true" />
<label>Blogger mode</label>
<input type="checkbox" id="checkbox_auto_links" name="checkbox_auto_links" value="true" />
<label>auto-linkes</label>
<input type="checkbox" id="checkbox_gutter" name="checkbox_gutter" value="true" checked />
<label>行番号</label>
<br />
<input type="checkbox" id="checkbox_blogger_linebreak_remove" name="checkbox_blogger_linebreak_remove" value="true" checked />
<label>Bloggerで生成モードで更新してしまって表示が崩れた場合のお助け処理を追加(※)</label>
<br />
<input type="checkbox" id="checkbox_copy_paste_helper" name="checkbox_copy_paste_helper" value="true" checked />
<label>「ダブルクリックでコピーモードに遷移」機能の再追加(※)</label>
<br />
<small>(※:javascriptが整形済みhtml末尾に追加されます)</small>
<br />
<input type="checkbox" id="checkbox_append_library" name="checkbox_append_library" value="true" checked />
<label>※印で必要な関数を整形済みhtml末尾に追加<small>(最初に表示される整形済みテキストだけに追加で十分です)</small></label>
<br />
<br />
TABサイズ:<input type="text" size="2" id="text_tabsize" name="text_tabsize" value="2" />
その他の追加属性(開始行番号など):<input type="text" size="20" id="text_otheroption" name="text_otheroption" value="" />
<br />
<br />
変換元テキスト入力欄:
<input type="button" value="ハイライト実行" onclick="javascript: conv();" />
<br />
<textarea id="src_textarea"></textarea>
<br />
<div id="resultdispareadiv" style="display:none">
<table>
<tr>
<td>
<div id="div_nonchrome">
ハイライト用スタイル:<br />
<textarea id="style_textarea"></textarea>
<br />
<input type="button" value="クリップボードにコピー" onclick="javascript: toClipBoard('style_textarea');" />
</div>
<div id="div_chrome" style="display:none;background-color:bisque">
<small>
Chromeをお使いの方はGoogle様の保護により、<br />
Edgeをお使いの方はMicrosoft様の優しさにより、<br />
お使いのブラウザではローカルファイルをプログラムで<br />
ロードする権限が与えられておりません。<br />
お気の毒ですが<a href="" id="atag_style" target="_blank">こちら</a>を手動で開きコピーして、<br />
コピー内容を<br />
<b><style type="text/css">のようなタグで囲って</b><br />
blogなどの対象にペーストしてください。<br />
このリンクは単にスタイルで指定したcssファイル<br />
へのリンクです。
</small>
</div>
</td>
<td>
ハイライト済テキスト:<br />
<textarea id="dst_textarea"></textarea>
<br />
<input type="button" value="クリップボードにコピー" onclick="javascript: toClipBoard('dst_textarea');" />
</td>
</tr>
</table>
</div>
<style>
.syntaxhighlighter {
overflow-y: hidden !important;
}
</style>
<div id="divdiv">
<div id="resultdiv"></div>
<pre id="preprepre"></pre>
</div>
<div>
<a href='http://alexgorbatchev.com/SyntaxHighlighter' target="_blank">SyntaxHighlighter</a><br />
Copyright (C) 2004-2010 Alex Gorbatchev.<br />
</div>
</body>
</html>