Category::Plugin

touchgraphプラグインで,空白を含むページ名が分割される

  • ページ: BugTrack2
  • 投稿者: しましま
  • 優先順位: 低
  • 状態: 却下
  • カテゴリー: プラグイン
  • 投稿日: 2006-04-07 (金) 19:02:05
  • バージョン: 1.4.6

メッセージ

空白を含むページ名があると,touchgraphのファイル形式が空白を,要素の区切りと見なすため,複数のページがあると解釈されてしまいます. 空白をアンダースコアに変えるなどして,回避できるかとも思いましたが,TGWikiBrowserのページの呼び出しにも使われているのでうまくいきませんでした.

touchgraphプラグインの改造 by しましま

自分でどうにかしてみました.TGWikiBrowserのソースを見てみたところ,空白文字はどうしてもエスケープできないようです.

TGWikiBrowser の方にもパッチが必要という制限があるので,以下のパッチを採用いただけるかどうかは,開発者の方々におまかせします.

使用例は,見にくいですが http://www.neurosci.aist.go.jp/ibisforest/index.php?TGWikiBrowser です.

改造点

そこで,touchgraph プラグインの方で,空白を %20 に変換し,TGWikiBrowser の方で元に戻すパッチを作りました.

%20 への変換だと,TGWikiBrowser にパッチがなくても,とりあえずWikiのノードが分割される問題は回避でき,%20 がそのまま見えてしまうだけですみます.

パッチ

Pukiwiki 1.4.6 の plugin/touchgraph.inc.php 用

--- touchgraph.inc.php.orig	Thu Apr 13 18:04:32 2006
+++ touchgraph.inc.php	Thu Apr 13 18:05:42 2006
@@ -40,11 +40,11 @@
 
 		$file = CACHE_DIR . encode($page) . '.rel';
 		if (file_exists($file)) {
-			echo $page;
+			echo str_replace(' ', '%20', $page);
 			$data = file($file);
 			foreach(explode("\t", trim($data[0])) as $name) {
 				if (preg_match($non_list_pattern, $name)) continue;
-				echo ' ', $name;
+				echo ' ', str_replace(' ', '%20', $name);
 			}
 			echo "\n";
 		}
@@ -62,11 +62,11 @@
 
 		$file = CACHE_DIR . encode($page) . '.ref';
 		if (file_exists($file)) {
-			echo $page;
+			echo str_replace(' ', '%20', $page);
 			foreach (file($file) as $line) {
 				list($name) = explode("\t", $line);
 				if (preg_match($non_list_pattern, $name)) continue;
-				echo ' ', $name;
+				echo ' ', str_replace(' ', '%20', $name);
 			}
 			echo "\n";
 		}

TGWikiBrowser 1.0.2 用

--- com/touchgraph/wikibrowser/TGWikiBrowser.java.orig	2006-04-13 19:11:29.000000000 +0900
+++ com/touchgraph/wikibrowser/TGWikiBrowser.java	2006-04-13 19:10:05.000000000 +0900
@@ -166,7 +166,7 @@
 
 	private String generateNodeLabel(String labelOrUrl) {
 		if(!labelOrUrl.startsWith("http://")) {		
-			return labelOrUrl; //It's a label			
+			return labelOrUrl.replaceAll("%20", " "); //It's a label			
 		}
 		else { // Create a label from the URL	 									
 			String urlString = labelOrUrl;

  • 問題点の提示をありがとうございます。touchgraphプラグインの欠陥というわけではなく、半角スペースの存在を考慮しない、というTGWikiBrowser側の仕様がそもそもの原因(きっかけ)であるように読めますね。それが正しい場合、TGWikiBrouserに本来あるべき実装のパッチを提供すると良いかもしれません。半角スペースをデータとして渡すのはPukiWikiだけではないでしょうから、それが実現するならもっと多くの人が喜ぶでしょう。 -- henoheno 2006-04-15 (土) 21:43:02
  • お返事をありがとうございます.一応,TGWikiBrowser側にもコメントをつけておきました.http://sourceforge.net/forum/forum.php?thread_id=1483688&forum_id=98324 -- しましま 2006-04-15 (土) 22:21:50
    • お疲れ様です。 該当sf.net project(のTGWikiBrowser)はここ3年ほど手が入っていないようですね (^^; ともあれ方向としては本家に情報を集約するのが正解かと思います -- henoheno 2006-04-16 (日) 00:49:36

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

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.167 sec.

OSDN