Class: Metanorma::Cc::Converter

Inherits:
Generic::Converter
  • Object
show all
Defined in:
lib/metanorma/cc/log.rb,
lib/metanorma/cc/converter.rb

Constant Summary collapse

CC_LOG_MESSAGES =
{
  # rubocop:disable Naming/VariableNumber
  "CC_1": { category: "Style",
            error: "Only one Symbols and Abbreviated Terms section in the standard",
            severity: 2 },
  "CC_2": { category: "Style",
            error: "Symbols and Abbreviated Terms can only contain a definition list",
            severity: 2 },
  "CC_3": { category: "Style",
            error: "(section sequencing) %s",
            severity: 2 },
  "CC_4": { category: "Style",
            error: "Document must contain at least one clause",
            severity: 2 },
  "CC_5": { category: "Style",
            error: "Document must contain clause after Terms and Definitions",
            severity: 2 },
  "CC_6": { category: "Style",
            error: "Scope must occur before Terms and Definitions",
            severity: 2 },
  "CC_8": { category: "Style",
            error: "Only annexes and references can follow clauses",
            severity: 2 },
  "CC_9": { category: "Style",
            error: "Document must include (references) Normative References",
            severity: 2 },
  "CC_11": { category: "Style",
             error: "Final section must be (references) Bibliography",
             severity: 2 },
  "CC_12": { category: "Style",
             error: "There are sections after the final Bibliography",
             severity: 2 },

}.freeze

Instance Method Summary collapse

Instance Method Details

#configurationObject



14
15
16
# File 'lib/metanorma/cc/converter.rb', line 14

def configuration
  Metanorma::Cc.configuration
end

#doc_converter(node) ⇒ Object



39
40
41
# File 'lib/metanorma/cc/converter.rb', line 39

def doc_converter(node)
  IsoDoc::Cc::WordConvert.new(doc_extract_attributes(node))
end

#html_converter(node) ⇒ Object



29
30
31
# File 'lib/metanorma/cc/converter.rb', line 29

def html_converter(node)
  IsoDoc::Cc::HtmlConvert.new(html_extract_attributes(node))
end

#log_messagesObject

rubocop:enable Naming/VariableNumber



40
41
42
# File 'lib/metanorma/cc/log.rb', line 40

def log_messages
  super.merge(CC_LOG_MESSAGES)
end

#outputs(node, ret) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/metanorma/cc/converter.rb', line 18

def outputs(node, ret)
  File.open("#{@filename}.xml", "w:UTF-8") { |f| f.write(ret) }
  presentation_xml_converter(node).convert("#{@filename}.xml")
  html_converter(node).convert("#{@filename}.presentation.xml",
                               nil, false, "#{@filename}.html")
  doc_converter(node).convert("#{@filename}.presentation.xml",
                              nil, false, "#{@filename}.doc")
  pdf_converter(node)&.convert("#{@filename}.presentation.xml",
                               nil, false, "#{@filename}.pdf")
end

#pdf_converter(node) ⇒ Object



33
34
35
36
37
# File 'lib/metanorma/cc/converter.rb', line 33

def pdf_converter(node)
  return if node.attr("no-pdf")

  IsoDoc::Cc::PdfConvert.new(pdf_extract_attributes(node))
end

#presentation_xml_converter(node) ⇒ Object



43
44
45
46
47
# File 'lib/metanorma/cc/converter.rb', line 43

def presentation_xml_converter(node)
  IsoDoc::Cc::PresentationXMLConvert
    .new(doc_extract_attributes(node)
    .merge(output_formats: ::Metanorma::Cc::Processor.new.output_formats))
end