Module: Metanorma::Mirror::Handlers::Table
- Defined in:
- lib/metanorma/mirror/handlers/table.rb
Class Method Summary collapse
- .build_cell(cell, context:) ⇒ Object
- .call(element, context:) ⇒ Object
- .extract_rows(table_section, context:) ⇒ Object
- .table_attrs(element) ⇒ Object
Class Method Details
.build_cell(cell, context:) ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/metanorma/mirror/handlers/table.rb', line 53 def self.build_cell(cell, context:) attrs = {} attrs[:colspan] = SafeAttr.read(cell, :colspan) attrs[:rowspan] = SafeAttr.read(cell, :rowspan) attrs[:align] = SafeAttr.read(cell, :align) attrs[:valign] = SafeAttr.read(cell, :valign) content = Inline.extract_inline(cell, context:) Handlers.build_node("table_cell", attrs: attrs.compact, content: content) end |
.call(element, context:) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/metanorma/mirror/handlers/table.rb', line 7 def self.call(element, context:) attrs = table_attrs(element) content = [] thead = SafeAttr.read(element, :thead) if thead rows = extract_rows(thead, context:) unless rows.empty? content << Handlers.build_node("table_head", content: rows) end end tbody = SafeAttr.read(element, :tbody) if tbody rows = extract_rows(tbody, context:) unless rows.empty? content << Handlers.build_node("table_body", content: rows) end end tfoot = SafeAttr.read(element, :tfoot) if tfoot rows = extract_rows(tfoot, context:) unless rows.empty? content << Handlers.build_node("table_foot", content: rows) end end Handlers.build_node("table", attrs: attrs, content: content) end |
.extract_rows(table_section, context:) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/metanorma/mirror/handlers/table.rb', line 41 def self.extract_rows(table_section, context:) Array(table_section.tr).map do |tr| cells = Array(tr.td).map { |td| build_cell(td, context:) } Array(tr.th).each { |th| cells << build_cell(th, context:) } row_attrs = {} row_attrs[:id] = SafeAttr.read(tr, :id) Handlers.build_node("table_row", attrs: row_attrs.compact, content: cells) end end |
.table_attrs(element) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/metanorma/mirror/handlers/table.rb', line 66 def self.table_attrs(element) attrs = {} attrs[:id] = SafeAttr.read(element, :id) attrs[:width] = SafeAttr.read(element, :width) attrs[:align] = SafeAttr.read(element, :align) attrs[:unnumbered] = SafeAttr.read(element, :unnumbered) attrs[:semx_id] = SafeAttr.read(element, :semx_id) name = SafeAttr.read(element, :name) attrs[:title] = Handlers.extract_name_text(name) if name attrs.compact end |