teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/09/02 22:26

投稿

AkitoshiManabe
AkitoshiManabe

スコア5434

answer CHANGED
@@ -1,11 +1,15 @@
1
1
  > ウィキペディアのようなイメージ
2
2
 
3
- 他のWikiの例(Perl製 FreeStyle Wiki)では、``WikiParser`` で実装される自動リンクは、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
- 正規表現による置き換え順がありますので、dictの管理重要になります。
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`` にならないように注意します。