Module: IsoDoc::JIS::BaseConvert

Included in:
HtmlConvert, WordConvert
Defined in:
lib/isodoc/jis/base_convert.rb

Instance Method Summary collapse

Instance Method Details

#admonition_name_parse(_node, div, name) ⇒ Object



22
23
24
25
26
27
# File 'lib/isodoc/jis/base_convert.rb', line 22

def admonition_name_parse(_node, div, name)
  div.span class: "note_label" do |s|
    name.children.each { |n| parse(n, s) }
    s << " &#x2014; "
  end
end

#annex(node, out) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/isodoc/jis/base_convert.rb', line 34

def annex(node, out)
  node["commentary"] = "true" and return commentary(node, out)
  amd?(isoxml) and @suppressheadingnumbers = @oldsuppressheadingnumbers
  page_break(out)
  out.div **attr_code(annex_attrs(node)) do |s|
    node.elements.each do |c1|
      if c1.name == "title" then annex_name(node, c1, s)
      else parse(c1, s) end
    end
  end
  amd?(isoxml) and @suppressheadingnumbers = true
end

#commentary(node, out) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/isodoc/jis/base_convert.rb', line 47

def commentary(node, out)
  page_break(out)
  out.div **attr_code(annex_attrs(node)) do |s|
    node.elements.each do |c1|
      if c1.name == "title" then annex_name(node, c1, s)
      else parse(c1, s)
      end
    end
  end
end

#full_row(cols, elem) ⇒ Object



87
88
89
# File 'lib/isodoc/jis/base_convert.rb', line 87

def full_row(cols, elem)
  "<tr><td border='0' colspan='#{cols}'>#{elem}</td></tr>"
end

#make_tr_attr(cell, row, totalrows, header, bordered) ⇒ Object



29
30
31
32
# File 'lib/isodoc/jis/base_convert.rb', line 29

def make_tr_attr(cell, row, totalrows, header, bordered)
  cell["border"] == "0" and bordered = false
  super
end

#table_cols_count(node) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/isodoc/jis/base_convert.rb', line 79

def table_cols_count(node)
  cols = 0
  node.at(ns(".//tr")).xpath(ns("./td | ./th")).each do |x|
    cols += x["colspan"]&.to_i || 1
  end
  cols
end

#table_name(name, thead, cols) ⇒ Object



91
92
93
94
95
96
# File 'lib/isodoc/jis/base_convert.rb', line 91

def table_name(name, thead, cols)
  name or return
  thead.children.first.previous =
    full_row(cols, "<p class='TableTitle' style='text-align:center;'> " \
                   "#{name.remove.children.to_xml}</p>")
end

#table_note_cleanup(docxml) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/isodoc/jis/base_convert.rb', line 98

def table_note_cleanup(docxml)
  tn = ::IsoDoc::Function::Cleanup::TABLENOTE_CSS
  docxml.xpath("//table[dl or #{tn} or p[@class = 'dl']]").each do |t|
    tfoot = table_get_or_make_tfoot(t)
    insert_here = new_fullcolspan_row(t, tfoot)
    t.xpath("dl | p[@class = 'ListTitle'] | #{tn} | " \
            "p[@class = 'dl']")
      .each do |d|
      d.parent = insert_here
    end
  end
end

#table_parse(node, out) ⇒ Object



58
59
60
61
62
63
64
# File 'lib/isodoc/jis/base_convert.rb', line 58

def table_parse(node, out)
  cols = table_cols_count(node)
  name = node.at(ns("./name"))
  thead = table_thead_pt(node, name)
  table_name(name, thead, cols)
  super
end

#table_parse_tail(node, out) ⇒ Object



66
67
68
69
70
71
# File 'lib/isodoc/jis/base_convert.rb', line 66

def table_parse_tail(node, out)
  node.xpath(ns("./p[@class = 'ListTitle' or @class = 'dl']"))
    .each { |p| parse(p, out) }
  node.xpath(ns("./source")).each { |n| parse(n, out) }
  node.xpath(ns("./note")).each { |n| parse(n, out) }
end

#table_thead_pt(node, name) ⇒ Object



73
74
75
76
77
# File 'lib/isodoc/jis/base_convert.rb', line 73

def table_thead_pt(node, name)
  node.at(ns("./thead")) ||
    name&.after("<thead> </thead>")&.next ||
    node.elements.first.before("<thead> </thead>").previous
end

#termnote_parse(node, out) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/isodoc/jis/base_convert.rb', line 7

def termnote_parse(node, out)
  name = node.at(ns("./name"))&.remove
  out.div **note_attrs(node) do |div|
    div.p do |p|
      if name
        p.span class: "note_label" do |s|
          name.children.each { |n| parse(n, s) }
        end
        p << termnote_delim
      end
      para_then_remainder(node.first_element_child, node, p, div)
    end
  end
end