class Tocer::Transformers::Link
Transforms a Markdown header (embedded link) into a table of contents link.
Public Class Methods
new(text, parser: Parsers::Header)
click to toggle source
# File lib/tocer/transformers/link.rb, line 11 def initialize text, parser: Parsers::Header @parser = parser.new text end
Public Instance Methods
call(url_suffix: "")
click to toggle source
# File lib/tocer/transformers/link.rb, line 19 def call(url_suffix: "") = "#{indented_bullet}[#{label}](##{computed_url url_suffix})" private attr_reader :parser def computed_url(suffix = "") = [url, suffix.to_s].compress.join("-") def embedded_link = "[#{embedded_link_label}](#{embedded_link_url})" def embedded_link_label = parser.content[/\[(.*)\]/, 1] def embedded_link_url = parser.content[/\((.*)\)/, 1] def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length, " ").join
computed_url(suffix = "")
click to toggle source
# File lib/tocer/transformers/link.rb, line 25 def computed_url(suffix = "") = [url, suffix.to_s].compress.join("-") def embedded_link = "[#{embedded_link_label}](#{embedded_link_url})" def embedded_link_label = parser.content[/\[(.*)\]/, 1] def embedded_link_url = parser.content[/\((.*)\)/, 1] def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length, " ").join
embedded_link(= "[
click to toggle source
# File lib/tocer/transformers/link.rb, line 27 def embedded_link = "[#{embedded_link_label}](#{embedded_link_url})" def embedded_link_label = parser.content[/\[(.*)\]/, 1] def embedded_link_url = parser.content[/\((.*)\)/, 1] def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length, " ").join end
embedded_link_label(= parser.content[/\[(.*)\]/, 1])
click to toggle source
# File lib/tocer/transformers/link.rb, line 29 def embedded_link_label = parser.content[/\[(.*)\]/, 1] def embedded_link_url = parser.content[/\((.*)\)/, 1] def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length, " ").join end end
embedded_link_url(= parser.content[/\((.*)\)/, 1])
click to toggle source
# File lib/tocer/transformers/link.rb, line 31 def embedded_link_url = parser.content[/\((.*)\)/, 1] def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length, " ").join end end end
indented_bullet(= prefix_to_spaces.gsub(/\s{2}$/, "- "))
click to toggle source
# File lib/tocer/transformers/link.rb, line 33 def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length, " ").join end end
label(= parser.content.gsub(embedded_link, embedded_link_label))
click to toggle source
# File lib/tocer/transformers/link.rb, line 15 def label = parser.content.gsub(embedded_link, embedded_link_label) def url = label.downcase.gsub(/\s/, "-").gsub(/[^\w\-]+/, "") def call(url_suffix: "") = "#{indented_bullet}[#{label}](##{computed_url url_suffix})" private attr_reader :parser def computed_url(suffix = "") = [url, suffix.to_s].compress.join("-") def embedded_link = "[#{embedded_link_label}](#{embedded_link_url})" def embedded_link_label = parser.content[/\[(.*)\]/, 1] def embedded_link_url = parser.content[/\((.*)\)/, 1] def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length,
prefix_to_spaces(= Array.new(parser.prefix.length, " ").join)
click to toggle source
# File lib/tocer/transformers/link.rb, line 35 def prefix_to_spaces = Array.new(parser.prefix.length, " ").join end
url(= label.downcase.gsub(/\s/, "-").gsub(/[^\w\-]+/, ""))
click to toggle source
# File lib/tocer/transformers/link.rb, line 17 def url = label.downcase.gsub(/\s/, "-").gsub(/[^\w\-]+/, "") def call(url_suffix: "") = "#{indented_bullet}[#{label}](##{computed_url url_suffix})" private attr_reader :parser def computed_url(suffix = "") = [url, suffix.to_s].compress.join("-") def embedded_link = "[#{embedded_link_label}](#{embedded_link_url})" def embedded_link_label = parser.content[/\[(.*)\]/, 1] def embedded_link_url = parser.content[/\((.*)\)/, 1] def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length, " ")