<!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
>