Module: Coradoc::AsciiDoc::Transformer::TextRules
- Defined in:
- lib/coradoc/asciidoc/transformer/text_rules.rb
Overview
Module containing text and paragraph transformation rules
Class Method Summary collapse
Class Method Details
.apply(transformer_class) ⇒ Object
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/coradoc/asciidoc/transformer/text_rules.rb', line 8 def self.apply(transformer_class) transformer_class.class_eval do # Text Model rule(text: simple(:text)) do Model::TextElement.new(content: text.to_s) end rule(text_string: subtree(:text_string)) do text_string.to_s end rule(text: simple(:text), line_break: simple(:line_break)) do Model::TextElement.new(content: text.to_s, line_break: line_break) end rule(text: sequence(:text), line_break: simple(:line_break)) do Model::TextElement.new(content: text, line_break: line_break) end rule(id: simple(:id), text: simple(:text)) do Model::TextElement.new(content: text.to_s, id: id.to_s) end rule(text: sequence(:text)) do Model::TextElement.new(content: text) end rule( id: simple(:id), text: simple(:text), line_break: simple(:line_break) ) do Model::TextElement.new( content: text.to_s, id: id.to_s, line_break: line_break ) end rule( id: simple(:id), text: sequence(:text), line_break: simple(:line_break) ) do Model::TextElement.new( content: text, id: id.to_s, line_break: line_break ) end # Line break rule(line_break: simple(:line_break)) do Model::LineBreak.new(line_break:) end # Unparsed text rule(unparsed: simple(:text)) do text.to_s end # Paragraph rule(paragraph: subtree(:paragraph)) do lines = paragraph[:lines] || [] content = lines.map do |line| if line.is_a?(Hash) && line.key?(:text) text_content = line[:text] line_break = line[:line_break] transformed_text = if text_content.is_a?(Array) text_content.map do |item| if item.is_a?(Hash) Transformer.new.apply(item) else item end end else text_content end Model::TextElement.new(content: transformed_text, line_break: line_break) else line end end Model::Paragraph.new( content: content, id: paragraph[:id], attributes: paragraph[:attribute_list], title: paragraph[:title] ) end end end |