metanorma-standoc 2.0.1 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/metanorma/standoc/biblio.rng +2 -2
 - data/lib/metanorma/standoc/cleanup_text.rb +0 -22
 - data/lib/metanorma/standoc/converter.rb +1 -0
 - data/lib/metanorma/standoc/isodoc.rng +69 -1
 - data/lib/metanorma/standoc/macros.rb +1 -0
 - data/lib/metanorma/standoc/macros_embed.rb +72 -0
 - data/lib/metanorma/standoc/version.rb +1 -1
 - data/spec/assets/a1.adoc +8 -0
 - data/spec/assets/a2.adoc +8 -0
 - data/spec/assets/a3.adoc +9 -0
 - data/spec/assets/a4.adoc +4 -0
 - data/spec/metanorma/macros_spec.rb +89 -0
 - data/spec/metanorma/refs_spec.rb +1 -1
 - metadata +7 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d9031c28646f9cd9a481ad67911f2f0f7e5bd058368f80888a788753e5f63fa3
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 25b16459f351f266f19b2f00d70b5bf7f6f5c95325a0d61d43fbe5f3fa518802
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 885e62405f3198482ffd7e152b25bef8ab09fc227a8107984297e8fa15b64552b2e745f4ce5e1d60dd37df6dc5cf5c505fb9acfeedd1bdc4ef77954e01218893
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 69cac251a0696b46dd25f37fb23828780e1945e57464e829c91ab5d88ac481311d130c4ff0e670ee89d56fd998eff4ea48e3c5a0c4b24c514021431fb785d852
         
     | 
| 
         @@ -28,28 +28,6 @@ module Metanorma 
     | 
|
| 
       28 
28 
     | 
    
         
             
                  end
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                  # "abc<tag/>", def => "abc",<tag/> def
         
     | 
| 
       31 
     | 
    
         
            -
            =begin
         
     | 
| 
       32 
     | 
    
         
            -
                  def uninterrupt_quotes_around_xml(xmldoc)
         
     | 
| 
       33 
     | 
    
         
            -
                    xmldoc.xpath("//*[following::text()[1]"\
         
     | 
| 
       34 
     | 
    
         
            -
                                 "[starts-with(., '\"') or starts-with(., \"'\")]]")
         
     | 
| 
       35 
     | 
    
         
            -
                      .each do |x|
         
     | 
| 
       36 
     | 
    
         
            -
                      next if !x.ancestors("pre, tt, sourcecode, stem, figure").empty?
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                      uninterrupt_quotes_around_xml1(x)
         
     | 
| 
       39 
     | 
    
         
            -
                    end
         
     | 
| 
       40 
     | 
    
         
            -
                  end
         
     | 
| 
       41 
     | 
    
         
            -
            =end
         
     | 
| 
       42 
     | 
    
         
            -
            =begin
         
     | 
| 
       43 
     | 
    
         
            -
                  def uninterrupt_quotes_around_xml(xmldoc)
         
     | 
| 
       44 
     | 
    
         
            -
                    xmldoc.traverse do |n|
         
     | 
| 
       45 
     | 
    
         
            -
                      next unless n.element? && n&.next&.text? &&
         
     | 
| 
       46 
     | 
    
         
            -
                        n.ancestors("pre, tt, sourcecode, stem, figure").empty?
         
     | 
| 
       47 
     | 
    
         
            -
                      next unless /^['"]/.match?(n.next.text)
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                      uninterrupt_quotes_around_xml1(n)
         
     | 
| 
       50 
     | 
    
         
            -
                    end
         
     | 
| 
       51 
     | 
    
         
            -
                  end
         
     | 
| 
       52 
     | 
    
         
            -
            =end
         
     | 
| 
       53 
31 
     | 
    
         
             
                  def uninterrupt_quotes_around_xml(xmldoc)
         
     | 
| 
       54 
32 
     | 
    
         
             
                    xmldoc.traverse do |n|
         
     | 
| 
       55 
33 
     | 
    
         
             
                      next unless n.text? && n&.previous&.element?
         
     | 
| 
         @@ -61,6 +61,7 @@ module Metanorma 
     | 
|
| 
       61 
61 
     | 
    
         
             
                    block Metanorma::Standoc::PlantUMLBlockMacro
         
     | 
| 
       62 
62 
     | 
    
         
             
                    block Metanorma::Plugin::Lutaml::LutamlDiagramBlock
         
     | 
| 
       63 
63 
     | 
    
         
             
                    block Metanorma::Standoc::PseudocodeBlockMacro
         
     | 
| 
      
 64 
     | 
    
         
            +
                    preprocessor Metanorma::Standoc::EmbedIncludeProcessor
         
     | 
| 
       64 
65 
     | 
    
         
             
                  end
         
     | 
| 
       65 
66 
     | 
    
         | 
| 
       66 
67 
     | 
    
         
             
                  include ::Asciidoctor::Converter
         
     | 
| 
         @@ -32,6 +32,43 @@ 
     | 
|
| 
       32 
32 
     | 
    
         
             
                    <ref name="DocumentType"/>
         
     | 
| 
       33 
33 
     | 
    
         
             
                  </element>
         
     | 
| 
       34 
34 
     | 
    
         
             
                </define>
         
     | 
| 
      
 35 
     | 
    
         
            +
                <define name="index">
         
     | 
| 
      
 36 
     | 
    
         
            +
                  <element name="index">
         
     | 
| 
      
 37 
     | 
    
         
            +
                    <optional>
         
     | 
| 
      
 38 
     | 
    
         
            +
                      <attribute name="to">
         
     | 
| 
      
 39 
     | 
    
         
            +
                        <data type="IDREF"/>
         
     | 
| 
      
 40 
     | 
    
         
            +
                      </attribute>
         
     | 
| 
      
 41 
     | 
    
         
            +
                    </optional>
         
     | 
| 
      
 42 
     | 
    
         
            +
                    <element name="primary">
         
     | 
| 
      
 43 
     | 
    
         
            +
                      <oneOrMore>
         
     | 
| 
      
 44 
     | 
    
         
            +
                        <choice>
         
     | 
| 
      
 45 
     | 
    
         
            +
                          <ref name="PureTextElement"/>
         
     | 
| 
      
 46 
     | 
    
         
            +
                          <ref name="stem"/>
         
     | 
| 
      
 47 
     | 
    
         
            +
                        </choice>
         
     | 
| 
      
 48 
     | 
    
         
            +
                      </oneOrMore>
         
     | 
| 
      
 49 
     | 
    
         
            +
                    </element>
         
     | 
| 
      
 50 
     | 
    
         
            +
                    <optional>
         
     | 
| 
      
 51 
     | 
    
         
            +
                      <element name="secondary">
         
     | 
| 
      
 52 
     | 
    
         
            +
                        <oneOrMore>
         
     | 
| 
      
 53 
     | 
    
         
            +
                          <choice>
         
     | 
| 
      
 54 
     | 
    
         
            +
                            <ref name="PureTextElement"/>
         
     | 
| 
      
 55 
     | 
    
         
            +
                            <ref name="stem"/>
         
     | 
| 
      
 56 
     | 
    
         
            +
                          </choice>
         
     | 
| 
      
 57 
     | 
    
         
            +
                        </oneOrMore>
         
     | 
| 
      
 58 
     | 
    
         
            +
                      </element>
         
     | 
| 
      
 59 
     | 
    
         
            +
                    </optional>
         
     | 
| 
      
 60 
     | 
    
         
            +
                    <optional>
         
     | 
| 
      
 61 
     | 
    
         
            +
                      <element name="tertiary">
         
     | 
| 
      
 62 
     | 
    
         
            +
                        <oneOrMore>
         
     | 
| 
      
 63 
     | 
    
         
            +
                          <choice>
         
     | 
| 
      
 64 
     | 
    
         
            +
                            <ref name="PureTextElement"/>
         
     | 
| 
      
 65 
     | 
    
         
            +
                            <ref name="stem"/>
         
     | 
| 
      
 66 
     | 
    
         
            +
                          </choice>
         
     | 
| 
      
 67 
     | 
    
         
            +
                        </oneOrMore>
         
     | 
| 
      
 68 
     | 
    
         
            +
                      </element>
         
     | 
| 
      
 69 
     | 
    
         
            +
                    </optional>
         
     | 
| 
      
 70 
     | 
    
         
            +
                  </element>
         
     | 
| 
      
 71 
     | 
    
         
            +
                </define>
         
     | 
| 
       35 
72 
     | 
    
         
             
                <define name="bibitem">
         
     | 
| 
       36 
73 
     | 
    
         
             
                  <element name="bibitem">
         
     | 
| 
       37 
74 
     | 
    
         
             
                    <attribute name="id">
         
     | 
| 
         @@ -1027,6 +1064,26 @@ 
     | 
|
| 
       1027 
1064 
     | 
    
         
             
                    </zeroOrMore>
         
     | 
| 
       1028 
1065 
     | 
    
         
             
                  </element>
         
     | 
| 
       1029 
1066 
     | 
    
         
             
                </define>
         
     | 
| 
      
 1067 
     | 
    
         
            +
                <define name="sub">
         
     | 
| 
      
 1068 
     | 
    
         
            +
                  <element name="sub">
         
     | 
| 
      
 1069 
     | 
    
         
            +
                    <zeroOrMore>
         
     | 
| 
      
 1070 
     | 
    
         
            +
                      <choice>
         
     | 
| 
      
 1071 
     | 
    
         
            +
                        <ref name="PureTextElement"/>
         
     | 
| 
      
 1072 
     | 
    
         
            +
                        <ref name="stem"/>
         
     | 
| 
      
 1073 
     | 
    
         
            +
                      </choice>
         
     | 
| 
      
 1074 
     | 
    
         
            +
                    </zeroOrMore>
         
     | 
| 
      
 1075 
     | 
    
         
            +
                  </element>
         
     | 
| 
      
 1076 
     | 
    
         
            +
                </define>
         
     | 
| 
      
 1077 
     | 
    
         
            +
                <define name="sup">
         
     | 
| 
      
 1078 
     | 
    
         
            +
                  <element name="sup">
         
     | 
| 
      
 1079 
     | 
    
         
            +
                    <zeroOrMore>
         
     | 
| 
      
 1080 
     | 
    
         
            +
                      <choice>
         
     | 
| 
      
 1081 
     | 
    
         
            +
                        <ref name="PureTextElement"/>
         
     | 
| 
      
 1082 
     | 
    
         
            +
                        <ref name="stem"/>
         
     | 
| 
      
 1083 
     | 
    
         
            +
                      </choice>
         
     | 
| 
      
 1084 
     | 
    
         
            +
                    </zeroOrMore>
         
     | 
| 
      
 1085 
     | 
    
         
            +
                  </element>
         
     | 
| 
      
 1086 
     | 
    
         
            +
                </define>
         
     | 
| 
       1030 
1087 
     | 
    
         
             
                <define name="pagebreak">
         
     | 
| 
       1031 
1088 
     | 
    
         
             
                  <element name="pagebreak">
         
     | 
| 
       1032 
1089 
     | 
    
         
             
                    <optional>
         
     | 
| 
         @@ -2216,7 +2273,18 @@ 
     | 
|
| 
       2216 
2273 
     | 
    
         
             
                      <ref name="MultilingualRenderingType"/>
         
     | 
| 
       2217 
2274 
     | 
    
         
             
                    </attribute>
         
     | 
| 
       2218 
2275 
     | 
    
         
             
                  </optional>
         
     | 
| 
       2219 
     | 
    
         
            -
                  < 
     | 
| 
      
 2276 
     | 
    
         
            +
                  <oneOrMore>
         
     | 
| 
      
 2277 
     | 
    
         
            +
                    <choice>
         
     | 
| 
      
 2278 
     | 
    
         
            +
                      <ref name="formula"/>
         
     | 
| 
      
 2279 
     | 
    
         
            +
                      <ref name="ul"/>
         
     | 
| 
      
 2280 
     | 
    
         
            +
                      <ref name="ol"/>
         
     | 
| 
      
 2281 
     | 
    
         
            +
                      <ref name="dl"/>
         
     | 
| 
      
 2282 
     | 
    
         
            +
                      <ref name="quote"/>
         
     | 
| 
      
 2283 
     | 
    
         
            +
                      <ref name="sourcecode"/>
         
     | 
| 
      
 2284 
     | 
    
         
            +
                      <ref name="paragraph"/>
         
     | 
| 
      
 2285 
     | 
    
         
            +
                      <ref name="figure"/>
         
     | 
| 
      
 2286 
     | 
    
         
            +
                    </choice>
         
     | 
| 
      
 2287 
     | 
    
         
            +
                  </oneOrMore>
         
     | 
| 
       2220 
2288 
     | 
    
         
             
                </element>
         
     | 
| 
       2221 
2289 
     | 
    
         
             
              </define>
         
     | 
| 
       2222 
2290 
     | 
    
         
             
              <define name="termsource">
         
     | 
| 
         @@ -7,6 +7,7 @@ require_relative "./macros_plantuml" 
     | 
|
| 
       7 
7 
     | 
    
         
             
            require_relative "./macros_terms"
         
     | 
| 
       8 
8 
     | 
    
         
             
            require_relative "./macros_form"
         
     | 
| 
       9 
9 
     | 
    
         
             
            require_relative "./macros_note"
         
     | 
| 
      
 10 
     | 
    
         
            +
            require_relative "./macros_embed"
         
     | 
| 
       10 
11 
     | 
    
         
             
            require_relative "./datamodel/attributes_table_preprocessor"
         
     | 
| 
       11 
12 
     | 
    
         
             
            require_relative "./datamodel/diagram_preprocessor"
         
     | 
| 
       12 
13 
     | 
    
         
             
            require "metanorma-plugin-datastruct"
         
     | 
| 
         @@ -0,0 +1,72 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Metanorma
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Standoc
         
     | 
| 
      
 3 
     | 
    
         
            +
                class EmbedIncludeProcessor < Asciidoctor::Extensions::Preprocessor
         
     | 
| 
      
 4 
     | 
    
         
            +
                  def process(doc, reader)
         
     | 
| 
      
 5 
     | 
    
         
            +
                    return reader if reader.eof?
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                    lines = reader.readlines
         
     | 
| 
      
 8 
     | 
    
         
            +
                    while !lines.grep(/^embed::/).empty?
         
     | 
| 
      
 9 
     | 
    
         
            +
                      headings = lines.grep(/^== /).map(&:strip)
         
     | 
| 
      
 10 
     | 
    
         
            +
                      lines = lines.map do |line|
         
     | 
| 
      
 11 
     | 
    
         
            +
                        /^embed::/.match?(line) ? embed(line, doc, reader, headings) : line
         
     | 
| 
      
 12 
     | 
    
         
            +
                      end.flatten
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
                    ::Asciidoctor::Reader.new lines
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  def filename(line, doc, reader)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    m = /^embed::([^\[]+)\[/.match(line)
         
     | 
| 
      
 19 
     | 
    
         
            +
                    f = doc.normalize_system_path m[1], reader.dir, nil,
         
     | 
| 
      
 20 
     | 
    
         
            +
                                                  target_name: "include file"
         
     | 
| 
      
 21 
     | 
    
         
            +
                    File.exist?(f) ? f : nil
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  def readlines_safe(file)
         
     | 
| 
      
 25 
     | 
    
         
            +
                    if file.eof? then []
         
     | 
| 
      
 26 
     | 
    
         
            +
                    else file.readlines
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  def embed(line, doc, reader, headings)
         
     | 
| 
      
 31 
     | 
    
         
            +
                    inc_path = filename(line, doc, reader) or return line
         
     | 
| 
      
 32 
     | 
    
         
            +
                    lines = filter_sections(read(inc_path), headings)
         
     | 
| 
      
 33 
     | 
    
         
            +
                    doc = Asciidoctor::Document.new [], { safe: :safe }
         
     | 
| 
      
 34 
     | 
    
         
            +
                    reader = ::Asciidoctor::PreprocessorReader.new doc, lines
         
     | 
| 
      
 35 
     | 
    
         
            +
                    strip_header(reader.read_lines)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                  def read(inc_path)
         
     | 
| 
      
 39 
     | 
    
         
            +
                    ::File.open inc_path, "r" do |fd|
         
     | 
| 
      
 40 
     | 
    
         
            +
                      readlines_safe(fd).map(&:chomp)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  def strip_header(lines)
         
     | 
| 
      
 45 
     | 
    
         
            +
                    return lines unless !lines.empty? && lines.first.start_with?("= ")
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                    skip = true
         
     | 
| 
      
 48 
     | 
    
         
            +
                    lines.each_with_object([]) do |l, m|
         
     | 
| 
      
 49 
     | 
    
         
            +
                      m << l unless skip
         
     | 
| 
      
 50 
     | 
    
         
            +
                      skip = false if !/\S/.match?(l)
         
     | 
| 
      
 51 
     | 
    
         
            +
                    end
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  def filter_sections(lines, headings)
         
     | 
| 
      
 55 
     | 
    
         
            +
                    skip = false
         
     | 
| 
      
 56 
     | 
    
         
            +
                    lines.each_with_index.with_object([]) do |(l, i), m|
         
     | 
| 
      
 57 
     | 
    
         
            +
                      if headings.include?(l.strip)
         
     | 
| 
      
 58 
     | 
    
         
            +
                        skip = true
         
     | 
| 
      
 59 
     | 
    
         
            +
                        m.unshift while !m.empty? && /^\S/.match?(m[-1])
         
     | 
| 
      
 60 
     | 
    
         
            +
                      elsif skip && /^== |^embed::|^include::/.match?(l)
         
     | 
| 
      
 61 
     | 
    
         
            +
                        skip = false
         
     | 
| 
      
 62 
     | 
    
         
            +
                        j = i
         
     | 
| 
      
 63 
     | 
    
         
            +
                        j -= 1 while j >= 0 && /^\S/.match?(m[j])
         
     | 
| 
      
 64 
     | 
    
         
            +
                        lines[j..i].each { |n| m << n }
         
     | 
| 
      
 65 
     | 
    
         
            +
                      else
         
     | 
| 
      
 66 
     | 
    
         
            +
                        skip or m << l
         
     | 
| 
      
 67 
     | 
    
         
            +
                      end
         
     | 
| 
      
 68 
     | 
    
         
            +
                    end
         
     | 
| 
      
 69 
     | 
    
         
            +
                  end
         
     | 
| 
      
 70 
     | 
    
         
            +
                end
         
     | 
| 
      
 71 
     | 
    
         
            +
              end
         
     | 
| 
      
 72 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/assets/a1.adoc
    ADDED
    
    
    
        data/spec/assets/a2.adoc
    ADDED
    
    
    
        data/spec/assets/a3.adoc
    ADDED
    
    
    
        data/spec/assets/a4.adoc
    ADDED
    
    
| 
         @@ -1304,6 +1304,95 @@ RSpec.describe Metanorma::Standoc do 
     | 
|
| 
       1304 
1304 
     | 
    
         
             
                  .to be_equivalent_to xmlpp(output)
         
     | 
| 
       1305 
1305 
     | 
    
         
             
              end
         
     | 
| 
       1306 
1306 
     | 
    
         | 
| 
      
 1307 
     | 
    
         
            +
              it "processes embed macro" do
         
     | 
| 
      
 1308 
     | 
    
         
            +
                input = <<~INPUT
         
     | 
| 
      
 1309 
     | 
    
         
            +
                  #{ASCIIDOC_BLANK_HDR}
         
     | 
| 
      
 1310 
     | 
    
         
            +
             
     | 
| 
      
 1311 
     | 
    
         
            +
                  [[clause1]]
         
     | 
| 
      
 1312 
     | 
    
         
            +
                  == Clause 1
         
     | 
| 
      
 1313 
     | 
    
         
            +
             
     | 
| 
      
 1314 
     | 
    
         
            +
                  embed::spec/assets/xref_error.adoc[]
         
     | 
| 
      
 1315 
     | 
    
         
            +
                INPUT
         
     | 
| 
      
 1316 
     | 
    
         
            +
                output = <<~OUTPUT
         
     | 
| 
      
 1317 
     | 
    
         
            +
                  #{BLANK_HDR}
         
     | 
| 
      
 1318 
     | 
    
         
            +
                    <sections>
         
     | 
| 
      
 1319 
     | 
    
         
            +
                      <clause id='clause1' inline-header='false' obligation='normative'>
         
     | 
| 
      
 1320 
     | 
    
         
            +
                        <title>Clause 1</title>
         
     | 
| 
      
 1321 
     | 
    
         
            +
                      </clause>
         
     | 
| 
      
 1322 
     | 
    
         
            +
                      <clause id='_' inline-header='false' obligation='normative'>
         
     | 
| 
      
 1323 
     | 
    
         
            +
                        <title>Clause</title>
         
     | 
| 
      
 1324 
     | 
    
         
            +
                        <p id='_'>
         
     | 
| 
      
 1325 
     | 
    
         
            +
                          <xref target='a'>b</xref>
         
     | 
| 
      
 1326 
     | 
    
         
            +
                        </p>
         
     | 
| 
      
 1327 
     | 
    
         
            +
                      </clause>
         
     | 
| 
      
 1328 
     | 
    
         
            +
                    </sections>
         
     | 
| 
      
 1329 
     | 
    
         
            +
                  </standard-document>
         
     | 
| 
      
 1330 
     | 
    
         
            +
                OUTPUT
         
     | 
| 
      
 1331 
     | 
    
         
            +
                expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
         
     | 
| 
      
 1332 
     | 
    
         
            +
                  .to be_equivalent_to xmlpp(output)
         
     | 
| 
      
 1333 
     | 
    
         
            +
              end
         
     | 
| 
      
 1334 
     | 
    
         
            +
             
     | 
| 
      
 1335 
     | 
    
         
            +
              it "processes embed macro with overwriting" do
         
     | 
| 
      
 1336 
     | 
    
         
            +
                input = <<~INPUT
         
     | 
| 
      
 1337 
     | 
    
         
            +
                  #{ASCIIDOC_BLANK_HDR}
         
     | 
| 
      
 1338 
     | 
    
         
            +
             
     | 
| 
      
 1339 
     | 
    
         
            +
                  [[clause1]]
         
     | 
| 
      
 1340 
     | 
    
         
            +
                  == Clause
         
     | 
| 
      
 1341 
     | 
    
         
            +
             
     | 
| 
      
 1342 
     | 
    
         
            +
                  embed::spec/assets/xref_error.adoc[]
         
     | 
| 
      
 1343 
     | 
    
         
            +
                INPUT
         
     | 
| 
      
 1344 
     | 
    
         
            +
                output = <<~OUTPUT
         
     | 
| 
      
 1345 
     | 
    
         
            +
                  #{BLANK_HDR}
         
     | 
| 
      
 1346 
     | 
    
         
            +
                    <sections>
         
     | 
| 
      
 1347 
     | 
    
         
            +
                      <clause id='clause1' inline-header='false' obligation='normative'>
         
     | 
| 
      
 1348 
     | 
    
         
            +
                        <title>Clause</title>
         
     | 
| 
      
 1349 
     | 
    
         
            +
                      </clause>
         
     | 
| 
      
 1350 
     | 
    
         
            +
                    </sections>
         
     | 
| 
      
 1351 
     | 
    
         
            +
                  </standard-document>
         
     | 
| 
      
 1352 
     | 
    
         
            +
                OUTPUT
         
     | 
| 
      
 1353 
     | 
    
         
            +
                expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
         
     | 
| 
      
 1354 
     | 
    
         
            +
                  .to be_equivalent_to xmlpp(output)
         
     | 
| 
      
 1355 
     | 
    
         
            +
              end
         
     | 
| 
      
 1356 
     | 
    
         
            +
             
     | 
| 
      
 1357 
     | 
    
         
            +
              it "processes recursive embed macro with includes" do
         
     | 
| 
      
 1358 
     | 
    
         
            +
                input = <<~INPUT
         
     | 
| 
      
 1359 
     | 
    
         
            +
                  #{ASCIIDOC_BLANK_HDR}
         
     | 
| 
      
 1360 
     | 
    
         
            +
             
     | 
| 
      
 1361 
     | 
    
         
            +
                  [[clause1]]
         
     | 
| 
      
 1362 
     | 
    
         
            +
                  == Clause
         
     | 
| 
      
 1363 
     | 
    
         
            +
             
     | 
| 
      
 1364 
     | 
    
         
            +
                  embed::spec/assets/a1.adoc[]
         
     | 
| 
      
 1365 
     | 
    
         
            +
                INPUT
         
     | 
| 
      
 1366 
     | 
    
         
            +
                output = <<~OUTPUT
         
     | 
| 
      
 1367 
     | 
    
         
            +
                  #{BLANK_HDR}
         
     | 
| 
      
 1368 
     | 
    
         
            +
                           <sections>
         
     | 
| 
      
 1369 
     | 
    
         
            +
                       <clause id='clause1' inline-header='false' obligation='normative'>
         
     | 
| 
      
 1370 
     | 
    
         
            +
                         <title>Clause</title>
         
     | 
| 
      
 1371 
     | 
    
         
            +
                       </clause>
         
     | 
| 
      
 1372 
     | 
    
         
            +
                       <clause id='_' inline-header='false' obligation='normative'>
         
     | 
| 
      
 1373 
     | 
    
         
            +
                         <title>Clause 1</title>
         
     | 
| 
      
 1374 
     | 
    
         
            +
                         <p id='_'>X</p>
         
     | 
| 
      
 1375 
     | 
    
         
            +
                       </clause>
         
     | 
| 
      
 1376 
     | 
    
         
            +
                       <clause id='_' inline-header='false' obligation='normative'>
         
     | 
| 
      
 1377 
     | 
    
         
            +
                         <title>Clause 2</title>
         
     | 
| 
      
 1378 
     | 
    
         
            +
                         <p id='_'>X</p>
         
     | 
| 
      
 1379 
     | 
    
         
            +
                       </clause>
         
     | 
| 
      
 1380 
     | 
    
         
            +
                       <clause id='_' inline-header='false' obligation='normative'>
         
     | 
| 
      
 1381 
     | 
    
         
            +
                         <title>Clause 3</title>
         
     | 
| 
      
 1382 
     | 
    
         
            +
                         <p id='_'>X</p>
         
     | 
| 
      
 1383 
     | 
    
         
            +
                       </clause>
         
     | 
| 
      
 1384 
     | 
    
         
            +
                       <clause id='_' inline-header='false' obligation='normative'>
         
     | 
| 
      
 1385 
     | 
    
         
            +
                         <title>Clause 4</title>
         
     | 
| 
      
 1386 
     | 
    
         
            +
                         <p id='_'>X</p>
         
     | 
| 
      
 1387 
     | 
    
         
            +
                       </clause>
         
     | 
| 
      
 1388 
     | 
    
         
            +
                     </sections>
         
     | 
| 
      
 1389 
     | 
    
         
            +
                  </standard-document>
         
     | 
| 
      
 1390 
     | 
    
         
            +
                OUTPUT
         
     | 
| 
      
 1391 
     | 
    
         
            +
                expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
         
     | 
| 
      
 1392 
     | 
    
         
            +
                  .to be_equivalent_to xmlpp(output)
         
     | 
| 
      
 1393 
     | 
    
         
            +
              end
         
     | 
| 
      
 1394 
     | 
    
         
            +
             
     | 
| 
      
 1395 
     | 
    
         
            +
             
     | 
| 
       1307 
1396 
     | 
    
         
             
              describe "term inline macros" do
         
     | 
| 
       1308 
1397 
     | 
    
         
             
                subject(:convert) do
         
     | 
| 
       1309 
1398 
     | 
    
         
             
                  xmlpp(
         
     | 
    
        data/spec/metanorma/refs_spec.rb
    CHANGED
    
    | 
         @@ -1625,7 +1625,7 @@ RSpec.describe Metanorma::Standoc do 
     | 
|
| 
       1625 
1625 
     | 
    
         | 
| 
       1626 
1626 
     | 
    
         
             
                    * [[[iso124,BSI BS EN ISO 19011:2018]]] _Standard_
         
     | 
| 
       1627 
1627 
     | 
    
         
             
                    * [[[iso123,BSI BS EN 16341]]] _Standard_
         
     | 
| 
       1628 
     | 
    
         
            -
                    * [[[ref_2,BSI BS EN ISO 14044:2006+ 
     | 
| 
      
 1628 
     | 
    
         
            +
                    * [[[ref_2,BSI BS EN ISO 14044:2006+A2:2020]]], _Environmental management – Life cycle assessment – Requirements and guidelines_
         
     | 
| 
       1629 
1629 
     | 
    
         
             
                  INPUT
         
     | 
| 
       1630 
1630 
     | 
    
         
             
                  output = Nokogiri::XML(Asciidoctor.convert(input, *OPTIONS))
         
     | 
| 
       1631 
1631 
     | 
    
         
             
                    .xpath("//xmlns:docidentifier[@type = 'BSI']").map(&:text)
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: metanorma-standoc
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.0.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ribose Inc.
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire:
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2022-01- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2022-01-22 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: asciidoctor
         
     | 
| 
         @@ -492,6 +492,7 @@ files: 
     | 
|
| 
       492 
492 
     | 
    
         
             
            - lib/metanorma/standoc/isodoc.rng
         
     | 
| 
       493 
493 
     | 
    
         
             
            - lib/metanorma/standoc/lists.rb
         
     | 
| 
       494 
494 
     | 
    
         
             
            - lib/metanorma/standoc/macros.rb
         
     | 
| 
      
 495 
     | 
    
         
            +
            - lib/metanorma/standoc/macros_embed.rb
         
     | 
| 
       495 
496 
     | 
    
         
             
            - lib/metanorma/standoc/macros_form.rb
         
     | 
| 
       496 
497 
     | 
    
         
             
            - lib/metanorma/standoc/macros_note.rb
         
     | 
| 
       497 
498 
     | 
    
         
             
            - lib/metanorma/standoc/macros_plantuml.rb
         
     | 
| 
         @@ -514,6 +515,10 @@ files: 
     | 
|
| 
       514 
515 
     | 
    
         
             
            - lib/metanorma/standoc/views/datamodel/model_representation.adoc.erb
         
     | 
| 
       515 
516 
     | 
    
         
             
            - lib/metanorma/standoc/views/datamodel/plantuml_representation.adoc.erb
         
     | 
| 
       516 
517 
     | 
    
         
             
            - metanorma-standoc.gemspec
         
     | 
| 
      
 518 
     | 
    
         
            +
            - spec/assets/a1.adoc
         
     | 
| 
      
 519 
     | 
    
         
            +
            - spec/assets/a2.adoc
         
     | 
| 
      
 520 
     | 
    
         
            +
            - spec/assets/a3.adoc
         
     | 
| 
      
 521 
     | 
    
         
            +
            - spec/assets/a4.adoc
         
     | 
| 
       517 
522 
     | 
    
         
             
            - spec/assets/boilerplate.xml
         
     | 
| 
       518 
523 
     | 
    
         
             
            - spec/assets/codes.yml
         
     | 
| 
       519 
524 
     | 
    
         
             
            - spec/assets/header.html
         
     |