metanorma-iso 2.1.4 → 2.1.7
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/isodoc/iso/html/isodoc-dis.css +1 -10
 - data/lib/isodoc/iso/html/isodoc-dis.scss +1 -13
 - data/lib/isodoc/iso/html/isodoc.css +4 -11
 - data/lib/isodoc/iso/html/isodoc.scss +5 -15
 - data/lib/isodoc/iso/html/style-human.css +3 -0
 - data/lib/isodoc/iso/html/style-human.scss +4 -0
 - data/lib/isodoc/iso/html/style-iso.css +3 -0
 - data/lib/isodoc/iso/html/style-iso.scss +4 -0
 - data/lib/isodoc/iso/i18n-en.yaml +1 -1
 - data/lib/isodoc/iso/iso.amendment.xsl +3618 -2934
 - data/lib/isodoc/iso/iso.international-standard.xsl +3618 -2934
 - data/lib/isodoc/iso/presentation_xml_convert.rb +8 -6
 - data/lib/isodoc/iso/word_cleanup.rb +50 -19
 - data/lib/isodoc/iso/word_dis_cleanup.rb +2 -14
 - data/lib/isodoc/iso/word_dis_convert.rb +1 -1
 - data/lib/metanorma/iso/boilerplate-fr.xml +1 -1
 - data/lib/metanorma/iso/boilerplate-ru.xml +1 -1
 - data/lib/metanorma/iso/boilerplate.xml +1 -1
 - data/lib/metanorma/iso/cleanup.rb +0 -1
 - data/lib/metanorma/iso/front_id.rb +20 -1
 - data/lib/metanorma/iso/isodoc.rng +16 -1
 - data/lib/metanorma/iso/reqt.rng +1 -1
 - data/lib/metanorma/iso/version.rb +1 -1
 - data/metanorma-iso.gemspec +2 -1
 - data/spec/isodoc/postproc_spec.rb +8 -75
 - data/spec/isodoc/ref_spec.rb +123 -76
 - data/spec/isodoc/terms_spec.rb +62 -0
 - data/spec/isodoc/word_dis_spec.rb +133 -15
 - data/spec/metanorma/base_spec.rb +19 -17
 - data/spec/metanorma/cleanup_spec.rb +5 -5
 - data/spec/metanorma/processor_spec.rb +1 -2
 - data/spec/metanorma/refs_spec.rb +5 -3
 - data/spec/metanorma/section_spec.rb +8 -8
 - data/spec/spec_helper.rb +1 -1
 - data/spec/vcr_cassettes/withdrawn_iso.yml +33 -33
 - metadata +18 -4
 
| 
         @@ -178,12 +178,10 @@ module IsoDoc 
     | 
|
| 
       178 
178 
     | 
    
         
             
                                                        i18nhash: @i18n.get)
         
     | 
| 
       179 
179 
     | 
    
         
             
                  end
         
     | 
| 
       180 
180 
     | 
    
         | 
| 
       181 
     | 
    
         
            -
                  def  
     | 
| 
       182 
     | 
    
         
            -
                     
     | 
| 
       183 
     | 
    
         
            -
             
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
                        "#{xml.xpath(ns('./docidentifier | ./uri | ./note')).to_xml}"
         
     | 
| 
       186 
     | 
    
         
            -
                    end
         
     | 
| 
      
 181 
     | 
    
         
            +
                  def bibrender_formattedref(formattedref, xml)
         
     | 
| 
      
 182 
     | 
    
         
            +
                    return if %w(techreport standard).include? xml["type"]
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
                    super
         
     | 
| 
       187 
185 
     | 
    
         
             
                  end
         
     | 
| 
       188 
186 
     | 
    
         | 
| 
       189 
187 
     | 
    
         
             
                  def ol_depth(node)
         
     | 
| 
         @@ -196,6 +194,10 @@ module IsoDoc 
     | 
|
| 
       196 
194 
     | 
    
         
             
                    type
         
     | 
| 
       197 
195 
     | 
    
         
             
                  end
         
     | 
| 
       198 
196 
     | 
    
         | 
| 
      
 197 
     | 
    
         
            +
                  def related1(node)
         
     | 
| 
      
 198 
     | 
    
         
            +
                    node.remove
         
     | 
| 
      
 199 
     | 
    
         
            +
                  end
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
       199 
201 
     | 
    
         
             
                  include Init
         
     | 
| 
       200 
202 
     | 
    
         
             
                end
         
     | 
| 
       201 
203 
     | 
    
         
             
              end
         
     | 
| 
         @@ -11,11 +11,10 @@ module IsoDoc 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    end
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
     | 
    
         
            -
                  # force Annex h2 down to be p.h2Annex, so it is not picked up by ToC
         
     | 
| 
       15 
14 
     | 
    
         
             
                  def word_annex_cleanup1(docxml, lvl)
         
     | 
| 
       16 
15 
     | 
    
         
             
                    docxml.xpath("//h#{lvl}[ancestor::*[@class = 'Section3']]").each do |h2|
         
     | 
| 
       17 
16 
     | 
    
         
             
                      h2.name = "p"
         
     | 
| 
       18 
     | 
    
         
            -
                      h2["class"] = " 
     | 
| 
      
 17 
     | 
    
         
            +
                      h2["class"] = "a#{lvl}"
         
     | 
| 
       19 
18 
     | 
    
         
             
                    end
         
     | 
| 
       20 
19 
     | 
    
         
             
                  end
         
     | 
| 
       21 
20 
     | 
    
         | 
| 
         @@ -37,40 +36,72 @@ module IsoDoc 
     | 
|
| 
       37 
36 
     | 
    
         | 
| 
       38 
37 
     | 
    
         
             
                  def style_cleanup(docxml)
         
     | 
| 
       39 
38 
     | 
    
         
             
                    word_annex_cleanup_h1(docxml)
         
     | 
| 
       40 
     | 
    
         
            -
                     
     | 
| 
      
 39 
     | 
    
         
            +
                    figure_style(docxml)
         
     | 
| 
      
 40 
     | 
    
         
            +
                    new_styles(docxml)
         
     | 
| 
       41 
41 
     | 
    
         
             
                  end
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
                  def  
     | 
| 
       44 
     | 
    
         
            -
                    docxml.xpath(" 
     | 
| 
       45 
     | 
    
         
            -
                       
     | 
| 
      
 43 
     | 
    
         
            +
                  def figure_style(docxml)
         
     | 
| 
      
 44 
     | 
    
         
            +
                    docxml.xpath("//div[@class = 'figure']").each do |f|
         
     | 
| 
      
 45 
     | 
    
         
            +
                      f["style"] ||= ""
         
     | 
| 
      
 46 
     | 
    
         
            +
                      f["style"] += "text-align:center;"
         
     | 
| 
       46 
47 
     | 
    
         
             
                    end
         
     | 
| 
      
 48 
     | 
    
         
            +
                  end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                  def quote_style(docxml)
         
     | 
| 
      
 51 
     | 
    
         
            +
                    docxml.xpath("//div[@class = 'Quote' or @class = 'Note' or "\
         
     | 
| 
      
 52 
     | 
    
         
            +
                                 "@class = 'Example' or @class = 'Admonition']").each do |d|
         
     | 
| 
      
 53 
     | 
    
         
            +
                                   quote_style1(d)
         
     | 
| 
      
 54 
     | 
    
         
            +
                                 end
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                  def quote_style1(div)
         
     | 
| 
      
 58 
     | 
    
         
            +
                    div.xpath(".//li").each do |p|
         
     | 
| 
      
 59 
     | 
    
         
            +
                      p["style"] ||= ""
         
     | 
| 
      
 60 
     | 
    
         
            +
                      p["style"] += "font-size:#{default_fonts({})[:smallerfontsize]};"
         
     | 
| 
      
 61 
     | 
    
         
            +
                    end
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                  STYLESMAP = {
         
     | 
| 
      
 65 
     | 
    
         
            +
                    example: "Example",
         
     | 
| 
      
 66 
     | 
    
         
            +
                    note: "Note",
         
     | 
| 
      
 67 
     | 
    
         
            +
                    Sourcecode: "Code",
         
     | 
| 
      
 68 
     | 
    
         
            +
                    tabletitle: "Tabletitle",
         
     | 
| 
      
 69 
     | 
    
         
            +
                    Biblio: "MsoNormal",
         
     | 
| 
      
 70 
     | 
    
         
            +
                    figure: "MsoNormal",
         
     | 
| 
      
 71 
     | 
    
         
            +
                    SourceTitle: "FigureTitle",
         
     | 
| 
      
 72 
     | 
    
         
            +
                  }.freeze
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                  def new_styles(docxml)
         
     | 
| 
      
 75 
     | 
    
         
            +
                    STYLESMAP.each do |k, v|
         
     | 
| 
      
 76 
     | 
    
         
            +
                      docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
         
     | 
| 
      
 77 
     | 
    
         
            +
                    end
         
     | 
| 
      
 78 
     | 
    
         
            +
                    docxml.xpath("//div[@class = 'Section3']//p[@class = 'Tabletitle']")
         
     | 
| 
      
 79 
     | 
    
         
            +
                      .each { |t| t["class"] = "AnnexTableTitle" }
         
     | 
| 
       47 
80 
     | 
    
         
             
                    docxml.xpath("//*[@class = 'zzHelp']/p[not(@class)]").each do |p|
         
     | 
| 
       48 
81 
     | 
    
         
             
                      p["class"] = "zzHelp"
         
     | 
| 
       49 
82 
     | 
    
         
             
                    end
         
     | 
| 
      
 83 
     | 
    
         
            +
                    quote_style(docxml)
         
     | 
| 
       50 
84 
     | 
    
         
             
                  end
         
     | 
| 
       51 
85 
     | 
    
         | 
| 
       52 
86 
     | 
    
         
             
                  def authority_hdr_cleanup(docxml)
         
     | 
| 
       53 
     | 
    
         
            -
                     
     | 
| 
       54 
     | 
    
         
            -
                       
     | 
| 
       55 
     | 
    
         
            -
                         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 87 
     | 
    
         
            +
                    { "boilerplate-license": "zzWarningHdr",
         
     | 
| 
      
 88 
     | 
    
         
            +
                      "boilerplate-copyright": "zzCopyrightHdr" }.each do |k, v|
         
     | 
| 
      
 89 
     | 
    
         
            +
                        docxml.xpath("//div[@class = '#{k}']").each do |d|
         
     | 
| 
      
 90 
     | 
    
         
            +
                          d.xpath(".//h1").each do |p|
         
     | 
| 
      
 91 
     | 
    
         
            +
                            p.name = "p"
         
     | 
| 
      
 92 
     | 
    
         
            +
                            p["class"] = v
         
     | 
| 
      
 93 
     | 
    
         
            +
                          end
         
     | 
| 
      
 94 
     | 
    
         
            +
                        end
         
     | 
| 
       57 
95 
     | 
    
         
             
                      end
         
     | 
| 
       58 
     | 
    
         
            -
                    end
         
     | 
| 
       59 
     | 
    
         
            -
                    docxml&.xpath("//div[@class = 'boilerplate-copyright']")&.each do |d|
         
     | 
| 
       60 
     | 
    
         
            -
                      d.xpath(".//h1").each do |p|
         
     | 
| 
       61 
     | 
    
         
            -
                        p.name = "p"
         
     | 
| 
       62 
     | 
    
         
            -
                        p["class"] = "zzCopyrightHdr"
         
     | 
| 
       63 
     | 
    
         
            -
                      end
         
     | 
| 
       64 
     | 
    
         
            -
                    end
         
     | 
| 
       65 
96 
     | 
    
         
             
                  end
         
     | 
| 
       66 
97 
     | 
    
         | 
| 
       67 
98 
     | 
    
         
             
                  def authority_cleanup(docxml)
         
     | 
| 
       68 
99 
     | 
    
         
             
                    insert = docxml.at("//div[@id = 'boilerplate-license-destination']")
         
     | 
| 
       69 
     | 
    
         
            -
                    auth = docxml 
     | 
| 
      
 100 
     | 
    
         
            +
                    auth = docxml.at("//div[@class = 'boilerplate-license']")&.remove
         
     | 
| 
       70 
101 
     | 
    
         
             
                    auth&.xpath(".//p[not(@class)]")&.each { |p| p["class"] = "zzWarning" }
         
     | 
| 
       71 
102 
     | 
    
         
             
                    auth and insert and insert.children = auth
         
     | 
| 
       72 
103 
     | 
    
         
             
                    insert = docxml.at("//div[@id = 'boilerplate-copyright-destination']")
         
     | 
| 
       73 
     | 
    
         
            -
                    auth = docxml 
     | 
| 
      
 104 
     | 
    
         
            +
                    auth = docxml.at("//div[@class = 'boilerplate-copyright']")&.remove
         
     | 
| 
       74 
105 
     | 
    
         
             
                    auth&.xpath(".//p[not(@class)]")&.each do |p|
         
     | 
| 
       75 
106 
     | 
    
         
             
                      p["class"] = "zzCopyright"
         
     | 
| 
       76 
107 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -1,11 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module IsoDoc
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Iso
         
     | 
| 
       3 
3 
     | 
    
         
             
                class WordDISConvert < WordConvert
         
     | 
| 
       4 
     | 
    
         
            -
                  def style_cleanup(docxml)
         
     | 
| 
       5 
     | 
    
         
            -
                    super
         
     | 
| 
       6 
     | 
    
         
            -
                    dis_styles(docxml)
         
     | 
| 
       7 
     | 
    
         
            -
                  end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
4 
     | 
    
         
             
                  STYLESMAP = {
         
     | 
| 
       10 
5 
     | 
    
         
             
                    AltTerms: "AdmittedTerm",
         
     | 
| 
       11 
6 
     | 
    
         
             
                    TableFootnote: "Tablefootnote",
         
     | 
| 
         @@ -30,7 +25,7 @@ module IsoDoc 
     | 
|
| 
       30 
25 
     | 
    
         
             
                    zzCopyright1: "zzCopyright",
         
     | 
| 
       31 
26 
     | 
    
         
             
                  }.freeze
         
     | 
| 
       32 
27 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
                  def  
     | 
| 
      
 28 
     | 
    
         
            +
                  def new_styles(docxml)
         
     | 
| 
       34 
29 
     | 
    
         
             
                    STYLESMAP.each do |k, v|
         
     | 
| 
       35 
30 
     | 
    
         
             
                      docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
         
     | 
| 
       36 
31 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -46,8 +41,8 @@ module IsoDoc 
     | 
|
| 
       46 
41 
     | 
    
         
             
                    figure_style(docxml)
         
     | 
| 
       47 
42 
     | 
    
         
             
                    note_style(docxml)
         
     | 
| 
       48 
43 
     | 
    
         
             
                    example_style(docxml)
         
     | 
| 
       49 
     | 
    
         
            -
                    quote_style(docxml)
         
     | 
| 
       50 
44 
     | 
    
         
             
                    dis_style_interactions(docxml)
         
     | 
| 
      
 45 
     | 
    
         
            +
                    quote_style(docxml)
         
     | 
| 
       51 
46 
     | 
    
         
             
                  end
         
     | 
| 
       52 
47 
     | 
    
         | 
| 
       53 
48 
     | 
    
         
             
                  def dis_style_interactions(docxml)
         
     | 
| 
         @@ -68,13 +63,6 @@ module IsoDoc 
     | 
|
| 
       68 
63 
     | 
    
         
             
                    end
         
     | 
| 
       69 
64 
     | 
    
         
             
                  end
         
     | 
| 
       70 
65 
     | 
    
         | 
| 
       71 
     | 
    
         
            -
                  def quote_style(docxml)
         
     | 
| 
       72 
     | 
    
         
            -
                    docxml.xpath("//div[@class = 'Quote' or @class = 'Note' or "\
         
     | 
| 
       73 
     | 
    
         
            -
                                 "@class = 'Example' or @class = 'Admonition']").each do |d|
         
     | 
| 
       74 
     | 
    
         
            -
                                   quote_style1(d)
         
     | 
| 
       75 
     | 
    
         
            -
                                 end
         
     | 
| 
       76 
     | 
    
         
            -
                  end
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
66 
     | 
    
         
             
                  def para_style_change(div, class1, class2)
         
     | 
| 
       79 
67 
     | 
    
         
             
                    s = class1 ? "@class = '#{class1}'" : "not(@class)"
         
     | 
| 
       80 
68 
     | 
    
         
             
                    div.xpath(".//p[#{s}]").each do |p|
         
     | 
| 
         @@ -98,7 +98,7 @@ module IsoDoc 
     | 
|
| 
       98 
98 
     | 
    
         
             
                      @meta.get[:doctitlemain] && @meta.get[:doctitlepart] and p << " — "
         
     | 
| 
       99 
99 
     | 
    
         
             
                      if @meta.get[:doctitlepart]
         
     | 
| 
       100 
100 
     | 
    
         
             
                        b = @meta.get[:doctitlepartlabel] and
         
     | 
| 
       101 
     | 
    
         
            -
                          p << "<span style='font-weight:normal'>#{b} 
     | 
| 
      
 101 
     | 
    
         
            +
                          p << "<span style='font-weight:normal'>#{b}:</span> "
         
     | 
| 
       102 
102 
     | 
    
         
             
                        p << " #{@meta.get[:doctitlepart]}"
         
     | 
| 
       103 
103 
     | 
    
         
             
                      end
         
     | 
| 
       104 
104 
     | 
    
         
             
                      @meta.get[:doctitleamdlabel] || @meta.get[:doctitleamd] ||
         
     | 
| 
         @@ -19,7 +19,7 @@ l’adresse ci-après ou au comité membre de l’ISO dans le pays du demandeur. 
     | 
|
| 
       19 
19 
     | 
    
         
             
                ISO copyright office<br/>
         
     | 
| 
       20 
20 
     | 
    
         
             
                CP 401 • Ch. de Blandonnet 8<br/>
         
     | 
| 
       21 
21 
     | 
    
         
             
                CH-1214 Vernier, Geneva<br/>
         
     | 
| 
       22 
     | 
    
         
            -
                Tél 
     | 
| 
      
 22 
     | 
    
         
            +
                Tél: +41 22 749 01 11<br/>
         
     | 
| 
       23 
23 
     | 
    
         
             
                Email: copyright@iso.org<br/>
         
     | 
| 
       24 
24 
     | 
    
         
             
                Website: www.iso.org
         
     | 
| 
       25 
25 
     | 
    
         
             
              </p>
         
     | 
| 
         @@ -14,7 +14,7 @@ 
     | 
|
| 
       14 
14 
     | 
    
         
             
                Бюро ISO по охране авторских прав<br/>
         
     | 
| 
       15 
15 
     | 
    
         
             
                CP 401 • Ch. de Blandonnet 8<br/>
         
     | 
| 
       16 
16 
     | 
    
         
             
                CH-1214 Vernier, Geneva<br/>
         
     | 
| 
       17 
     | 
    
         
            -
                 
     | 
| 
      
 17 
     | 
    
         
            +
                Тел: +41 22 749 01 11<br/>
         
     | 
| 
       18 
18 
     | 
    
         
             
                Электронная почта: copyright@iso.org<br/>
         
     | 
| 
       19 
19 
     | 
    
         
             
                Сайт: www.iso.org
         
     | 
| 
       20 
20 
     | 
    
         
             
              </p>
         
     | 
| 
         @@ -20,7 +20,7 @@ at the address below or ISO's member body in the country of the requester. 
     | 
|
| 
       20 
20 
     | 
    
         
             
                ISO copyright office<br/>
         
     | 
| 
       21 
21 
     | 
    
         
             
                CP 401 • Ch. de Blandonnet 8<br/>
         
     | 
| 
       22 
22 
     | 
    
         
             
                CH-1214 Vernier, Geneva<br/>
         
     | 
| 
       23 
     | 
    
         
            -
                Phone 
     | 
| 
      
 23 
     | 
    
         
            +
                Phone: +41 22 749 01 11<br/>
         
     | 
| 
       24 
24 
     | 
    
         
             
                Email: copyright@iso.org<br/>
         
     | 
| 
       25 
25 
     | 
    
         
             
                Website: www.iso.org
         
     | 
| 
       26 
26 
     | 
    
         
             
              </p>
         
     | 
| 
         @@ -5,6 +5,7 @@ require "json" 
     | 
|
| 
       5 
5 
     | 
    
         
             
            require "pathname"
         
     | 
| 
       6 
6 
     | 
    
         
             
            require "open-uri"
         
     | 
| 
       7 
7 
     | 
    
         
             
            require "twitter_cldr"
         
     | 
| 
      
 8 
     | 
    
         
            +
            require "pubid-iso"
         
     | 
| 
       8 
9 
     | 
    
         | 
| 
       9 
10 
     | 
    
         
             
            module Metanorma
         
     | 
| 
       10 
11 
     | 
    
         
             
              module ISO
         
     | 
| 
         @@ -72,7 +73,6 @@ module Metanorma 
     | 
|
| 
       72 
73 
     | 
    
         
             
                  def iso_id(node, xml)
         
     | 
| 
       73 
74 
     | 
    
         
             
                    (!@amd && node.attr("docnumber")) || (@amd && node.attr("updates")) or
         
     | 
| 
       74 
75 
     | 
    
         
             
                      return
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
76 
     | 
    
         
             
                    dn = id_stage_prefix(iso_id1(node), node)
         
     | 
| 
       77 
77 
     | 
    
         
             
                    dns = [id_year(dn, node, mode: :default),
         
     | 
| 
       78 
78 
     | 
    
         
             
                           id_year(dn, node, mode: :force),
         
     | 
| 
         @@ -80,6 +80,25 @@ module Metanorma 
     | 
|
| 
       80 
80 
     | 
    
         
             
                    iso_id_out(node, xml, dns)
         
     | 
| 
       81 
81 
     | 
    
         
             
                  end
         
     | 
| 
       82 
82 
     | 
    
         | 
| 
      
 83 
     | 
    
         
            +
            =begin
         
     | 
| 
      
 84 
     | 
    
         
            +
                  def iso_id(node, _xml)
         
     | 
| 
      
 85 
     | 
    
         
            +
                    (!@amd && node.attr("docnumber")) || (@amd && node.attr("updates")) or
         
     | 
| 
      
 86 
     | 
    
         
            +
                      return
         
     | 
| 
      
 87 
     | 
    
         
            +
                    params = {
         
     | 
| 
      
 88 
     | 
    
         
            +
                      number: (@amd ? node.attr("updates") : node.attr("docnumber")),
         
     | 
| 
      
 89 
     | 
    
         
            +
                      part: node.attr("partnumber"),
         
     | 
| 
      
 90 
     | 
    
         
            +
                      amendment_number: node.attr("amendment-number"),
         
     | 
| 
      
 91 
     | 
    
         
            +
                      corrigendum_number: node.attr("corrigendum-number"),
         
     | 
| 
      
 92 
     | 
    
         
            +
                      language: node.attr("language") || "en",
         
     | 
| 
      
 93 
     | 
    
         
            +
                      urn_stage: "#{get_stage(node)}.#{get_substage(node)}",
         
     | 
| 
      
 94 
     | 
    
         
            +
                      stage: id_stage_abbr(get_stage(node), get_substage(node), node, true),
         
     | 
| 
      
 95 
     | 
    
         
            +
                      type: doctype(node),
         
     | 
| 
      
 96 
     | 
    
         
            +
                      year: node.attr("copyright-year") || node.attr("updated-date")&.sub(/-.*$/, ""),
         
     | 
| 
      
 97 
     | 
    
         
            +
                      copublisher: node.attr("agency"),
         
     | 
| 
      
 98 
     | 
    
         
            +
                    }
         
     | 
| 
      
 99 
     | 
    
         
            +
                  end
         
     | 
| 
      
 100 
     | 
    
         
            +
            =end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
       83 
102 
     | 
    
         
             
                  def iso_id_out(node, xml, dns)
         
     | 
| 
       84 
103 
     | 
    
         
             
                    xml.docidentifier dns[0], **attr_code(type: "ISO")
         
     | 
| 
       85 
104 
     | 
    
         
             
                    xml.docidentifier dns[2], **attr_code(type: "iso-undated")
         
     | 
| 
         @@ -1285,7 +1285,12 @@ 
     | 
|
| 
       1285 
1285 
     | 
    
         
             
              </define>
         
     | 
| 
       1286 
1286 
     | 
    
         
             
              <define name="span">
         
     | 
| 
       1287 
1287 
     | 
    
         
             
                <element name="span">
         
     | 
| 
       1288 
     | 
    
         
            -
                  < 
     | 
| 
      
 1288 
     | 
    
         
            +
                  <optional>
         
     | 
| 
      
 1289 
     | 
    
         
            +
                    <attribute name="class"/>
         
     | 
| 
      
 1290 
     | 
    
         
            +
                  </optional>
         
     | 
| 
      
 1291 
     | 
    
         
            +
                  <optional>
         
     | 
| 
      
 1292 
     | 
    
         
            +
                    <attribute name="style"/>
         
     | 
| 
      
 1293 
     | 
    
         
            +
                  </optional>
         
     | 
| 
       1289 
1294 
     | 
    
         
             
                  <oneOrMore>
         
     | 
| 
       1290 
1295 
     | 
    
         
             
                    <ref name="TextElement"/>
         
     | 
| 
       1291 
1296 
     | 
    
         
             
                  </oneOrMore>
         
     | 
| 
         @@ -2504,6 +2509,16 @@ 
     | 
|
| 
       2504 
2509 
     | 
    
         
             
                      <text/>
         
     | 
| 
       2505 
2510 
     | 
    
         
             
                    </element>
         
     | 
| 
       2506 
2511 
     | 
    
         
             
                  </optional>
         
     | 
| 
      
 2512 
     | 
    
         
            +
                  <optional>
         
     | 
| 
      
 2513 
     | 
    
         
            +
                    <element name="amendment">
         
     | 
| 
      
 2514 
     | 
    
         
            +
                      <text/>
         
     | 
| 
      
 2515 
     | 
    
         
            +
                    </element>
         
     | 
| 
      
 2516 
     | 
    
         
            +
                  </optional>
         
     | 
| 
      
 2517 
     | 
    
         
            +
                  <optional>
         
     | 
| 
      
 2518 
     | 
    
         
            +
                    <element name="corrigendum">
         
     | 
| 
      
 2519 
     | 
    
         
            +
                      <text/>
         
     | 
| 
      
 2520 
     | 
    
         
            +
                    </element>
         
     | 
| 
      
 2521 
     | 
    
         
            +
                  </optional>
         
     | 
| 
       2507 
2522 
     | 
    
         
             
                  <optional>
         
     | 
| 
       2508 
2523 
     | 
    
         
             
                    <element name="language">
         
     | 
| 
       2509 
2524 
     | 
    
         
             
                      <text/>
         
     | 
    
        data/lib/metanorma/iso/reqt.rng
    CHANGED
    
    
    
        data/metanorma-iso.gemspec
    CHANGED
    
    | 
         @@ -29,11 +29,12 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       29 
29 
     | 
    
         
             
              spec.test_files    = `git ls-files -- {spec}/*`.split("\n")
         
     | 
| 
       30 
30 
     | 
    
         
             
              spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
              spec.add_dependency "metanorma-standoc", "~> 2. 
     | 
| 
      
 32 
     | 
    
         
            +
              spec.add_dependency "metanorma-standoc", "~> 2.2.0"
         
     | 
| 
       33 
33 
     | 
    
         
             
              spec.add_dependency "mnconvert", "~> 1.14"
         
     | 
| 
       34 
34 
     | 
    
         
             
              spec.add_dependency "ruby-jing"
         
     | 
| 
       35 
35 
     | 
    
         
             
              spec.add_dependency "tokenizer", "~> 0.3.0"
         
     | 
| 
       36 
36 
     | 
    
         
             
              spec.add_dependency "twitter_cldr"
         
     | 
| 
      
 37 
     | 
    
         
            +
              spec.add_dependency "pubid-iso"
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
39 
     | 
    
         
             
              spec.add_development_dependency "debug"
         
     | 
| 
       39 
40 
     | 
    
         
             
              spec.add_development_dependency "equivalent-xml", "~> 0.6"
         
     | 
| 
         @@ -126,66 +126,6 @@ RSpec.describe IsoDoc do 
     | 
|
| 
       126 
126 
     | 
    
         
             
                expect(File.exist?("spec/assets/iso.pdf")).to be true
         
     | 
| 
       127 
127 
     | 
    
         
             
              end
         
     | 
| 
       128 
128 
     | 
    
         | 
| 
       129 
     | 
    
         
            -
              it "converts annex subheadings to h2Annex class for Word" do
         
     | 
| 
       130 
     | 
    
         
            -
                IsoDoc::Iso::WordConvert
         
     | 
| 
       131 
     | 
    
         
            -
                  .new(WORD_HTML_CSS.dup)
         
     | 
| 
       132 
     | 
    
         
            -
                  .convert("test", <<~"INPUT", false)
         
     | 
| 
       133 
     | 
    
         
            -
                    <iso-standard xmlns="http://riboseinc.com/isoxml">
         
     | 
| 
       134 
     | 
    
         
            -
                      <annex id="P" inline-header="false" obligation="normative">
         
     | 
| 
       135 
     | 
    
         
            -
                        <title>Annex</title>
         
     | 
| 
       136 
     | 
    
         
            -
                        <clause id="Q" inline-header="false" obligation="normative">
         
     | 
| 
       137 
     | 
    
         
            -
                          <title>A.1
         
     | 
| 
       138 
     | 
    
         
            -
                            <tab/>
         
     | 
| 
       139 
     | 
    
         
            -
                            Annex A.1</title>
         
     | 
| 
       140 
     | 
    
         
            -
                        </clause>
         
     | 
| 
       141 
     | 
    
         
            -
                        <appendix id="Q2" inline-header="false" obligation="normative">
         
     | 
| 
       142 
     | 
    
         
            -
                          <title>Appendix 1
         
     | 
| 
       143 
     | 
    
         
            -
                            <tab/>
         
     | 
| 
       144 
     | 
    
         
            -
                            An Appendix</title>
         
     | 
| 
       145 
     | 
    
         
            -
                        </appendix>
         
     | 
| 
       146 
     | 
    
         
            -
                      </annex>
         
     | 
| 
       147 
     | 
    
         
            -
                      <bibliography>
         
     | 
| 
       148 
     | 
    
         
            -
                        <references id="R" normative="false"><title>Bibliography</title></references>
         
     | 
| 
       149 
     | 
    
         
            -
                      </bibliography>
         
     | 
| 
       150 
     | 
    
         
            -
                    </iso-standard>
         
     | 
| 
       151 
     | 
    
         
            -
                  INPUT
         
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       153 
     | 
    
         
            -
                word = File.read("test.doc", encoding: "UTF-8")
         
     | 
| 
       154 
     | 
    
         
            -
                  .sub(/^.*<div class="WordSection3">/m, '<div class="WordSection3">')
         
     | 
| 
       155 
     | 
    
         
            -
                  .sub(%r{<br[^>]*>\s*<div class="colophon".*$}m, "")
         
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
                expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
         
     | 
| 
       158 
     | 
    
         
            -
                  <div class="WordSection3">
         
     | 
| 
       159 
     | 
    
         
            -
                    <p class="zzSTDTitle1"/>
         
     | 
| 
       160 
     | 
    
         
            -
                    <p class="MsoNormal">
         
     | 
| 
       161 
     | 
    
         
            -
                      <br clear="all" style="mso-special-character:line-break;page-break-before:always"/>
         
     | 
| 
       162 
     | 
    
         
            -
                    </p>
         
     | 
| 
       163 
     | 
    
         
            -
                    <div class="Section3">
         
     | 
| 
       164 
     | 
    
         
            -
                      <a id="P" name="P"/>
         
     | 
| 
       165 
     | 
    
         
            -
                      <p class="ANNEX">Annex</p>
         
     | 
| 
       166 
     | 
    
         
            -
                      <div>
         
     | 
| 
       167 
     | 
    
         
            -
                        <a id="Q" name="Q"/>
         
     | 
| 
       168 
     | 
    
         
            -
                        <p class="h2Annex">A.1
         
     | 
| 
       169 
     | 
    
         
            -
                          <span style="mso-tab-count:1">  </span>
         
     | 
| 
       170 
     | 
    
         
            -
                          Annex A.1</p>
         
     | 
| 
       171 
     | 
    
         
            -
                      </div>
         
     | 
| 
       172 
     | 
    
         
            -
                      <div>
         
     | 
| 
       173 
     | 
    
         
            -
                        <a id="Q2" name="Q2"/>
         
     | 
| 
       174 
     | 
    
         
            -
                        <p class="h2Annex">Appendix 1
         
     | 
| 
       175 
     | 
    
         
            -
                          <span style="mso-tab-count:1">  </span>
         
     | 
| 
       176 
     | 
    
         
            -
                          An Appendix</p>
         
     | 
| 
       177 
     | 
    
         
            -
                      </div>
         
     | 
| 
       178 
     | 
    
         
            -
                    </div>
         
     | 
| 
       179 
     | 
    
         
            -
                    <p class='MsoNormal'>
         
     | 
| 
       180 
     | 
    
         
            -
                      <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
         
     | 
| 
       181 
     | 
    
         
            -
                    </p>
         
     | 
| 
       182 
     | 
    
         
            -
                    <div>
         
     | 
| 
       183 
     | 
    
         
            -
                      <p class='BiblioTitle'>Bibliography</p>
         
     | 
| 
       184 
     | 
    
         
            -
                    </div>
         
     | 
| 
       185 
     | 
    
         
            -
                  </div>
         
     | 
| 
       186 
     | 
    
         
            -
                OUTPUT
         
     | 
| 
       187 
     | 
    
         
            -
              end
         
     | 
| 
       188 
     | 
    
         
            -
             
     | 
| 
       189 
129 
     | 
    
         
             
              it "populates Word template with terms reference labels" do
         
     | 
| 
       190 
130 
     | 
    
         
             
                IsoDoc::Iso::WordConvert
         
     | 
| 
       191 
131 
     | 
    
         
             
                  .new(WORD_HTML_CSS.dup)
         
     | 
| 
         @@ -817,7 +757,7 @@ RSpec.describe IsoDoc do 
     | 
|
| 
       817 
757 
     | 
    
         
             
                    </p>
         
     | 
| 
       818 
758 
     | 
    
         
             
                    <div class="Section3">
         
     | 
| 
       819 
759 
     | 
    
         
             
                      <a id="P" name="P"/>
         
     | 
| 
       820 
     | 
    
         
            -
                      <div class=" 
     | 
| 
      
 760 
     | 
    
         
            +
                      <div class="MsoNormal" style='text-align:center;'>
         
     | 
| 
       821 
761 
     | 
    
         
             
                        <a id="samplecode" name="samplecode"/>
         
     | 
| 
       822 
762 
     | 
    
         
             
                        <p class="MsoNormal">Hello</p>
         
     | 
| 
       823 
763 
     | 
    
         
             
                        <p class="MsoNormal">Key</p>
         
     | 
| 
         @@ -864,7 +804,7 @@ RSpec.describe IsoDoc do 
     | 
|
| 
       864 
804 
     | 
    
         
             
                  .sub(/^.*<div class="WordSection3">/m, '<div class="WordSection3">')
         
     | 
| 
       865 
805 
     | 
    
         
             
                  .sub(%r{<br[^>]*>\s*<div class="colophon".*$}m, "")
         
     | 
| 
       866 
806 
     | 
    
         
             
                expect(xmlpp(word)).to be_equivalent_to xmlpp(<<~"OUTPUT")
         
     | 
| 
       867 
     | 
    
         
            -
             
     | 
| 
      
 807 
     | 
    
         
            +
                  <div class='WordSection3'>
         
     | 
| 
       868 
808 
     | 
    
         
             
                     <p class='zzSTDTitle1'/>
         
     | 
| 
       869 
809 
     | 
    
         
             
                     <p class='MsoNormal'>
         
     | 
| 
       870 
810 
     | 
    
         
             
                       <br clear='all' style='mso-special-character:line-break;page-break-before:always'/>
         
     | 
| 
         @@ -904,11 +844,9 @@ RSpec.describe IsoDoc do 
     | 
|
| 
       904 
844 
     | 
    
         
             
                            <br/>
         
     | 
| 
       905 
845 
     | 
    
         
             
                            CH-1214 Vernier, Geneva, Switzerland
         
     | 
| 
       906 
846 
     | 
    
         
             
                            <br/>
         
     | 
| 
       907 
     | 
    
         
            -
                             
     | 
| 
       908 
     | 
    
         
            -
                            <br/>
         
     | 
| 
       909 
     | 
    
         
            -
                            Fax + 41 22 749 09 47
         
     | 
| 
      
 847 
     | 
    
         
            +
                            Phone: +41 22 749 01 11
         
     | 
| 
       910 
848 
     | 
    
         
             
                            <br/>
         
     | 
| 
       911 
     | 
    
         
            -
                            copyright@iso.org
         
     | 
| 
      
 849 
     | 
    
         
            +
                            Email: copyright@iso.org
         
     | 
| 
       912 
850 
     | 
    
         
             
                            <br/>
         
     | 
| 
       913 
851 
     | 
    
         
             
                            www.iso.org</p>
         
     | 
| 
       914 
852 
     | 
    
         
             
                        </clause>
         
     | 
| 
         @@ -951,11 +889,9 @@ RSpec.describe IsoDoc do 
     | 
|
| 
       951 
889 
     | 
    
         
             
                            <br/>
         
     | 
| 
       952 
890 
     | 
    
         
             
                            CH-1214 Vernier, Geneva, Switzerland
         
     | 
| 
       953 
891 
     | 
    
         
             
                            <br/>
         
     | 
| 
       954 
     | 
    
         
            -
                             
     | 
| 
       955 
     | 
    
         
            -
                            <br/>
         
     | 
| 
       956 
     | 
    
         
            -
                            Fax + 41 22 749 09 47
         
     | 
| 
      
 892 
     | 
    
         
            +
                            Phone: +41 22 749 01 11
         
     | 
| 
       957 
893 
     | 
    
         
             
                            <br/>
         
     | 
| 
       958 
     | 
    
         
            -
                            copyright@iso.org
         
     | 
| 
      
 894 
     | 
    
         
            +
                            Email: copyright@iso.org
         
     | 
| 
       959 
895 
     | 
    
         
             
                            <br/>
         
     | 
| 
       960 
896 
     | 
    
         
             
                            www.iso.org</p>
         
     | 
| 
       961 
897 
     | 
    
         
             
                        </clause>
         
     | 
| 
         @@ -1015,13 +951,10 @@ RSpec.describe IsoDoc do 
     | 
|
| 
       1015 
951 
     | 
    
         
             
                          CH-1214 Vernier, Geneva, Switzerland
         
     | 
| 
       1016 
952 
     | 
    
         | 
| 
       1017 
953 
     | 
    
         
             
                          <br/>
         
     | 
| 
       1018 
     | 
    
         
            -
                           
     | 
| 
       1019 
     | 
    
         
            -
             
     | 
| 
       1020 
     | 
    
         
            -
                          <br/>
         
     | 
| 
       1021 
     | 
    
         
            -
                          Fax + 41 22 749 09 47
         
     | 
| 
      
 954 
     | 
    
         
            +
                          Phone: +41 22 749 01 11
         
     | 
| 
       1022 
955 
     | 
    
         | 
| 
       1023 
956 
     | 
    
         
             
                          <br/>
         
     | 
| 
       1024 
     | 
    
         
            -
                          copyright@iso.org
         
     | 
| 
      
 957 
     | 
    
         
            +
                          Email: copyright@iso.org
         
     | 
| 
       1025 
958 
     | 
    
         | 
| 
       1026 
959 
     | 
    
         
             
                          <br/>
         
     | 
| 
       1027 
960 
     | 
    
         
             
                          www.iso.org#{' '}</p>
         
     |