diff --git a/lib/review/compiler.rb b/lib/review/compiler.rb index c4ca2526f..597a4778d 100644 --- a/lib/review/compiler.rb +++ b/lib/review/compiler.rb @@ -508,7 +508,7 @@ def compile_single(syntax, args) def replace_fence(str) str.gsub(/@<(\w+)>([$|])(.+?)(\2)/) do op = $1 - arg = $3.gsub('\\}') { '\\\\}' }.gsub('}') { '\}' }.sub(/(?:\\)+$/) { |m| '\\\\' * m.size } + arg = $3.gsub('@', "\x01").gsub('\\}') { '\\\\}' }.gsub('}') { '\}' }.sub(/(?:\\)+$/) { |m| '\\\\' * m.size } "@<#{op}>{#{arg}}" end end @@ -522,7 +522,7 @@ def text(str) result << compile_inline(words.shift.gsub(/\\\}/, '}').gsub(/\\\\/, '\\')) result << @strategy.nofunc_text(words.shift) end - result + result.gsub("\x01", '@') rescue => err error err.message end diff --git a/test/test_htmlbuilder.rb b/test/test_htmlbuilder.rb index 2d12ea22b..8454895d5 100644 --- a/test/test_htmlbuilder.rb +++ b/test/test_htmlbuilder.rb @@ -1681,4 +1681,9 @@ def test_inline_comment_for_draft actual = compile_inline('test @{コメント} test2') assert_equal %Q(test コメント test2), actual end + + def test_inline_fence + actual = compile_inline('test @|@{$サンプル$}|') + assert_equal 'test @<code>{$サンプル$}', actual + end end diff --git a/test/test_latexbuilder.rb b/test/test_latexbuilder.rb index 485431d6f..0c1532320 100644 --- a/test/test_latexbuilder.rb +++ b/test/test_latexbuilder.rb @@ -953,6 +953,11 @@ def test_inline_comment_for_draft assert_equal 'test \\pdfcomment{コメント} test2', actual end + def test_inline_fence + actual = compile_inline('test @|@{$サンプル$}|') + assert_equal 'test \\texttt{@\\textless{}code\\textgreater{}\\{\\textdollar{}サンプル\\textdollar{}\\}}', actual + end + def test_appendix_list @chapter.instance_eval do def on_appendix?