class DocTemplate::Tags::InsetTag

Constants

STYLES_REGEXP
TAG_NAME

Public Instance Methods

parse(node, opts = {}) click to toggle source
# File lib/doc_template/tags/inset_tag.rb, line 12
def parse(node, opts = {})
  nodes = block_nodes(node) { |n| preserve_styles n, opts }
  content = parse_nested nodes.map(&:to_html).join, opts
  nodes.each(&:remove)
  @content =
    if gdoc?(opts)
      %(#{content}<p class="do-not-strip"></p>)
    else
      %(<div class="o-ld-inset">#{content}</div>)
    end
  replace_tag node
  self
end

Private Instance Methods

add_css_class(el, *classes) click to toggle source
# File lib/doc_template/tags/inset_tag.rb, line 37
def add_css_class(el, *classes)
  existing = (el[:class] || '').split(/\s+/)
  el[:class] = existing.concat(classes).uniq.join(' ')
end
preserve_styles(node, opts) click to toggle source
# File lib/doc_template/tags/inset_tag.rb, line 28
def preserve_styles(node, opts)
  add_css_class(node, 'o-ld-inset') if gdoc?(opts)
  node.children.each do |el|
    el['class'] = "#{el['class']} text-bold" if el['style'] =~ STYLES_REGEXP[:bold]
    el['class'] = "#{el['class']} text-italic" if el['style'] =~ STYLES_REGEXP[:italic]
  end
  node
end