class SixArm::Markdown::Headline

Attributes

anchor[RW]
level[RW]
text[RW]

Public Class Methods

new( text: nil, anchor: nil, level: nil, link: nil ) click to toggle source
# File lib/sixarm_ruby_markdown/sixarm/markdown/headline.rb, line 15
def initialize(
  text: nil,
  anchor: nil,
  level: nil,
  link: nil
)
  raise ArgumentError if !text.kind_of?(String)
  @text = text
  @anchor = anchor || self.class.text_to_anchor(text)
  @level = level
  @link = link
end
parse_line(line) click to toggle source
# File lib/sixarm_ruby_markdown/sixarm/markdown/headline.rb, line 40
def self.parse_line(line)
  level = parse_line_level(line)
  text = trim_line(line)
  # TODO Add parser for anchor
  # TODO Add parser for Unicode normalization
  return SixArm::Markdown::Headline.new(text: text, level: level)
end
parse_line_level(line) click to toggle source
# File lib/sixarm_ruby_markdown/sixarm/markdown/headline.rb, line 48
def self.parse_line_level(line)
  return line =~/^\s*([#=]+)/ ? $1.length : nil
end
text_to_anchor(text) click to toggle source
# File lib/sixarm_ruby_markdown/sixarm/markdown/headline.rb, line 56
def self.text_to_anchor(text)
  text.downcase.gsub(/\W+/,'-').gsub(/^-+|-+$/,'')
end
trim_line(line) click to toggle source
# File lib/sixarm_ruby_markdown/sixarm/markdown/headline.rb, line 52
def self.trim_line(line)
  line.sub(/^\s*[#=]+\s+/, '').sub(/\s+[#=]+\s*$/, '')
end