「検索語を強調する機能」がmemoプラグインのデータを壊す

  • ページ: BugTrack2
  • 投稿者: henoheno
  • 優先順位: 重要
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2005-11-23 (水) 23:57:17
  • バージョン:

修正

(PukiWiki 1.4.7) textarea の中を除外するよう、正規表現を追加

メッセージ

memoプラグインが扱っているデータの中にある任意の語句を「検索語を強調する機能」が置換してしまう。

official:質問箱3/216

memoやmemoxプラグインを使っていると検索結果の強調表示のつもりでも、
内容変更になってしまいます。使い慣れないメンバは内容が変更されて
いることに気付かないで更新したりしてしまいます。memoやmemoxなどの
特定のプラグイン内のキーワード強調は行わない、またはキーワードが
含まれていることを示すマークをプラグインの近傍に付加するなどの方
法で内容変更を避けることはできないでしょうか?例えば、memoを検索
すると< strong class="word0">memo</strong>となります。プラグイン
を grep で strong と word0 で検索して修正しようと思いましたが、
いまいち仕組みが解らず、どこを修正してよいのか検討がつきません。
ご助言を頂けたらと思います。

影響範囲

memoプラグインに限らないと思われる。具体的には

  • 「表示(read-actionプラグイン)」の際に、<textarea>などでWikiテキストを表示する機能があるプラグイン

「検索語を強調する機能」周りの調査・前作業

「表示されない語句が検索にひっかかった(例えばコメントアウトされた文字列)」場合については、この方法での強調表示はできない。

  • コードの確認と整理: get_search_words(): 検索語(複数)を検出するための正規表現(複数)を生成する関数。これが検索語(複数)を一文字ごとに分解し、一文字ごとに [全角英数/半角英数/XHTMLエンティティ] [全角ひらがな/全角カタカナ/半角カタカナ] といった様々な状態にマッチする正規表現を生成し、最終的にそれを連結した「検索語とマッチする正規表現」(複数)を収めた配列を返す。
    • cvs:lib/func.php (1.47) => 「BugTrack/779 クリンナップのまとめ」に載せるべき。
      get_search_words(): Cleanup, simplify.
      * Allow calling without arguments
      * Allow a string (not an array)
      * Init something once (Not every time)
      * Created function never check LANG and function_exists() (O(n)=>O(1))
      * Variables are renamed
      * Comments are added/removed
    • cvs:lib/func.php (1.48-1.50) 関数だけをテスト(単体テスト)するような状況で、PHPの実行環境によってmbstring関係の関数、特に今回の場合 mb_substr() の結果が異なったものとなる可能性を排除。 => 「BugTrack/779 クリンナップのまとめ」の事例行き。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-25 (金) 03:06:00
Site admin: PukiWiki Development Team

PukiWiki 1.5.1+ © 2001-2016 PukiWiki Development Team. Powered by PHP 5.6.38-0+deb8u1. HTML convert time: 0.185 sec.

OSDN