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
    
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, "  ")