ToraToraWiki 開発用Wiki

&aliasと&linkについて (バグ報告/0031)

カテゴリ
その他
状態
完了
優先度
投稿者
Nek

  1. 投稿者: Nek 投稿日時:

    &aliasを使って、たとえば&manlink(title=alias){リンク}みたいに書くと http://www.toratorawiki.net/?ToraToraWikiManual/ja/Wiki/Function/alias へのリンクになるようなものを作れないか模索していたときに<PARAMS>の挙動が気になったので報告いたします。
     
    基本的に<パラメータ名>は区切り文字の後に書かれることを想定してあるようですが、たとえば
    
    &alias(manlink){&link(http://www.toratorawiki.net/?ToraToraWikiManual/ja/Wiki/Function/<title>, open, <PARAMS>){<TARGET>};}
    
    みたいに書いてしまうと、あまりうまくいきません。これだと
    
    &manlink(title=alias){リンク};
    
    と書いたときにはうまくリンクを貼ってくれるのですが、titleが全角文字であるとリンクを貼ってくれません。
    
    カンマ等を使って< >を孤立させると全角文字でも代入できるようになる(つまり、 &link(ほにゃらら, <title>, open, <PARAMS>){<TARGET>} のような場合は全角文字も<title>に入ってくれる。ただしこれだとしたいことができないので意味がない)ので、構文解析の問題なのではないかと思っていますが僕には詳細が分かりませんでした。
     
    &linkにプレフィックスみたいなパラメータが付くか、< >の書き方の自由度が増えるかすると、結構楽に辞書的な他サイトへのリンクが貼れるようになるのですが、何か改善策はございますでしょうか?
    
    もし既存の関数を使ってこれが実装できそうでしたら、ご教示くださいませ。できないのでありましたら、<  >の構文か&linkの仕様にこのようなことができるような仕組みを新機能として要望します。
     
    Wikipediaだと名前空間みたいに[[:en:ページ名]]と書くと ja.wikipedia.org ではなく en.wikipedia.org へのリンクになるので、このような仕組み(index.phpで名前空間をarrayで指定できる等)にしても面白いかもしれません(参考: http://ja.wikipedia.org/wiki/Help:%E8%A8%80%E8%AA%9E%E9%96%93%E3%83%AA%E3%83%B3%E3%82%AF )。
     
    もしこれが極端に難しかったり、現在の実装理念に合わなかったり等ございましたら遠慮なくリジェクトしてくださいませ。
    
  2. 投稿者: terus 投稿日時:

    <と>の区切りや構文解析の問題ではなく、URLの問題ですね。
    最近のブラウザはさも日本語もURLに使用できるかのようにふるまっていますが、
    実際にはURLに日本語は使用できず、URLエンコードという処理で半角文字に変換する必要があります。
    そのため&linkはURLに日本語をくっつけたものをURLであると認識せずに単なる不明なパラメータとして処理してしまいます。
    
    このままだと上記のような簡単にリンクを作成する機能が非常に不便なため、
    &linkが日本語等のマルチバイト文字をURLエンコードしてURLとして解釈できるようにしました。(version 1.3.5)
    例えば
    
    &alias(wikipedia){&link(http://ja.wikipedia.org/wiki/<PARAMS>){<PARAMS>(Wikipedia)}}
    &wikipedia(猫);
    
    のようにすることでwikipediaへのリンクが簡単にかけます。
    各サイトへのリンクのaliasをたくさん定義したページを用意しておいて、
    必要なページで&includeすれば、
    PukiWiki等のInterWikiNameと同様のことができますね。
    
  3. 投稿者: Nek 投稿日時:

    なるほど、URLの問題だったのですね。挙動の理解がすっきりしました。
    これはとても欲しかった機能なので、すごい嬉しいです!
    
    &&includeの使い方をいまいち図りかねていたのですが、そういう風に使えるのですね 驚
    wiki全体で使えるaliasを設定するしか能のない人間でした……。確かにそうすればサーバー管理者以外でも設定を変更できるように設定できますし、便利ですね!
    
投稿者
本文

コンテンツ

リンク

最近更新されたページ