Module: Coradoc::AsciiDoc::Builder::ListBuilder
- Included in:
- Coradoc::AsciiDoc::Builder
- Defined in:
- lib/coradoc/asciidoc/builder/list_builder.rb
Instance Method Summary collapse
- #build_definition_content(ast) ⇒ Object
- #build_definition_item(ast) ⇒ Object
- #build_definition_list(ast) ⇒ Object
- #build_item_children(attached_ast) ⇒ Object
- #build_list_block(ast) ⇒ Object
- #build_list_item(ast) ⇒ Object
- #build_list_items(items_ast) ⇒ Object
- #build_nested_list(nested_ast) ⇒ Object
- #build_ordered_list(ast) ⇒ Object
- #build_unordered_list(ast) ⇒ Object
- #extract_item_content(ast) ⇒ Object
Instance Method Details
#build_definition_content(ast) ⇒ Object
80 81 82 83 84 85 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 80 def build_definition_content(ast) terms = Array(ast[:terms]).join(', ') definition = ast[:definition] || ast[:contents] "#{terms}: #{definition}" end |
#build_definition_item(ast) ⇒ Object
70 71 72 73 74 75 76 77 78 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 70 def build_definition_item(ast) item_ast = ast[:definition_list_item] || ast Coradoc::CoreModel::ListItem.new( marker: '::', content: build_definition_content(item_ast), children: [] ) end |
#build_definition_list(ast) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 40 def build_definition_list(ast) items = Array(ast[:definition_list]).map do |item| build_definition_item(item) end Coradoc::CoreModel::ListBlock.new( marker_type: 'definition', marker_level: 1, items: items, attributes: build_attributes_private(ast[:attribute_list]) ) end |
#build_item_children(attached_ast) ⇒ Object
101 102 103 104 105 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 101 def build_item_children(attached_ast) return [] unless attached_ast Array(attached_ast).map { |child| build_element(child) }.compact end |
#build_list_block(ast) ⇒ Object
7 8 9 10 11 12 13 14 15 16 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 7 def build_list_block(ast) Coradoc::CoreModel::ListBlock.new( marker_type: detect_marker_type(ast), marker_level: detect_marker_level(ast), items: build_list_items(ast[:items] || ast[:list_items]), title: ast[:title], id: ast[:id], attributes: build_attributes_private(ast[:attribute_list]) ) end |
#build_list_item(ast) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 59 def build_list_item(ast) item_ast = ast[:list_item] || ast Coradoc::CoreModel::ListItem.new( marker: item_ast[:marker]&.to_s, content: extract_item_content(item_ast), nested_list: build_nested_list(item_ast[:nested]), children: build_item_children(item_ast[:attached]) ) end |
#build_list_items(items_ast) ⇒ Object
53 54 55 56 57 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 53 def build_list_items(items_ast) return [] unless items_ast Array(items_ast).map { |item| build_list_item(item) } end |
#build_nested_list(nested_ast) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 87 def build_nested_list(nested_ast) return nil unless nested_ast if nested_ast.is_a?(Array) Coradoc::CoreModel::ListBlock.new( marker_type: 'unordered', marker_level: 2, items: nested_ast.map { |item| build_list_item(item) } ) else build_element(nested_ast) end end |
#build_ordered_list(ast) ⇒ Object
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 29 def build_ordered_list(ast) items = Array(ast[:ordered]).map { |item| build_list_item(item) } Coradoc::CoreModel::ListBlock.new( marker_type: 'ordered', marker_level: 1, items: items, attributes: build_attributes_private(ast[:attribute_list]) ) end |
#build_unordered_list(ast) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 18 def build_unordered_list(ast) items = Array(ast[:unordered]).map { |item| build_list_item(item) } Coradoc::CoreModel::ListBlock.new( marker_type: 'unordered', marker_level: 1, items: items, attributes: build_attributes_private(ast[:attribute_list]) ) end |
#extract_item_content(ast) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/coradoc/asciidoc/builder/list_builder.rb', line 107 def extract_item_content(ast) if ast[:text] case ast[:text] when String ast[:text] when Array ast[:text].map(&:to_s).join else ast[:text].to_s end elsif ast[:content] ast[:content].to_s else '' end end |