lib/kramdown/parser/kramdown/header.rb in kramdown-0.10.0 vs lib/kramdown/parser/kramdown/header.rb in kramdown-0.11.0
- old
+ new
@@ -18,27 +18,28 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#++
#
+require 'kramdown/parser/kramdown/block_boundary'
+
module Kramdown
module Parser
class Kramdown
HEADER_ID=/(?:[ \t]\{#(\w[\w-]*)\})?/
SETEXT_HEADER_START = /^(#{OPT_SPACE}[^ \t].*?)#{HEADER_ID}[ \t]*?\n(-|=)+\s*?\n/
# Parse the Setext header at the current location.
def parse_setext_header
- if @tree.children.last && @tree.children.last.type != :blank
- return false
- end
+ return false if !after_block_boundary?
+
@src.pos += @src.matched_size
text, id, level = @src[1].strip, @src[2], @src[3]
- el = new_block_el(:header, nil, :level => (level == '-' ? 2 : 1), :raw_text => text)
+ el = new_block_el(:header, nil, nil, :level => (level == '-' ? 2 : 1), :raw_text => text)
add_text(text, el)
- el.options[:attr] = {'id' => id} if id
+ el.attr['id'] = id if id
@tree.children << el
true
end
define_parser(:setext_header, SETEXT_HEADER_START)
@@ -46,17 +47,16 @@
ATX_HEADER_START = /^\#{1,6}/
ATX_HEADER_MATCH = /^(\#{1,6})(.+?)\s*?#*#{HEADER_ID}\s*?\n/
# Parse the Atx header at the current location.
def parse_atx_header
- if @tree.children.last && @tree.children.last.type != :blank
- return false
- end
+ return false if !after_block_boundary?
+
result = @src.scan(ATX_HEADER_MATCH)
level, text, id = @src[1], @src[2].strip, @src[3]
- el = new_block_el(:header, nil, :level => level.length, :raw_text => text)
+ el = new_block_el(:header, nil, nil, :level => level.length, :raw_text => text)
add_text(text, el)
- el.options[:attr] = {'id' => id} if id
+ el.attr['id'] = id if id
@tree.children << el
true
end
define_parser(:atx_header, ATX_HEADER_START)