Module: Asciidoctor::Html::List

Defined in:
lib/asciidoctor/html/list.rb

Overview

Helper functions for the list conversion

Class Method Summary collapse

Class Method Details

.convert(node, tag_name = :ol) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/asciidoctor/html/list.rb', line 7

def self.convert(node, tag_name = :ol)
  depth = node.attr "list-depth"
  flat = node.attr? "flat-style"
  inside = node.option? "inside"
  level = depth + 1
  classes = [
    "list",
    "list-#{node.context}",
    ("level-#{level} pseudocode" if flat),
    node.role
  ].compact
  classes << "list-checklist" if node.option?("checklist")
  classes << "list-unmarked" if node.option?("unmarked")
  classes << "list-roomy" if node.option?("roomy")
  classes << "list-inside" if inside
  classes << "list-relative" if node.option?("relative")
  result = [%(<#{tag_name}#{Utils.dyn_id_class_attr_str node, classes.join(" ")}>)]
  node.items.each do |item|
    result << display_list_item(item, inside:)
  end
  result << %(</#{tag_name}> <!-- .level-#{level} -->\n)
  Utils.wrap_id_classes_with_title result.join("\n"), node, node.id, "list-wrapper"
end

.display_list_item(item, inside: false) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/asciidoctor/html/list.rb', line 31

def self.display_list_item(item, inside: false)
  result = []
  inside_mark = %(<span class="li-mark-inside">#{item.attr "mark"} </span>) if inside
  result << %(<li#{Utils.id_class_attr_str item.id, item.role}>)
  result << %(<div class="li-mark">#{item.attr "mark"}</div><div class="li-content">) unless inside
  result << %(<p>#{inside_mark}#{item.text}</p>) unless item.text.empty?
  result << "\n#{item.content}" if item.blocks?
  result << "</div>" unless inside
  result << %(</li>#{Utils.id_class_sel_comment item.id, item.role})
  result.join "\n"
end