Class: DocTemplate::Tags::TablePreserveAlignmentTag

Inherits:
BaseTag
  • Object
show all
Defined in:
lib/doc_template/tags/table_preserve_alignment_tag.rb

Constant Summary collapse

STYLE_RE =
/text-align:(left|center|right)/i.freeze
TAG_NAME =
'table-preserve-alignment'

Constants inherited from BaseTag

BaseTag::SOFT_RETURN_RE, BaseTag::UNICODE_SPACES_RE

Instance Attribute Summary

Attributes inherited from BaseTag

#anchor, #content

Instance Method Summary collapse

Methods inherited from BaseTag

#before_tag, #check_tag_soft_return, #content_until_break, #content_until_materials, #ela2?, #ela6?, #gdoc?, #include_break?, #include_break_for?, #materials, parse, #parse_nested, #parse_template, #placeholder, #placeholder_id, #render, #replace_tag, #tag_data, tag_with_html_regexp, #template_name, #template_path, template_path_for

Instance Method Details

#parse(node, _options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/doc_template/tags/table_preserve_alignment_tag.rb', line 9

def parse(node, _options = {})
  if (table = find_table node)
    # inside cells for each `p` with `text-align` css param we add specific class
    table.xpath('.//p').each do |el|
      if (m = STYLE_RE.match el['style'])
        el['style'] = el['style'].sub STYLE_RE, ''
        el['class'] = "text-#{m[1]}"
      end
    end

    @content = table.to_s
    replace_tag table
  end

  node.remove

  self
end