回答編集履歴
2
シンタックスハイライトをつける
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
```
|
27
|
+
```ruby
|
28
28
|
|
29
29
|
replaced_body_md = body_md.gsub(/[[(.+)]]/) { |(ref)|
|
30
30
|
|
1
gsubの使い方をコメント
test
CHANGED
@@ -9,3 +9,27 @@
|
|
9
9
|
はおそらく `$name_tbl[ref]` で発生しています。 `$name_tbl` (グローバル変数)は無いですから、 `nil` になってしまいます。
|
10
10
|
|
11
11
|
`name_tbl[ref]` でいいんじゃないでしょうか。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
それと、`scan` と `gsub!` を同時に使うのは良くないと思います。scanで一度検索したあと、その文字列そのものを置き換えると挙動がおかしくなりかねません。
|
16
|
+
|
17
|
+
`gsub` は `scan` と同じようにブロックを使うことが出来ます。
|
18
|
+
|
19
|
+
https://docs.ruby-lang.org/ja/latest/method/String/i/gsub.html
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
> 文字列中で pattern にマッチした部分を順番にブロックに渡し、 その実行結果で置き換えた文字列を生成して返します。
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
```
|
28
|
+
|
29
|
+
replaced_body_md = body_md.gsub(/[[(.+)]]/) { |(ref)|
|
30
|
+
|
31
|
+
"[#{ref}](/posts/#{name_tbl[ref]})"
|
32
|
+
|
33
|
+
}
|
34
|
+
|
35
|
+
```
|