Module: Coradoc::Markdown::Transform::BlockTransformer
- Defined in:
- lib/coradoc/markdown/transform/block_transformer.rb
Class Method Summary collapse
- .markdown_delimiter_to_semantic(delimiter) ⇒ Object
- .transform_annotation_block(annotation) ⇒ Object
- .transform_block(block) ⇒ Object
- .transform_blockquote(block) ⇒ Object
- .transform_code_block(block) ⇒ Object
- .transform_comment_block(block) ⇒ Object
-
.transform_content_node(element) ⇒ Object
(also: transform_inline_content)
Transform a content node that could be inline text, an inline element, or a block-level element (e.g. a SourceBlock inside a list item via AsciiDoc continuation).
- .transform_example_block(block) ⇒ Object
- .transform_horizontal_rule(_block) ⇒ Object
- .transform_open_block(block) ⇒ Object
- .transform_paragraph(block) ⇒ Object
- .transform_pass_block(block) ⇒ Object
- .transform_reviewer_block(block) ⇒ Object
- .transform_sidebar_block(block) ⇒ Object
- .transform_verse_block(block) ⇒ Object
Class Method Details
.markdown_delimiter_to_semantic(delimiter) ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 71 def markdown_delimiter_to_semantic(delimiter) case delimiter when '```', '~' then :source_code when '>' then :quote when '---', '***', '___' then :horizontal_rule when '++++' then :pass end end |
.transform_annotation_block(annotation) ⇒ Object
126 127 128 129 130 131 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 126 def transform_annotation_block(annotation) text = annotation.flat_text Coradoc::Markdown::Paragraph.new( text: "**#{annotation.annotation_type}:** #{text}" ) end |
.transform_block(block) ⇒ 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 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 8 def transform_block(block) semantic = block.resolve_semantic_type || markdown_delimiter_to_semantic(block.delimiter_type) case semantic when :paragraph transform_paragraph(block) when :comment transform_comment_block(block) when :source_code, :listing, :literal transform_code_block(block) when :quote transform_blockquote(block) when :verse transform_verse_block(block) when :horizontal_rule transform_horizontal_rule(block) when :pass transform_pass_block(block) when :example transform_example_block(block) when :sidebar (block) when :open transform_open_block(block) when :reviewer transform_reviewer_block(block) else transform_paragraph(block) end end |
.transform_blockquote(block) ⇒ Object
87 88 89 90 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 87 def transform_blockquote(block) content = block.flat_text Coradoc::Markdown::Blockquote.new(content: content) end |
.transform_code_block(block) ⇒ Object
80 81 82 83 84 85 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 80 def transform_code_block(block) Coradoc::Markdown::CodeBlock.new( code: block.content.to_s, language: block.language ) end |
.transform_comment_block(block) ⇒ Object
133 134 135 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 133 def transform_comment_block(block) Coradoc::Markdown::Extension.comment(block.content.to_s) end |
.transform_content_node(element) ⇒ Object Also known as: transform_inline_content
Transform a content node that could be inline text, an inline element, or a block-level element (e.g. a SourceBlock inside a list item via AsciiDoc continuation).
53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 53 def transform_content_node(element) case element when CoreModel::InlineElement InlineTransformer.transform_inline(element) when CoreModel::TextContent element.text when CoreModel::Base FromCoreModel.transform(element) when String element else element.to_s end end |
.transform_example_block(block) ⇒ Object
100 101 102 103 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 100 def transform_example_block(block) content = block.flat_text Coradoc::Markdown::Blockquote.new(content: content) end |
.transform_horizontal_rule(_block) ⇒ Object
96 97 98 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 96 def transform_horizontal_rule(_block) Coradoc::Markdown::HorizontalRule.new end |
.transform_open_block(block) ⇒ Object
110 111 112 113 114 115 116 117 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 110 def transform_open_block(block) if block.children && !block.children.empty? block.children.map { |c| FromCoreModel.transform(c) } else content = block.flat_text Coradoc::Markdown::Paragraph.new(text: content) end end |
.transform_paragraph(block) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 39 def transform_paragraph(block) content = block.renderable_content has_structured = content.is_a?(Array) && content.any? { |c| !c.is_a?(CoreModel::TextContent) } if has_structured children = content.map { |c| transform_content_node(c) } Coradoc::Markdown::Paragraph.new(text: block.flat_text, children: children) else Coradoc::Markdown::Paragraph.new(text: block.flat_text) end end |
.transform_pass_block(block) ⇒ Object
137 138 139 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 137 def transform_pass_block(block) Coradoc::Markdown::Extension.nomarkdown(block.content.to_s) end |
.transform_reviewer_block(block) ⇒ Object
119 120 121 122 123 124 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 119 def transform_reviewer_block(block) text = block.flat_text Coradoc::Markdown::Paragraph.new( text: "**#{block.annotation_type}:** #{text}" ) end |
.transform_sidebar_block(block) ⇒ Object
105 106 107 108 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 105 def (block) content = block.flat_text Coradoc::Markdown::Paragraph.new(text: content) end |
.transform_verse_block(block) ⇒ Object
92 93 94 |
# File 'lib/coradoc/markdown/transform/block_transformer.rb', line 92 def transform_verse_block(block) Coradoc::Markdown::Blockquote.new(content: block.flat_text) end |