Module: IsoDoc::Function::Lists
- Included in:
- Common
- Defined in:
- lib/isodoc/function/lists.rb
Constant Summary collapse
- OL_STYLE =
{ arabic: "1", roman: "i", alphabet: "a", roman_upper: "I", alphabet_upper: "A", }.freeze
Instance Method Summary collapse
- #dl_attrs(node) ⇒ Object
- #dl_parse(node, out) ⇒ Object
- #dl_parse1(dlist, dterm, ddef) ⇒ Object
- #dl_parse_notes(node, out) ⇒ Object
- #dt_dd?(node) ⇒ Boolean
- #dt_parse(dterm, term) ⇒ Object
- #fmt_ul_parse(elem, fmt_ul, out) ⇒ Object
- #li_checkbox(node) ⇒ Object
- #li_parse(node, out) ⇒ Object
- #list_title_parse(node, out) ⇒ Object
- #ol_attrs(node) ⇒ Object
- #ol_parse(node, out) ⇒ Object
- #ol_style(type) ⇒ Object
- #ul_attrs(node) ⇒ Object
- #ul_parse(node, out) ⇒ Object
Instance Method Details
#dl_attrs(node) ⇒ Object
98 99 100 |
# File 'lib/isodoc/function/lists.rb', line 98 def dl_attrs(node) attr_code(id: node["id"], style: keep_style(node), class: node["class"]) end |
#dl_parse(node, out) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/isodoc/function/lists.rb', line 102 def dl_parse(node, out) out.div(**attr_code(class: "figdl")) do |div| list_title_parse(node, div) div.dl(**dl_attrs(node)) do |v| node.elements.select { |n| dt_dd? n }.each_slice(2) do |dt, dd| dl_parse1(v, dt, dd) end end dl_parse_notes(node, div) end end |
#dl_parse1(dlist, dterm, ddef) ⇒ Object
119 120 121 122 123 124 125 126 |
# File 'lib/isodoc/function/lists.rb', line 119 def dl_parse1(dlist, dterm, ddef) dlist.dt(**attr_code(id: dterm["id"])) do |term| dt_parse(dterm, term) end dlist.dd(**attr_code(id: ddef["id"])) do |listitem| ddef.children.each { |n| parse(n, listitem) } end end |
#dl_parse_notes(node, out) ⇒ Object
114 115 116 117 |
# File 'lib/isodoc/function/lists.rb', line 114 def dl_parse_notes(node, out) node.elements.reject { |n| dt_dd?(n) || n.name == "fmt-name" } .each { |n| parse(n, out) } end |
#dt_dd?(node) ⇒ Boolean
94 95 96 |
# File 'lib/isodoc/function/lists.rb', line 94 def dt_dd?(node) %w{dt dd}.include? node.name end |
#dt_parse(dterm, term) ⇒ Object
84 85 86 87 88 89 90 91 92 |
# File 'lib/isodoc/function/lists.rb', line 84 def dt_parse(dterm, term) if dterm.elements.empty? term.p do |p| dterm.children.each { |n| parse(n, p) } end else dterm.children.each { |n| parse(n, term) } end end |
#fmt_ul_parse(elem, fmt_ul, out) ⇒ Object
25 26 27 28 29 30 |
# File 'lib/isodoc/function/lists.rb', line 25 def fmt_ul_parse(elem, fmt_ul, out) children_parse(fmt_ul, out) output_elem = out.parent.elements.last output_elem.parent["id"] = elem["id"] s = keep_style(elem) and output_elem.parent["style"] = s end |
#li_checkbox(node) ⇒ Object
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/isodoc/function/lists.rb', line 63 def li_checkbox(node) if node["uncheckedcheckbox"] == "true" '<span class="zzMoveToFollowing">' \ '<input type="checkbox" checked="checked"/></span>' elsif node["checkedcheckbox"] == "true" '<span class="zzMoveToFollowing">' \ '<input type="checkbox"/></span>' else "" end end |
#li_parse(node, out) ⇒ Object
74 75 76 77 78 79 80 81 82 |
# File 'lib/isodoc/function/lists.rb', line 74 def li_parse(node, out) out.li(**attr_code(id: node["id"])) do |li| li << li_checkbox(node) node.children.each do |n| n.name == "fmt-name" and next parse(n, li) end end end |
#list_title_parse(node, out) ⇒ Object
4 5 6 7 8 9 |
# File 'lib/isodoc/function/lists.rb', line 4 def list_title_parse(node, out) name = node.at(ns("./fmt-name")) or return out.p class: "ListTitle" do |p| name.children&.each { |n| parse(n, p) } end end |
#ol_attrs(node) ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/isodoc/function/lists.rb', line 45 def ol_attrs(node) { # type: node["type"] ? ol_style(node["type"].to_sym) : ol_depth(node), type: ol_style(node["type"]&.to_sym), start: node["start"], id: node["id"], style: keep_style(node) } end |
#ol_parse(node, out) ⇒ Object
53 54 55 56 57 58 59 60 61 |
# File 'lib/isodoc/function/lists.rb', line 53 def ol_parse(node, out) out.div(**attr_code(class: "ol_wrap")) do |div| n = node.at(ns("./fmt-ol")) and return fmt_ul_parse(node, n, out) list_title_parse(node, div) div.ol(**attr_code(ol_attrs(node))) do |ol| node.children.each { |n| n.name == "fmt-name" or parse(n, ol) } end end end |
#ol_style(type) ⇒ Object
40 41 42 43 |
# File 'lib/isodoc/function/lists.rb', line 40 def ol_style(type) type ||= :alphabet OL_STYLE[type.to_sym] end |
#ul_attrs(node) ⇒ Object
11 12 13 |
# File 'lib/isodoc/function/lists.rb', line 11 def ul_attrs(node) { id: node["id"], style: keep_style(node) } end |
#ul_parse(node, out) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/isodoc/function/lists.rb', line 15 def ul_parse(node, out) out.div(**attr_code(class: "ul_wrap")) do |div| n = node.at(ns("./fmt-ul")) and return fmt_ul_parse(node, n, out) list_title_parse(node, div) div.ul(**attr_code(ul_attrs(node))) do |ul| node.children.each { |n| n.name == "fmt-name" or parse(n, ul) } end end end |