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

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

#contents


** 修正 [#c55abac6]
(PukiWiki 1.4.7) textarea の中を除外するよう、正規表現を追加
- [[cvs:lib/html.php]] (1.47)

** メッセージ [#tacbd7b0]

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

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

--------
** 影響範囲 [#kaf6e84a]

memoプラグインに限らないと思われる。具体的には
- 「表示(read-actionプラグイン)」の際に、<textarea>などでWikiテキストを表示する機能があるプラグイン

--------
** 「検索語を強調する機能」周りの調査・前作業 [#f06d37bd]

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

- コードの確認と整理: 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]] クリンナップのまとめ」の事例行き。


--------
- 該当部分をコミットしました。 -- [[teanan]] &new{2005-11-25 (金) 03:06:00};
-- [[cvs:lib/html.php]] (1.47)

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.084 sec.

OSDN