!変数宣言が必要
!配色番号 = 1 //1…背景が白、文字が黒 2…背景が黒、文字が白
結果とは変数
STYLEとはハッシュ
//<span style="{STYLE@type}"> </span>
#type 配色番号=1 配色番号=2
「
文字列 color:blue; color:#FFFF00;
コメント color:green; color:#999999;
助詞 color:#A0522D; color:#00ff00;
関数 color:#ff00ff; color:#ff00ff;
記号 color:#00BFFF; color:#00ffff;
宣言 color:blue; color:#ffafc9;
予約語 color:blue; color:#00ffff;
定数 color:red; color:red;
」をTSV取得して反復
もし対象==「」ならば続ける
STYLE@(対象[0]) = 対象[配色番号]
//タグで囲うとか、引用符をつけるとか
●仕上げ(htmlを)
preタグとは変数
配色番号で条件分岐
1ならば、preタグ = 『<pre style="background-color:#eeeeee; color:#000000">』
2ならば、preタグ = 『<pre style="background-color:#333333; color:#ffffff">』
違えば、preタグ = 「pre>」
html = 「{preタグ}<code>{html}</code></pre>」
htmlを戻す
/* カンニング用
background-color:#ffffff;
color:red;
color:#ffffff;
*/
#----------------------
変換テーブルとは変数
//endあり:「{first}*{end}」でワイルドカードマッチ
//endなし:firstでワイルドカードマッチ にあてはまるようにする
#タイプ 開始 終了 をタブ区切りでいれる(改行は\n)
#type first end の変数に入る
変換テーブル=「
文字列 {カッコ} {カッコ閉じ}
文字列 『 』
文字列 " "
コメント /\* \*/
コメント [=//|'|#|#|※] \n
関数 [=●|*|■] \n
関数 ・[*!\(~ \n]
記号 [+\+\-\*\/\=\%\^\<\>\(\)\!\[\]\\\&\@\|]
記号 [++-×÷=%^<>()![]¥&@|≦≧→←~]
宣言 [=とは変数|とはハッシュ|とは配列|とはボタン|とはラベル|とはエディタ|とはメモ|とはフォーム|とはパネル|とはスプリッタ]
助詞 [=とは|は|について|ならば|なら|でなければ|から|ここまで|まで|までを|までの|で|を|の|が|に|へ|と|して|だけ|くらい|なのか|として|より|ほど|など|って|では|て]
予約語 [=もし|違えば|それ|対象|その|ループ|繰り返す|条件分岐|反復|戻す|戻る|続ける]
予約語 [=母艦|かつ|または]
定数 [=はい|いいえ|改行|必要|不要]
定数 [+1234567890]
」をTSV取得
//「宣言」はプログラム部分に例外処理をしてあります
//保留 { } 、。*(掛け算)::,.▲/
#----------------------#----------------------
●ナデシコシンタックスハイライト(txtを)
oldtxtとは変数 //無限ループ検知
firstとは変数
endとは変数
パターンとは変数
typeとは変数 //html修飾タイプ
hitとは変数
posとは変数
minposとは変数
minhitとは変数
mintypeとは変数
結果=「」
(txt<>「」)でループ
oldtxt=txt
minpos=-1 //初期化 未発見
変換テーブルを反復
もし対象[0]==「」ならば続ける
type = 対象[0]
first = 対象[1]
end = 対象[2]
もしend==「」でなければ
パターン = 「{first}*{end}」
違えば
パターン = first
hit = txtがパターンにワイルドカードマッチ
もしhit==「」ならば続ける
pos = txtでhitを文字検索
もしpos<=0ならばエラー発生 //マッチしたのに検索に失敗?
//いちばん左にヒットしたパターンを記録
もしminpos==-1またはpos<minposならば
//例外処理:空白に装飾は要らないのでトリムしてみる
hit=hitをトリム
minpos=pos
minhit=hit
mintype=type
//反復ここまで
//もうヒットするものがない
もしminpos==-1ならば
txtをテキスト出力
txt=「」
抜ける
違えば
txtのminhitまでを切り取る//txtから消す
それをテキスト出力
minhitをmintypeでマークアップ出力
もしoldtxt=txtならば
「無限ループの可能性があります」と言う
デバッグ
結果を戻す
●テキスト出力(txtを)
txt=txtをHTML変換
結果にtxtを追加
●マークアップ出力(txtをtypeで)
txt=txtをHTML変換
もしtype==「宣言」ならば//宣言だけ例外処理
マークアップ出力(「とは」を「助詞」で)
txtから「とは」まで切り取る//切り取って捨てる
styleとは変数
style=STYLE@type
txt=「<span style="{style}">{txt}</span>」
結果にtxtを追加
●HTML変換(txtを)
txt=txtの「&」を「&」に置換
txt=txtの「<」を「<」に置換
txt=txtの「>」を「>」に置換
txt=txtのタブを「	」に置換
txtを戻す
#----------------------#----------------------
//実行部分
クリップボード取得
それをナデシコシンタックスハイライト
それを仕上げ
コピー
おわり
完成!(予定)です。
なでしこプログラムをクリップボードにコピーした状態で実行すると、シンタックスハイライト(HTML修飾)をつけてクリップボードに返します。
完成品のサンプルは上記そのものです。
色はセンスある人が提示してくれたら変えていきたいです。
HTMLとスタイルシートの知識が付け焼き刃なので、そこも指摘があればなおしましょう。
処理の高速化は……いらないかな?
!配色番号 = 1 の部分を2にすると黒背景モードになります。
↓実行結果はこんな感じ
コピーボタンとはボタン
そのクリックした時は~ボタンイベント
●ボタンイベント
クリップボード取得してコピー