diff --git a/doc/markup_reference/rdoc.rdoc b/doc/markup_reference/rdoc.rdoc index cbb48fdbaf..534cb51a57 100644 --- a/doc/markup_reference/rdoc.rdoc +++ b/doc/markup_reference/rdoc.rdoc @@ -756,17 +756,32 @@ Rendered HTML: Monofont passage containing _italics_ and *bold*. A single word may be made monofont by a shorthand: -prefixed and suffixed plus-signs. +prefixed and suffixed plus-signs or backticks. Example input: +Monofont+ in a paragraph. + `Monofont` in a paragraph. + Rendered HTML: >>> +Monofont+ in a paragraph. + `Monofont` in a paragraph. + +Note: The shorthand (+...+ and `...`) only works for simple content +containing word characters, colons, periods, slashes, brackets, and hyphens. +Content containing HTML tags or other markup delimiters will not be matched. +For complex content, use the HTML tags or instead: + + +literal_plus+ shows: +literal_plus+ + + `literal_backtick` shows: `literal_backtick` + + content shows: content + ==== Strikethrough Text may be marked as strikethrough via HTML tag or . diff --git a/lib/rdoc/markup/attribute_manager.rb b/lib/rdoc/markup/attribute_manager.rb index 259d2a7712..79df273c13 100644 --- a/lib/rdoc/markup/attribute_manager.rb +++ b/lib/rdoc/markup/attribute_manager.rb @@ -89,6 +89,7 @@ def initialize add_word_pair "*", "*", :BOLD, true add_word_pair "_", "_", :EM, true add_word_pair "+", "+", :TT, true + add_word_pair "`", "`", :TT, true add_html "em", :EM, true add_html "i", :EM, true @@ -100,7 +101,7 @@ def initialize @word_pair_chars = @matching_word_pairs.keys.join - # Matches a word pair delimiter (*, _, +) that is NOT already protected. + # Matches a word pair delimiter (*, _, +, `) that is NOT already protected. # Used by #protect_code_markup to escape delimiters inside / tags. @unprotected_word_pair_regexp = /([#{@word_pair_chars}])(?!#{PROTECT_ATTR})/ end diff --git a/test/rdoc/markup/attribute_manager_test.rb b/test/rdoc/markup/attribute_manager_test.rb index c48954c8ea..903966b8e2 100644 --- a/test/rdoc/markup/attribute_manager_test.rb +++ b/test/rdoc/markup/attribute_manager_test.rb @@ -244,6 +244,31 @@ def test_convert_attrs_ignores_tt_inside_tt assert_equal 'foo +tt+ bar', output('foo +tt+ bar') end + def test_backtick_basic + assert_equal(["cat ", @tt_on, "and", @tt_off, " dog"], + @am.flow("cat `and` dog")) + + assert_equal(["cat ", @tt_on, "X::Y", @tt_off, " dog"], + @am.flow("cat `X::Y` dog")) + end + + def test_backtick_output + assert_equal 'cat and dog', output('cat `and` dog') + assert_equal 'cat X::Y dog', output('cat `X::Y` dog') + end + + def test_convert_attrs_ignores_backtick_inside_code + assert_equal 'foo `text` bar', output('foo `text` bar') + end + + def test_convert_attrs_ignores_backtick_inside_tt + assert_equal 'foo `text` bar', output('foo `text` bar') + end + + def test_backtick_escaped + assert_equal ['`text`'], @am.flow('\`text`') + end + def test_convert_attrs_ignores_del_inside_code assert_equal 'foo strike bar', output('foo strike bar') end @@ -367,7 +392,7 @@ def test_initial_html def test_initial_word_pairs word_pairs = @am.matching_word_pairs assert word_pairs.is_a?(Hash) - assert_equal(3, word_pairs.size) + assert_equal(4, word_pairs.size) end def test_mask_protected_sequence