63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/markascend/parser.rb', line 63
def parse_rec_block
return unless @src.match? REC_START
line, block = scan_line_and_block 2
return unless line
rec_start = line[REC_START]
wrapper_begin, elem_begin, elem_end, wrapper_end =
case rec_start
when '+ '; ['<ol>', '<li>', '</li>', '</ol>']
when '- '; ['<ul>', '<li>', '</li>', '</ul>']
when '> '; ['', '<quote>', '</quote>', '']
end
elems = ["#{line[2..-1]}#{block}"]
block_start_re = REC_BLOCK_STARTS[rec_start]
while @src.match?(block_start_re)
line, block = scan_line_and_block 2
break unless line
elems << "#{line[2..-1]}#{block}"
end
@out << wrapper_begin
elems.each do |elem|
@out << elem_begin
elem.rstrip!
@out << Parser.new(@env, elem).parse
@out << elem_end
end
@out << wrapper_end
true
end
|