これは?

HikiDoc.js test

Live Demo
nukumori.orgで使ってる改造版hikidoc jsのライブデモ
Test
nukumori.orgで使ってる改造版hikidoc jsのテスト

Reference

HikiDoc の JavaScript による実装 | 髭、はえ初めし頃。
これでデータを全部パースできる。wiki2htmlをhiki対応しなくて済んだ。plugin部分にはclass="plugin"がつく、コロンのリンク[[aaa:bbb]]には対応していないように見える
[ hikidoc_js-20110802.tar.gz ]
引数にlMapを追加して、ページ名とファイル名の変換ができるようにした、location mapみたいな感じの命名だったと思うがよく覚えていない、hikiDocには入れたくなかったがパース中にやるしか思いつかなかったのでここにある
記号が化ける問題などある程度汎用的そうな部分と、ページ名の置換などnukumori.orgだけ用に、コード追加した
プラグインが少し機能して欲しいのでhikidoc_plugin2html.jsを作って呼び出すようにした、ただし存在チェックしてない
on going: decodeHtmlspechalChars.jsも使うようにした、テストでも存在チェック無しで使ってるけど存在チェックしたらいいと思う(やってない)
on going: testはURLで?つけたところだけngになってるがコメントつけたりして意図的な変更はokになるように修正したい、プラグイン対応は項目追加もしたい(たいへんそう)
Wiki to HTML using JavaScript
経緯: JavaScriptのwikiのparserを探すと最初に出てくるし見た目シンプルでこれ使うと良さそうだったので最初はこれを育ててパースを試していた
demo: wiki2html - De-wiki
上のパーサで全体はパースしてるけど、プラグインのパースにこれを復活して使ってる、一部先に作り込んでたのでそこだけ流用
encoding.js/README_ja.md at master · polygonplanet/encoding.js
これとeuc.jsみたいな古いのしか見当たらなかった、便利そうなこちらを採用した
RegExr: regex demo
正規表現のテストをするのに便利に使ってる
Decode PHP's htmlspecialchars encoding with Javascript
gt/ltを抑制するために使ってる、最初はhikiDocからコンテンツにも使っていたがやり方を変えたので今はhikiDocでは使っていない
gt/ltがコンテンツに表示されるのを抑制するために使ってる、ルールがよくわからないので随時必要そうなところに適当に入れているがまだ不完全
http://images-jp.amazon.com/images/P/[ASIN,ISBN].[国コード].[画像の種類].jpg
Amazonの画像取れないページを直すのに参考にした
AmazonのURLからASINコードを抜き出すための正規表現コード
ASIN抜くのコピペした
配列を征する者はJSを制す。JavaScriptのスマートな配列操作テクニック - ICS MEDIA
配列操作が超丁寧に説明されているので参考とコピペした
nukumori wiki - FrontPage
archive.orgに割と残ってるので参考に特にファイル名変更
ページ一覧: nukumori wiki - Index
JavaScript の イテレータ を極める! #JavaScript - Qiita
イテレータの最初だけを取得するために参考にした
mdn
ファイル取得と進捗表示をコピペした、他イテレータの勉強とか全体的に参考にした
安全なウェブサイトの作り方 - 1.3 パス名パラメータの未チェック/ディレクトリ・トラバーサル | 情報セキュリティ | IPA 独立行政法人 情報処理推進機構
二重エンコードの必要性を理解した
CSSだけで外部サイトへのリンクにマーク(アイコン)をつける方法 | 株式会社レクタス
URLで分ける方法、他のがtargetで分ける方法ばっかりで驚きつつコピーした
Ajax&JSONでUTF-8以外のエンコーディングを使用する(クライアントサイド編) #JavaScript - Qiita
よくまとまっているので、今後問題が起きた時に参考にする

Development Note

tbd:

  1. 個別設定はJSONとか外部ファイル化した方が読みやすいし使いやすい、今はindexに全部入ってる。参考: How to import local json file data to my JavaScript variable?
  2. wiki2htmlの関数化、prototype拡張したくない
  3. 描画先idを引数で指定する、ソース読み込み先も個別指定しないとできないのであとでいいような気がしてきた
  4. domain以下または./のhiki.cgiは動かないよとわかるようにする、リンクにしなくていい←どこから呼んでるか忘れて試せない?cで個別対応でいいかも
  5. 「""」複数行がblockquoteになった後その中身の記号がタグに展開されるのは、多分パーサの実装が本物と違う、「>>」だとタグ展開されないような感じなので同じにすればいいのかも
  6. hikipathを定義してdomain/hikiの下は全部制御したい
  7. サイドバーを常に表示、あんまり必要性を感じないので後回し
  8. InterWikiNameに飛んできたリンクを自動的に開いて、外につなげる。今はInterWikinameはこのページに飛んで終わる
  9. タイトル(ファイル名)の変換は、タグかh1のルールか何か、DB解析すれば自動的にできそう

done:

  1. 2024/04/28 decode正しくなったので引用が>>>でパーサに渡るのなくなったかもしれないのでいったんコメントアウト、ついでにhikiDocの改行をオリジナルに戻す
  2. 2024/04/24 hikiソースをresponseからそのまま使うようにしたらhikiDocに追加したdecode処理が不要になった。不要な処理は削除してこの履歴でdelした。これも直った→pとliのなかに>とか混ざってる(TextFormattingRulesの真ん中くらいにli、下の方にpがある)
  3. 2024/04/24 これも直ってる→?CCCD tbd: >が引用の中に混入してる
  4. 2024/04/11 ページタイトルも逆置換して正しくというか作成後に変更した名前が表示されるようにした、MozillaFirefox⇔MozillaFirebirdとか
  5. 2024/04/11 リンクタイトルの$gt;を記号に戻した、/?MozillaFirebirdの下の方にある
  6. 2024/04/03 幅あふれてる、PCでもソース見るとリンクが幅超えて伸びてる、TwitterCSSの画像も狭い時横幅超える
  7. 2024/04/01 dark color scheme対応
  8. 2024/03/31 Chromeで文字化けする、FirefoxとSafariは正しく表示される。→xhrのエンコード指定のダブルクォートを閉じてなかっただけだった上にシングルクォート内なのでlintでも気づいていなかった
  9. 2024/03/29 >とか混ざってる, TextFormattingRulesの最後の方、テーブルにも→最後の方とテーブルだけ対処したが、そもそも個別対処が間違ってる可能性がある>
  10. (上記同件)TextFormattingRulesのテーブルセルに「>」が残ってる
  11. decode有効にすると見た目良くなるが24番以降のテストに色がつかなくなる、okとかは出てる→なんか治ったが何したか忘れた
  12. 2024/03/27 isbn, amazonに対応、?testにある、シングルクォートにハマってる...、カンマ区切りで処理して後からリンクの['|"]を削除すればいい
  13. 2024/03/26 データパスを指定する(さすがに公開前にはする)
  14. 2024/03/26 雑にreplace table(map)で対応したedit menuのリンクを外す、「?c=」がヘッダにある編集関連
  15. 2024/03/26 replace tableも外から渡すかー
  16. 2024/03/24 外部リンクにつけた→内部リンクは見分けられた方が探索に便利、外部リンクにアイコンつけるかどっちか
  17. 2024/03/22 css外部ファイル化
  18. 2024/03/21 ページ一覧htmlは切り離して、ページ一覧cgiの時に表示する
  19. 2024/03/21 引数なかったらフロントページに飛ぶ
  20. 2024/03/21 リファレンスも別ページ化してフッターからリンクとか
  21. 2024/03/20 isbn_image対応、W-ZERO3702NKにある → {{isbn_image('489986566X','')}}
  22. 2024/03/21: なぜか直ってる→2024/03/20、test20、blockquoteが二重になってる、最近何かした????
  23. 2024/02/20 sidemenu用にlink_imageのaltを設定する
  24. 2024/03/08 decode html対応中→むやみに入れたら直ってる
  25. image_link対応
  26. ""から始まる行は引用にする→HikiDoc.jsでちゃんとblockquoteになっているのでスタイル当てた