class Playbook::HTMLBlockCode
def header(title, level)
def header(title, level) if level == 7 @headers ||= [] permalink = title.gsub(/\W+/, "-") if @headers.include?(permalink) permalink += "_1" loop do break unless @headers.include?(permalink) permalink.gsub!(/\_(\d+)$/, "_#{Regexp.last_match(1).to_i + 1}") end end @headers << permalink %(\n<a name="#{permalink}" class="markdown-header-anchor anchor" href="##{permalink}"><span class="fa fa-link anchor-icon"></span></a><h#{level} id=\"#{permalink}\">#{title}</h#{level}>\n) else %(\n<h#{level}>#{title}</h#{level}>\n) end end
def image(link, title, alt_text)
def image(link, title, alt_text) image_tag(link, title: title, alt: alt_text, class: "imageloader lazyload") end
def list(contents, _list_type)
def list(contents, _list_type) @contents = contents @list_items = contents.split("\n") if @list_items[0].include?("[do]") || @list_items[0].include?("[dont]") @element_items = [] @list_items.each do |item, _index| item.gsub(%r{\<li>(.*)\</li>}) do @element_items.push(Regexp.last_match(1)) end end # Doing both because we could have either/both # clean up @dont_items, @trash_items_dont = @element_items.partition { |x, _i| x.include? "[dont]" } @do_items, @trash_items_do = @element_items.partition { |x, _i| x.include? "[do]" } @do_list = [] @do_items.each do |item, _index| @do_list.push("<li>#{item.sub('[do] ', '')}</li>") end @do_list = "<ul class='uix-ruleset do-list'>#{@do_list.join('')}</ul>" @dont_list = [] @dont_items.each do |item, _index| @dont_list.push("<li>#{item.sub('[dont] ', '')}</li>") end @dont_list = "<ul class='uix-ruleset dont-list'>#{@dont_list.join('')}</ul>" "<div class='row uix-ruleset-block'><div class='col-sm-6'>#{@do_list}</div><div class='col-sm-6'>#{@dont_list}</div></div>" else @contents end end
def preprocess(full_document)
def preprocess(full_document) full_document.gsub(/\[component (.*)\]/) do @string = Regexp.last_match(1) @default_height = "160" @attr = ["", @default_height] # Set src from attributes @string.gsub(/src="(.*?)"/) do @attr[0] = Regexp.last_match(1) end # Set height from attributes @string.gsub(/height="(.*?)"/) do @attr[1] = (Regexp.last_match(1) || @default_height) end %(\n<div class="uix-component-frame"><iframe scrolling="no" id="component-preview" src="#{@attr[0]}" width="100%" height="#{@attr[1]}"></iframe><a href="#{@attr[0]}" target="_blank" class="uix-component-link">View component</a></div>\n) end end