#ソース高速HTML化

母艦設計=「母艦の可視はオフ」

#実行部分
#実際に使う時は、ここを必要に応じて変えてください。
#-----------------------------------------------------------------------
デバッグエディタハンドル「copy」、COPYDATA送信。
クリップボ

もし、ソ=なら
  "nako"ファイル選択。
  もしそれ=なら終わる
  違えば
    それ開く。
    ソ=それ
開始時間=システム時間。
0/*モード*/HTML化。
完成文それ
終了時間=システム時間。
所要時間=(終了時間-開始時間)/1000

'フッタの挿入。
'ここも必要に応じて変えてください。
クリップボ=完成文
ダイアログタイトル=「所要時間:{所要時間}秒」
「コード部分をクリップボードへコピーしました。
見てみますか?」
、二択。
もしそれなら
  それ=「<html><body>{改行}」&完成文&「{改行}</body></html>」
  「temp.html」、保存。
  「temp.html」、起動。

終わり。

#-----------------------------------------------------------------------


*HTML化(ソースをモードで)
  '定数
  タブ文字「  」
  文字列色"#000080"
  コメント色"#008000"
  関数色"#FF00FF"
  項目色"#800080"
  記号色"{CHR(3)}008080"
  数字色"{CHR(3)}000080"
  助詞色"{CHR(3)}800000"
  特殊色"{CHR(3)}000080"
  
  #    CR=CHR(13)
  
  助詞一覧=「とは{~}は{~}について{~}ならば{~}なら{~}でなければ{~}から
まで{~}までを{~}までの{~}で{~}を{~}の{~}が{~}に{~}へ{~}と{~}して
だけ{~}くらい{~}なのか{~}として{~}より{~}ほど{~}など{~}って{~}では{~}て」

  
  特殊文字=「それ{~}ここまで{~}続ける{~}終わる{~}戻る{~}もし{~}違えば{~}条件分岐
反復{~}繰り返す{~}ループ」
#{~}間{~}回#文中に含まれる可能性のある語は除外
  
  //「"”『``{{・/*##//'’※
  囲み文字=`「
"

`
&"『
`
`"
&`
{

/*

#

//
'

※`

  
  
  閉じ文字=`」"”`&"』``"&`}}`#*/ 
  
  囲み文字数=要素数(囲み文字)
  
  もし、モ=0なら
    文字列囲み=『<span style="color:』&文字列色&『;">』
    コメント囲み=『<span style="color:』&コメント色&『;">』
    関数囲み=『<span style="font-weight : bold ; color :』&関数色&『;">』
    項目囲み=『<span style="color :』&項目色&『;">』
    記号囲み=『span』&(CHR(4))&『style="color:』&記号色&『;"』
    数字囲み=『span』&(CHR(4))&『style="color:』&数字色&『;"』
    助詞囲み=『span』&(CHR(4))&『style="color:』&助詞色&『;"』
    特殊囲み=『span』&(CHR(4))&『style="color:』&特殊色&『;"』
  
  違えば
    文字列囲み=『<span class="nstr">』
    コメント囲み=『<span class="ncomment">』
    関数囲み=『<span class="function">』
    項目囲み=『<span class="member">』
    記号囲み=『span』&(CHR(4))&『class="nsign"』
    数字囲み=『span』&(CHR(4))&『class="nnumber"』
    助詞囲み=『span』&(CHR(4))&『class="particle"』
    特殊囲み=『span』&(CHR(4))&『class="special"』
  
  記号囲み=「{CHR(1)}{記号囲み}{CHR(2)}」
  数字囲み=「{CHR(1)}{数字囲み}{CHR(2)}」
  助詞囲み=「{CHR(1)}{助詞囲み}{CHR(2)}」
  特殊囲み=「{CHR(1)}{特殊囲み}{CHR(2)}」
  終了部分=「{CHR(1)}/span{CHR(2)}」
    
    最初部分=「」
    
    (!=『』)
     最小文字数=文字数()
     番号=-1
     囲み文字反復
       ソ対象何文字目。
       もし(それ<最小文字数)かつ(それ>0)なら
         最小文字数=それ
         番号=回数-1
         次囲み文字=対象。
        
     #関数を探す
     「●{~}■{~}*」反復
       ソ"^\t* * *{対象}"正規表現マッチ。
       それ=それ\0
       もし(それ<>「」)かつ(何文字目(,それ)<最小文字数)なら
         番号=囲み文字数+回数-1
         次囲み文字=対象。
     #次の囲み文字を言う。
     もし、番号=-1なら、抜ける。#囲み文字が見つからなかった場合。
    
     ソ次囲み文字切り取る。
     それ記号色付け。
     最初部分=最初部分&それ
     
     #囲み文字に応じて切り取り
     もし、番号<=9なら
       もし、番号<=8なら
         もし、番号=8なら
           次閉じ文字="*/"
         違えば
           次閉じ文字=MID(閉じ文字,番号+1,1)
       違えば
         もし(何文字目(," "))<(何文字目(,改行))なら
           次閉じ文字=" "
         違えば
           次閉じ文字=改行。
     違えば、次閉じ文字=改行
     
     もし、次閉じ文字=改行なら
        ソ改行切り取る。
        切り取り部分=「{次囲み文字}{それ}」
        ソ=改行&
     違えば
        ソ次閉じ文字切り取る。
        切り取り部分=「{次囲み文字}{それ}{次閉じ文字}」

     切り取り部分HTML特殊文字変換。

     もし、番号<6なら、最初部分=最初部分&文字列囲み&それ&『</span>』
     違えばもし、番号<9なら、最初部分=最初部分&コメント囲み&それ&『</span>』
     違えばもし、番号=9なら、最初部分=最初部分&項目囲み&それ&『</span>』
     違えばもし、番号<16なら、最初部分=最初部分&コメント囲み&それ&『</span>』
     違えば、最初部分=最初部分&関数囲み&それ&『</span>』
    
    ソ記号色付け。
    完成文=最初部分&それ
    「<code>{完成文}</code>」戻す。


●記号色付け(ソースを)
 #yukさんに教えてもらった部分
 //記号に色つけ
 ソ「([!-@!-@←→])」「{記号囲み}$1{終了部分}」正規表現置換。
 「{記号囲み}(\d){終了部分}」「{数字囲み}$1{終了部分}」正規表現置換。

 「(\D){終了部分}{記号囲み}」「$1」正規表現置換。
 「(\d){終了部分}{数字囲み}」「$1」正規表現置換。
 ソそれ

 助詞一覧反復
   ソそれ「{助詞囲み}{それ}{終了部分}」置換。
   ソそれ
   
 特殊文字反復
   ソそれ「{特殊囲み}{それ}{終了部分}」置換。
   ソそれ

 ソHTML特殊文字変換。

 //タグの"#"," ","<",">"を元に戻す
 それ(CHR(3))"#"置換。
 それ(CHR(4))" "置換。
 「{CHR(1)}」「<」置換。
 「{CHR(2)}」「>」置換。
 #/yukさんに教えてもらった部分

 戻る

●HTML特殊文字変換(ソースを)
 ソ「&」「&」置換。
 「<」「<」置換。
 「>」「>」置換。
# 「"」を「&quot;」に置換
 改行「<BR>{改行}」置換。
 「{\t}」タブ文字置換。
 「 」「&nbsp;」置換

 戻る