nDiki : BracketName

BracketName

bracket で囲まれた名前。

bracket で囲まれた

 [[pagename]]

という文字列。

多くの(特に国産の)WikiEngineで、WikiPage への参照として解釈される。

WikiName 形式では日本語ページ名を表現できない。 日本語PageName のページへのリンクを表すには、通常何らかのマークアップが必要であり BracketName はその一つの形式である。

また、多くのWikiEngine では BracketName で囲まれた文字列の形式(# で始まる、: を含む等)に応じた拡張機能を提供している。

WikiEngine 別特徴

PukiWiki 1.3

[[,]]有りと無しで別のWikiPage参照となる。

  • [[PukiWiki]]
  • PukiWiki

はそれぞれ別のページへの参照になる(それぞれ括弧のついた/ついていないページ名のページへの参照)。

スポンサード リンク

2004年2月1日 (日)

[ WiKicker ] wikiの編集機能を学習

NaneyOrgWiki を掲示板的に使っていたユーザの一人が、「編集」できる事に気がつきつつある様子。 不適切な(気にいらない)コメントを削除とかしているみたい。 そのページのコミュニティが成長しつつあるのかもしれない。ページ新規作成機能等や BracketName まで使いこなせるまで行くのか?

[ 2月1日全て ]

2004年2月9日 (月)

[ WiKicker ] 自動InterWiki

一昨日実装した、 複数のキーワード集合による、AutomaticLinkモジュールを WiKicker CGI プログラムから使えるようにしてみた。

ローカルにおいておいたキーワードリストファイルを読み込み AutomaticLink 処理(WikiForum 内で AutomaticLink でマッチしていない部分文字列に対して)。 マッチした場合は InterWiki を使ってURIに変換しリンク化する。

あわせてIndexPage.txtWiKicker WikiForum 内の PageName を取得できるようにした。

これで例えば、2つの WiKicker WikiForumcron で互いの IndexPage.txt を定期的に取得し、AutomaticLink するようにすれば、相補的に連携する事ができるようになる(ただし AutomaticLink のみ。WikiNameBracketName は依然としてその WikiForum 内のみ)。

AutomaticLink でのリンク先は(指定した)任意の InterWiki で定義できるので、あるキーワード集合について Google検索結果ページや「はてなダイアリーキーワード」への自動リンクも実現可能(はてなダイアリーキーワード自動リンクAPIはキーワードリストではなく正規表現を返してくるので、元に戻す必要有り。またあれだけ巨大なキーワードリストだと毎回 AutomaticLink のために、trie 再生成するのも辛いのでもう一工夫必要)。

[ 2月9日全て ]

2004年2月10日 (火)

[ WiKicker ] WiKicker脚注機能追加

WiKicker スタイルで日記を記述するにあたり欠けている機能として「脚注」がある。 Wiki としては必須でないので WiKicker には導入していないのだが、日記としては無いと困る。 脚注が使えると文を書く時に正直手を抜ける。 またハイパー日記システム上の旧記事をコンバートする時にも無いといろいろ面倒だし。

ということで実装

インラインブロック

さてどうしたものか。 WiKickerWRI (BracketName 等を含む識別子)としての実装なら、parser の変更もなく新しいWRI scheme の追加と対応するクラスを書くだけですむ。 しかし WRI は終端記号なので、そうすると脚注の中でWRIを使えなくなる。 それは困る。

ということで、やはり非終端記号が必要。 悩んだあげく、

 {{scheme: ... }}

という「インラインブロック非終端記号」を導入。 {{..}} というのは確かいくつかの WikiEngineプラグイン呼び出しで使っている記法だったような。

  • 一般的な文章中には現れず、
  • かといって文章中に混ぜてもそれほど違和感なく(wiki ではこれが重要)
  • これ以上文法を追加したくないので、今後機能追加の際に利用できるように scheme 指定できる

といった点から、このようにしてみた。 2番目の点で合格点の出せる記法かどうかは微妙だが、まぁ許せる範囲かな。

{{ }} は、1行中に現れる必要有り。 「...」は scheme specific part だが、今のところ scheme によらず、InlineParser で解析されて部分木になるため、WRI とか ... とかも書ける。 InlineParser では正規表現を使っていて括弧の数は数えないので、今のところ {{ }} の中に {{ }} は書けないが、まぁ問題ないでしょう。

脚注記法

脚注は、

 {{fn: ...}}

となる。 普通。

実装

  • InlineParser の拡張
  • InlineBlockNode クラスの追加
  • 各 Visitor に visit_InlineBlockNode を追加。
  • HtmlFragmentVisitor に fn: の処理を追加。

いざ実装してみると、ちょこっとのコードで実現。 脚注番号の降り方とか、今後改良する点はあるけど、大枠は完成。

[ 2月10日全て ]

2017年1月3日 (火)

WikiName の特別扱いをついに停止

この日記日記システム(DiKicker)は WikiEngine からの派生で作られた生い立ちをもっていて、現時点でも WikiName を特別扱いし自動的にそのキーワードへのリンクになるようになっていました。今日はコードを修正してその特別扱いをやめることにしました。

実装ですがまず WikiName を先に抽出し、そのあとに他のキーワードを AutomaticLink するようになっていました。このため例えば MacBook Pro という文字列はまず MacBook という WikiName として抽出されてしまうため MacBook Pro という文字列で自動的にリンクさせることができていませんでした(それだと困るので明示的に BracketName で書いていました)。

WikiNameWikiWiki というコンセプト的に良いものでしたが AutomaticLink実装している日記システムではもう不要な表現です。

ようやく重い腰を上げて今回のコード修正となりました(いじったのは数行なのですけれども)。

[ 1月3日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.04948s / load averages: 0.23, 0.48, 0.60
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker