プレビューに長時間かかる sed のコードがある #851
Replies: 2 comments 1 reply
-
@mikecat Qiita のハイライトは Rouge を使用しているのですが、確認してみたところ Rouge が原因で時間がかかっていそうです。 |
Beta Was this translation helpful? Give feedback.
-
通りすがりのものです。 Rouge のソースを確認しましたが、いくつか問題があって複合的に起きているようです。 一つ目の問題は、sed の rule %r/([:btT])(\s+)(\S+)/ do 本来、sed では空白は必須ではないと思うので、 Rouge 側のバグだろうと思います。 ↓細かい動作確認などはしていませんが、Rouge 側を直すなら以下のような感じだと思います( - rule %r/([:btT])(\s+)(\S+)/ do
+ rule %r/([:btT])(\s*)(\S+)/ do 逆にいえば、ラベルの前に空白を入れれば( Rouge 的に適正な ↓暫定的に修正するなら、こんな感じ : thousand # <- ラベルの前にスペースを追加
s/d\(.*\)0\(...\)$/\11\2/
s/d\(.*\)1\(...\)$/\12\2/
s/d\(.*\)2\(...\)$/\13\2/
s/d\(.*\)3\(...\)$/\14\2/
t thousand # <- ラベルの前にスペースを追加 二つ目の問題は、
この場合の不正な s/d\(.*\)0\(...\)$/\11\2/ ラベル内の :thousand
なので、ラベルから :thouand # <- s を削除
s/d\(.*\)0\(...\)$/\11\2/
s/d\(.*\)1\(...\)$/\12\2/
s/d\(.*\)2\(...\)$/\13\2/
s/d\(.*\)3\(...\)$/\14\2/
tthouand # <- s を削除 ただし、 また、 これを Rouge 側で直すなら、多分 - edot = /\\.|./m
+ edot = /\\.|[^\\]/m 利用者側の暫定対策としては、ラベルの前にスペースを 1 つ入れることが一番簡単、かつ見栄えも悪くないと思います。 ご参考まで。 |
Beta Was this translation helpful? Give feedback.
-
Sed で Welcome to AtCoder を解いてみた #競技プログラミング - Qiita
を書いていて気付いたのですが、sed のシンタックスハイライトをしようとするとプレビューに長時間かかることがあるようです。
たとえば、新規記事を書く画面を開き、本文に
を入力すると、1回の preview のクエリに9秒くらいかかるようです。
Beta Was this translation helpful? Give feedback.
All reactions