# frozen_string_literal: false
require 'rdoc/test_case'
class TestRDocRdInlineParser < RDoc::TestCase
def setup
super
@block_parser = RDoc::RD::BlockParser.new
@block_parser.instance_variable_set :@i, 0
@inline_parser = RDoc::RD::InlineParser.new @block_parser
end
def test_parse
assert_equal 'regular emphasis', parse('regular ((*emphasis*))')
end
def test_parse_code
assert_equal 'text
', parse('(({text}))')
end
def test_parse_em
assert_equal 'text', parse('((*text*))')
end
def test_parse_footnote
assert_equal '{*1}[rdoc-label:foottext-1:footmark-1]', parse('((-text-))')
expected = [
@RM::Paragraph.new('{^1}[rdoc-label:footmark-1:foottext-1]', ' ', 'text'),
blank_line,
]
assert_equal expected, @block_parser.footnotes
end
def test_parse_index
assert_equal 'text', parse('((:text:))')
assert_includes @block_parser.labels, 'text'
end
def test_parse_kbd
assert_equal 'text', parse('((%text%))')
end
def test_parse_multiple
assert_equal 'one two', parse('((*one*)) ((*two*))')
end
def test_parse_newline
assert_equal "one\ntwo", parse("one\ntwo")
end
def test_parse_quote
assert_equal 'one " two', parse('one " two')
end
def test_parse_ref
assert_equal '{text}[rdoc-label:text]', parse('(())')
end
def test_parse_ref_em
assert_equal '{text}[rdoc-label:text]', parse('((<((*text*))>))')
end
def test_parse_ref_filename_quote
assert_equal '{RD/foo}[rdoc-label:RD/foo]', parse('(())')
end
def test_parse_ref_filename
assert_equal '{RD}[rdoc-label:RD/]', parse('(())')
end
def test_parse_ref_quote
assert_equal '{text \\"}[rdoc-label:text \\"]', parse('(())')
end
def test_parse_ref_quote_content
assert_equal '{text}[rdoc-label:text]',
parse('((<"((*text*))">))')
end
def test_parse_ref_quote_content_multi
assert_equal '{one two}[rdoc-label:one two]',
parse('((<"((*one*)) ((*two*))">))')
end
def test_parse_ref_substitute
assert_equal '{text}[rdoc-label:thing]', parse('(())')
end
def test_parse_ref_substitute_element_quote
assert_equal '{text}[rdoc-label:"RD"]',
parse('(())')
end
def test_parse_ref_substitute_filename
assert_equal '{text}[rdoc-label:RD/]', parse('(())')
end
def test_parse_ref_substitute_filename_label
assert_equal '{text}[rdoc-label:RD/label]',
parse('(())')
end
def test_parse_ref_substitute_filename_quote
assert_equal '{text}[rdoc-label:"RD"/]', parse('(())')
end
def test_parse_ref_substitute_multi_content
assert_equal '{one two}[rdoc-label:thing]',
parse('((<((*one*)) two|thing>))')
end
def test_parse_ref_substitute_multi_content2
assert_equal '{one \\" two}[rdoc-label:thing]',
parse('((<((*one*)) \" two|thing>))')
end
def test_parse_ref_substitute_multi_content3
assert_equal '{one \\" two}[rdoc-label:thing]',
parse('((<((*one*)) \" ((*two*))|thing>))')
end
def test_parse_ref_substitute_quote
assert_equal '{one | two}[rdoc-label:thing]',
parse('((<"one | two"|thing>))')
end
def test_parse_ref_substitute_quote_content
assert_equal '{text}[rdoc-label:thing]',
parse('((<"((*text*))"|thing>))')
end
def test_parse_ref_substitute_url
assert_equal '{text}[http://example]',
parse('(())')
end
def test_parse_ref_url
assert_equal '{http://example}[http://example]',
parse('(())')
end
def test_parse_var
assert_equal '+text+', parse('((|text|))')
end
def test_parse_verb
assert_equal 'text', parse("(('text'))")
end
def test_parse_verb_backslash
assert_equal "(('text'))", parse("(('(('text\\'))'))")
end
def test_parse_verb_backslash_backslash
assert_equal 'text \\', parse("(('text \\\\'))")
end
def test_parse_verb_backslash_quote
assert_equal 'text "', parse("(('text \\\"'))")
end
def test_parse_verb_emphasis
assert_equal '((*emphasis*))', parse("(('((*emphasis*))'))")
end
def test_parse_verb_multiple
assert_equal '((*text*))', parse("(('((*text*))'))")
end
def parse text
@inline_parser.parse text
end
end