Sha256: a0d1b922cc8a6702d886eee06d5df9a74e814b351ed95f473a69b3ec5e3f3fac
Contents?: true
Size: 822 Bytes
Versions: 11
Compression:
Stored size: 822 Bytes
Contents
# frozen_string_literal: true require "core" require "refinements/arrays" module Tocer module Transformers # Transforms a Markdown header (plain text) into a table of contents link. class Text using Refinements::Arrays def initialize text, parser: Parsers::Header @parser = parser.new text end def label = parser.content 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 = Core::EMPTY_STRING) = [url, suffix.to_s].compress.join("-") def indented_bullet = prefix_to_spaces.gsub(/\s{2}$/, "- ") def prefix_to_spaces = Array.new(parser.prefix.length, " ").join end end end
Version data entries
11 entries across 11 versions & 1 rubygems