From 0c1cc13437f86466ba910ef0b2edd271619c2d48 Mon Sep 17 00:00:00 2001 From: Kenshi Muto Date: Mon, 25 Jul 2022 23:16:43 +0900 Subject: [PATCH] trim pre/post spaces in ruby. Cloess: #1837 --- doc/format.ja.md | 2 +- doc/format.md | 2 +- lib/review/builder.rb | 4 ++-- lib/review/idgxmlbuilder.rb | 2 +- test/test_builder.rb | 2 ++ test/test_htmlbuilder.rb | 3 +++ test/test_idgxmlbuilder.rb | 5 ++++- test/test_latexbuilder.rb | 8 ++++++++ test/test_plaintextbuilder.rb | 3 +++ test/test_rstbuilder.rb | 3 +++ test/test_topbuilder.rb | 3 +++ 11 files changed, 31 insertions(+), 6 deletions(-) diff --git a/doc/format.ja.md b/doc/format.ja.md index 91735f2be..7c6d4f173 100644 --- a/doc/format.ja.md +++ b/doc/format.ja.md @@ -1067,7 +1067,7 @@ UL1-OL1-PARAGRAPH * `@{ラベルまたは見出し}` : コラムを参照します。 ### その他 -* `@{親文字, ルビ}` : ルビを振ります。たとえば `@{愕然, がくぜん}` のように表記します。 +* `@{親文字,ルビ}` : ルビを振ります。たとえば `@{愕然,がくぜん}` のように表記します。 * `@
{}` : 段落途中で改行します。濫用は避けたいところですが、表のセル内や箇条書き内などで必要になることもあります。 * `@{番号}` : Unicode文字を出力します。引数は16進数で指定します。 * `@{URL}`, `@{URL, 文字表現}` : ハイパーリンクを作成します(後述)。 diff --git a/doc/format.md b/doc/format.md index eeda444c8..64de40ddd 100644 --- a/doc/format.md +++ b/doc/format.md @@ -1113,7 +1113,7 @@ Output: ### Other inline commands ``` -@{Matsumoto, Matz}:: ruby markups +@{Matsumoto,Matz}:: ruby markups @
{}:: linebreak in paragraph @{2460}:: Unicode code point @{http://www.google.com/, google}:: hyper link(URL) diff --git a/lib/review/builder.rb b/lib/review/builder.rb index 85e6f2f21..c39ec9881 100644 --- a/lib/review/builder.rb +++ b/lib/review/builder.rb @@ -401,10 +401,10 @@ def inline_bou(str) def inline_ruby(arg) base, *ruby = *arg.scan(/(?:(?:(?:\\\\)*\\,)|[^,\\]+)+/) if base - base = base.gsub(/\\,/, ',') + base = base.gsub(/\\,/, ',').strip end if ruby - ruby = ruby.join(',').gsub(/\\,/, ',') + ruby = ruby.join(',').gsub(/\\,/, ',').strip end compile_ruby(base, ruby) end diff --git a/lib/review/idgxmlbuilder.rb b/lib/review/idgxmlbuilder.rb index b97a0ed8b..a0df586b9 100644 --- a/lib/review/idgxmlbuilder.rb +++ b/lib/review/idgxmlbuilder.rb @@ -692,7 +692,7 @@ def endnote_item(id) end def compile_ruby(base, ruby) - %Q(#{escape(base.strip)}#{escape(ruby.strip)}) + %Q(#{escape(base)}#{escape(ruby)}) end def compile_kw(word, alt) diff --git a/test/test_builder.rb b/test/test_builder.rb index b810b1207..b67a0b8ec 100644 --- a/test/test_builder.rb +++ b/test/test_builder.rb @@ -71,6 +71,8 @@ def @b.compile_ruby(base, ruby) end str = @b.inline_ruby('foo,bar') assert_equal str, ['foo', 'bar'] + str = @b.inline_ruby(' foo , bar ') + assert_equal str, ['foo', 'bar'] str = @b.inline_ruby('foo\\,\\,,\\,bar,buz') assert_equal str, ['foo,,', ',bar,buz'] end diff --git a/test/test_htmlbuilder.rb b/test/test_htmlbuilder.rb index a911e39d0..42b4aceaa 100644 --- a/test/test_htmlbuilder.rb +++ b/test/test_htmlbuilder.rb @@ -419,6 +419,9 @@ def test_inline_balloon def test_inline_ruby actual = compile_inline('@{粗雑,クルード}と思われているなら@{繊細,テクニカル}にやり、繊細と思われているなら粗雑にやる。') assert_equal '粗雑クルードと思われているなら繊細テクニカルにやり、繊細と思われているなら粗雑にやる。', actual + + actual = compile_inline('@{ 粗雑 , クルード }と思われているなら@{ 繊細 ,テクニカル }にやり、繊細と思われているなら粗雑にやる。') + assert_equal '粗雑クルードと思われているなら繊細テクニカルにやり、繊細と思われているなら粗雑にやる。', actual end def test_inline_ruby_comma diff --git a/test/test_idgxmlbuilder.rb b/test/test_idgxmlbuilder.rb index 5ee7b1ccc..70fb868fd 100644 --- a/test/test_idgxmlbuilder.rb +++ b/test/test_idgxmlbuilder.rb @@ -229,7 +229,10 @@ def test_inline_uchar end def test_inline_ruby - actual = compile_inline('@{coffin, bed}') + actual = compile_inline('@{coffin,bed}') + assert_equal %Q(coffinbed), actual + + actual = compile_inline('@{ coffin , bed }') assert_equal %Q(coffinbed), actual end diff --git a/test/test_latexbuilder.rb b/test/test_latexbuilder.rb index f12d0bde6..844346b5c 100644 --- a/test/test_latexbuilder.rb +++ b/test/test_latexbuilder.rb @@ -327,9 +327,17 @@ def test_inline_pageref assert_equal 'test p.\pageref{p1}', actual end + def test_inline_ruby + actual = compile_inline('@{ foo , bar }') + assert_equal '\\ruby{foo}{bar}', actual + end + def test_inline_ruby_comma actual = compile_inline('@{foo\\, bar\\, buz,フー・バー・バズ}') assert_equal '\\ruby{foo, bar, buz}{フー・バー・バズ}', actual + + actual = compile_inline('@{foo\\, bar\\, buz , フー・バー・バズ }') + assert_equal '\\ruby{foo, bar, buz}{フー・バー・バズ}', actual end def test_inline_uchar diff --git a/test/test_plaintextbuilder.rb b/test/test_plaintextbuilder.rb index f22be7acd..509e86a6c 100644 --- a/test/test_plaintextbuilder.rb +++ b/test/test_plaintextbuilder.rb @@ -100,6 +100,9 @@ def test_inline_raw def test_inline_ruby actual = compile_inline('@{coffin,bed}') assert_equal 'coffin', actual + + actual = compile_inline('@{ coffin , bed }') + assert_equal 'coffin', actual end def test_inline_kw diff --git a/test/test_rstbuilder.rb b/test/test_rstbuilder.rb index c1f8f010a..df43d1446 100644 --- a/test/test_rstbuilder.rb +++ b/test/test_rstbuilder.rb @@ -110,6 +110,9 @@ def test_inline_raw def test_inline_ruby actual = compile_inline('@{coffin,bed}') assert_equal ' :ruby:`coffin``_ ', actual + + actual = compile_inline('@{ coffin , bed }') + assert_equal ' :ruby:`coffin``_ ', actual end def test_inline_kw diff --git a/test/test_topbuilder.rb b/test/test_topbuilder.rb index 6bac7623e..00c405022 100644 --- a/test/test_topbuilder.rb +++ b/test/test_topbuilder.rb @@ -69,6 +69,9 @@ def test_inline_raw def test_inline_ruby actual = compile_inline('@{coffin,bed}') assert_equal 'coffin◆→DTP連絡:「coffin」に「bed」とルビ←◆', actual + + actual = compile_inline('@{ coffin , bed }') + assert_equal 'coffin◆→DTP連絡:「coffin」に「bed」とルビ←◆', actual end def test_inline_kw