回答編集履歴
1
追記
answer
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
> ウィキペディアのようなイメージ
|
2
2
|
|
3
|
-
他のWikiの例(Perl製 FreeStyle Wiki)
|
3
|
+
**他のWikiの例**(Perl製 FreeStyle Wiki)
|
4
4
|
|
5
|
+
``WikiParser`` で実装される自動リンクは、Wiki記法のソースに対して処理します。
|
6
|
+
|
5
7
|
1. 字句解析直前、Wiki記法のページリンク記法に置き換える
|
6
8
|
2. HTMLへの変換処理でA要素に置き換える
|
7
9
|
|
10
|
+
**dictの管理**
|
11
|
+
|
8
|
-
正規表現による置き換え順がありますので、
|
12
|
+
正規表現による置き換え順がありますので、管理は重要になります。
|
9
13
|
1. ソートしやすいデータ構造(連想配列代わりのobject、2次元配列、Map)にする。
|
10
14
|
2. キーの文字列長が長い順に並び替える
|
11
15
|
|
@@ -13,13 +17,18 @@
|
|
13
17
|
var dict = [
|
14
18
|
["テスト", "http://ja.wikipedia.org/wiki/富士山"],
|
15
19
|
["試験","http://ja.wikipedia.org/wiki/京都市"],
|
20
|
+
["試験結果","http://ja.wikipedia.org/wiki/奈良市"],
|
16
21
|
["test","http://ja.wikipedia.org/wiki/秋葉原"]
|
17
22
|
].sort( (a,b)=>b[0].length-a[0].length );
|
18
23
|
console.log(dict);
|
19
24
|
```
|
25
|
+
※**試験結果** と **試験** は置換順によっては意図しない結果が考えられます
|
20
26
|
|
21
|
-
HTML文書を対象とする場合は、置換対象となる字句は制限を受けそうです。
|
22
27
|
|
28
|
+
**HTML文書を対象とする場合**
|
29
|
+
|
30
|
+
置換対象となる字句は制限を受けそうです。
|
31
|
+
|
23
32
|
1. 先祖にA要素がないテキストノードが置換対象
|
24
33
|
|
25
34
|
ご質問のHTMLで以下の部分は、置換後に ``a > a`` にならないように注意します。
|