これは?
- hikiのデータを表示するものです。hikiと同じURLでアクセスされたindex.htmlがJavaScriptでURLを解析して対応するデータファイルを読み込みます。hikiが動かなくなってしまったのでこの仕組みを作りました。
- 構成
- index.html; hikiの代わりにリンクを受け取って解析して対応するデータファイルをロードして描画するhtmlとjs一式
- hiki-browser-js.css; 見た目
- hiki-browser-js-index.html; hikiのIndexの代わりの静的リンクテキスト
- hiki-browser-js-notes.html; このファイル
- HikiDoc.js; 使用させていただいた。デコードとプラグイン関連を拡張した。
- HikiDoc_plugin2html.js; Pluginを簡易的にパースする、hikidoc.jsから呼び出すのでこの名前にした。wiki2htmlをプラグイン対応する実験していたので流用した。
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:
- 個別設定はJSONとか外部ファイル化した方が読みやすいし使いやすい、今はindexに全部入ってる。参考: How to import local json file data to my JavaScript variable?
- wiki2htmlの関数化、prototype拡張したくない
- 描画先idを引数で指定する、ソース読み込み先も個別指定しないとできないのであとでいいような気がしてきた
- domain以下または./のhiki.cgiは動かないよとわかるようにする、リンクにしなくていい←どこから呼んでるか忘れて試せない?cで個別対応でいいかも
- 「""」複数行がblockquoteになった後その中身の記号がタグに展開されるのは、多分パーサの実装が本物と違う、「>>」だとタグ展開されないような感じなので同じにすればいいのかも
- hikipathを定義してdomain/hikiの下は全部制御したい
- サイドバーを常に表示、あんまり必要性を感じないので後回し
- InterWikiNameに飛んできたリンクを自動的に開いて、外につなげる。今はInterWikinameはこのページに飛んで終わる
- タイトル(ファイル名)の変換は、タグかh1のルールか何か、DB解析すれば自動的にできそう
done:
- 2024/04/28 decode正しくなったので引用が>>>でパーサに渡るのなくなったかもしれないのでいったんコメントアウト、ついでにhikiDocの改行をオリジナルに戻す
- 2024/04/24 hikiソースをresponseからそのまま使うようにしたらhikiDocに追加したdecode処理が不要になった。不要な処理は削除してこの履歴でdelした。これも直った→pとliのなかに>とか混ざってる(TextFormattingRulesの真ん中くらいにli、下の方にpがある)
- 2024/04/24 これも直ってる→?CCCD tbd: >が引用の中に混入してる
- 2024/04/11 ページタイトルも逆置換して正しくというか作成後に変更した名前が表示されるようにした、MozillaFirefox⇔MozillaFirebirdとか
2024/04/11 リンクタイトルの$gt;を記号に戻した、/?MozillaFirebirdの下の方にある
- 2024/04/03 幅あふれてる、PCでもソース見るとリンクが幅超えて伸びてる、TwitterCSSの画像も狭い時横幅超える
- 2024/04/01 dark color scheme対応
- 2024/03/31 Chromeで文字化けする、FirefoxとSafariは正しく表示される。→xhrのエンコード指定のダブルクォートを閉じてなかっただけだった上にシングルクォート内なのでlintでも気づいていなかった
2024/03/29 >とか混ざってる, TextFormattingRulesの最後の方、テーブルにも→最後の方とテーブルだけ対処したが、そもそも個別対処が間違ってる可能性がある>
(上記同件)TextFormattingRulesのテーブルセルに「>」が残ってる
decode有効にすると見た目良くなるが24番以降のテストに色がつかなくなる、okとかは出てる→なんか治ったが何したか忘れた
- 2024/03/27 isbn, amazonに対応、?testにある、シングルクォートにハマってる...、カンマ区切りで処理して後からリンクの['|"]を削除すればいい
- 2024/03/26 データパスを指定する(さすがに公開前にはする)
- 2024/03/26 雑にreplace table(map)で対応したedit menuのリンクを外す、「?c=」がヘッダにある編集関連
- 2024/03/26 replace tableも外から渡すかー
- 2024/03/24 外部リンクにつけた→内部リンクは見分けられた方が探索に便利、外部リンクにアイコンつけるかどっちか
- 2024/03/22 css外部ファイル化
- 2024/03/21 ページ一覧htmlは切り離して、ページ一覧cgiの時に表示する
- 2024/03/21 引数なかったらフロントページに飛ぶ
- 2024/03/21 リファレンスも別ページ化してフッターからリンクとか
- 2024/03/20 isbn_image対応、W-ZERO3、702NKにある → {{isbn_image('489986566X','')}}
- 2024/03/21: なぜか直ってる→2024/03/20、test20、blockquoteが二重になってる、最近何かした????
- 2024/02/20 sidemenu用にlink_imageのaltを設定する
2024/03/08 decode html対応中→むやみに入れたら直ってる
- image_link対応
- ""から始まる行は引用にする→HikiDoc.jsでちゃんとblockquoteになっているのでスタイル当てた