Module: Coradoc::Markdown::Transform::StructuralTransformer

Defined in:
lib/coradoc/markdown/transform/structural_transformer.rb

Class Method Summary collapse

Class Method Details

.transform_bibliography(bib) ⇒ Object



72
73
74
75
76
77
78
# File 'lib/coradoc/markdown/transform/structural_transformer.rb', line 72

def transform_bibliography(bib)
  entries = Array(bib.entries).map { |e| FromCoreModel.transform(e) }
  blocks = []
  blocks << Coradoc::Markdown::Heading.new(level: 2, text: bib.title.to_s) if bib.title
  blocks.concat(entries)
  Coradoc::Markdown::Document.new(id: bib.id, blocks: blocks)
end

.transform_bibliography_entry(entry) ⇒ Object



80
81
82
# File 'lib/coradoc/markdown/transform/structural_transformer.rb', line 80

def transform_bibliography_entry(entry)
  FromCoreModel.transform_bibliography_entry(entry)
end

.transform_document(doc) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/coradoc/markdown/transform/structural_transformer.rb', line 23

def transform_document(doc)
  blocks = Array(doc.children)
           .flat_map { |child| FromCoreModel.flatten_transform_result(FromCoreModel.transform(child)) }
           .compact

  Coradoc::Markdown::Document.new(
    id: doc.id,
    blocks: blocks
  )
end

.transform_generic_element(element) ⇒ Object



61
62
63
64
65
66
67
68
69
70
# File 'lib/coradoc/markdown/transform/structural_transformer.rb', line 61

def transform_generic_element(element)
  blocks = Array(element.children)
           .flat_map { |child| FromCoreModel.flatten_transform_result(FromCoreModel.transform(child)) }
           .compact

  Coradoc::Markdown::Document.new(
    id: element.id,
    blocks: blocks
  )
end

.transform_header(header) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/coradoc/markdown/transform/structural_transformer.rb', line 53

def transform_header(header)
  level = header.level || 1
  Coradoc::Markdown::Heading.new(
    level: level,
    text: header.title.to_s
  )
end

.transform_preamble(preamble) ⇒ Object



47
48
49
50
51
# File 'lib/coradoc/markdown/transform/structural_transformer.rb', line 47

def transform_preamble(preamble)
  Array(preamble.children)
    .flat_map { |child| FromCoreModel.flatten_transform_result(FromCoreModel.transform(child)) }
    .compact
end

.transform_section(section) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/coradoc/markdown/transform/structural_transformer.rb', line 34

def transform_section(section)
  blocks = []
  blocks << Coradoc::Markdown::Heading.new(
    level: section.level || 1,
    text: section.title.to_s
  )
  child_blocks = Array(section.children)
                 .flat_map { |child| FromCoreModel.flatten_transform_result(FromCoreModel.transform(child)) }
                 .compact
  blocks.concat(child_blocks)
  blocks
end

.transform_structural_element(element) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/coradoc/markdown/transform/structural_transformer.rb', line 8

def transform_structural_element(element)
  case element
  when CoreModel::DocumentElement
    transform_document(element)
  when CoreModel::SectionElement
    transform_section(element)
  when CoreModel::PreambleElement
    transform_preamble(element)
  when CoreModel::HeaderElement
    transform_header(element)
  else
    transform_generic_element(element)
  end
end