summaryrefslogtreecommitdiff
path: root/lib/rdoc/markup/parser.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rdoc/markup/parser.rb')
-rw-r--r--lib/rdoc/markup/parser.rb35
1 files changed, 24 insertions, 11 deletions
diff --git a/lib/rdoc/markup/parser.rb b/lib/rdoc/markup/parser.rb
index 68616d7787..c18ce821fb 100644
--- a/lib/rdoc/markup/parser.rb
+++ b/lib/rdoc/markup/parser.rb
@@ -86,11 +86,18 @@ class RDoc::Markup::Parser
# Builds a Heading of +level+
def build_heading level
- _, text, = get # TEXT
- heading = RDoc::Markup::Heading.new level, text
- skip :NEWLINE
-
- heading
+ type, text, = get
+
+ text = case type
+ when :TEXT then
+ skip :NEWLINE
+ text
+ else
+ unget
+ ''
+ end
+
+ RDoc::Markup::Heading.new level, text
end
##
@@ -405,13 +412,19 @@ class RDoc::Markup::Parser
@line += 1
token
# === text => :HEADER then :TEXT
- when s.scan(/(=+)\s*/) then
+ when s.scan(/(=+)(\s*)/) then
level = s[1].length
- level = 6 if level > 6
- @tokens << [:HEADER, level, *token_pos(pos)]
- pos = s.pos
- s.scan(/.*/)
- [:TEXT, s.matched.sub(/\r$/, ''), *token_pos(pos)]
+ header = [:HEADER, level, *token_pos(pos)]
+
+ if s[2] =~ /^\r?\n/ then
+ s.pos -= s[2].length
+ header
+ else
+ pos = s.pos
+ s.scan(/.*/)
+ @tokens << header
+ [:TEXT, s.matched.sub(/\r$/, ''), *token_pos(pos)]
+ end
# --- (at least 3) and nothing else on the line => :RULE
when s.scan(/(-{3,}) *$/) then
[:RULE, s[1].length - 2, *token_pos(pos)]