metanorma-iso 1.3.8 → 1.3.9
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/asciidoctor/iso/biblio.rng +1 -1
- data/lib/asciidoctor/iso/cleanup.rb +32 -5
- data/lib/asciidoctor/iso/iso_intro.xml +46 -0
- data/lib/asciidoctor/iso/validate_section.rb +2 -2
- data/lib/isodoc/iso/base_convert.rb +31 -8
- data/lib/isodoc/iso/html/html_iso_intro.html +1 -27
- data/lib/isodoc/iso/html/html_iso_titlepage.html +3 -2
- data/lib/isodoc/iso/html/isodoc.scss +51 -3
- data/lib/isodoc/iso/html/word_iso_intro.html +2 -64
- data/lib/isodoc/iso/html/word_iso_titlepage.html +6 -3
- data/lib/isodoc/iso/html_convert.rb +40 -7
- data/lib/isodoc/iso/word_convert.rb +56 -6
- data/lib/metanorma/iso/version.rb +1 -1
- data/spec/asciidoctor-iso/base_spec.rb +5 -5
- data/spec/isodoc/postproc_spec.rb +103 -4
- data/spec/spec_helper.rb +8 -0
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8dc143503bcfc2ff91eb0c405c76219646009e57557038f35cc2e0ed1ff72a91
         | 
| 4 | 
            +
              data.tar.gz: 93f9648e76ad5d099cd967d726000d8ebbc06821a0c2d9f807274eaa3a10e071
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 8f09feffde8baad445d16fea77828d154515cedd1b79f8692711092292875e55d423668a9429c3a708ede2c12a467e1ea8d3c255a38e035fa85678265498022d
         | 
| 7 | 
            +
              data.tar.gz: f383f811b962a3fcbf517fff73bc7322fab6718f8925aef237b40c917c71d565fd3db0f4f82a52f41cdfada039c106069970f50b80688aa01961152d66fffb8e
         | 
| @@ -58,6 +58,8 @@ module Asciidoctor | |
| 58 58 | 
             
                  end
         | 
| 59 59 |  | 
| 60 60 | 
             
                  PUBLISHER = "./contributor[role/@type = 'publisher']/organization".freeze
         | 
| 61 | 
            +
                  OTHERIDS = "@type = 'DOI' or @type = 'metanorma' or @type = 'ISSN' or "\
         | 
| 62 | 
            +
                    "@type = 'ISBN'".freeze
         | 
| 61 63 |  | 
| 62 64 | 
             
                  def pub_class(bib)
         | 
| 63 65 | 
             
                    return 1 if bib.at("#{PUBLISHER}[abbreviation = 'ISO']")
         | 
| @@ -66,8 +68,7 @@ module Asciidoctor | |
| 66 68 | 
             
                    return 2 if bib.at("#{PUBLISHER}[abbreviation = 'IEC']")
         | 
| 67 69 | 
             
                    return 2 if bib.at("#{PUBLISHER}[name = 'International "\
         | 
| 68 70 | 
             
                                       "Electrotechnical Commission']")
         | 
| 69 | 
            -
                    return 3 if bib.at("./docidentifier[@type][not( | 
| 70 | 
            -
                                       "@type = 'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")
         | 
| 71 | 
            +
                    return 3 if bib.at("./docidentifier[@type][not(#{OTHERIDS})]")
         | 
| 71 72 | 
             
                    4
         | 
| 72 73 | 
             
                  end
         | 
| 73 74 |  | 
| @@ -87,14 +88,40 @@ module Asciidoctor | |
| 87 88 | 
             
                  def sort_biblio_key(bib)
         | 
| 88 89 | 
             
                    pubclass = pub_class(bib)
         | 
| 89 90 | 
             
                    num = bib&.at("./docnumber")&.text
         | 
| 90 | 
            -
                    id = bib&.at("./docidentifier[not( | 
| 91 | 
            -
                                       "@type = 'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")
         | 
| 91 | 
            +
                    id = bib&.at("./docidentifier[not(#{OTHERIDS})]")
         | 
| 92 92 | 
             
                    metaid = bib&.at("./docidentifier[@type = 'metanorma']")&.text
         | 
| 93 93 | 
             
                    abbrid = metaid unless /^\[\d+\]$/.match(metaid)
         | 
| 94 94 | 
             
                    type = id['type'] if id
         | 
| 95 95 | 
             
                    title = bib&.at("./title[@type = 'main']")&.text ||
         | 
| 96 96 | 
             
                      bib&.at("./title")&.text || bib&.at("./formattedref")&.text
         | 
| 97 | 
            -
                    "#{pubclass} :: #{type} ::  | 
| 97 | 
            +
                    "#{pubclass} :: #{type} :: "\
         | 
| 98 | 
            +
                      "#{num.nil? ? abbrid : sprintf("%09d", num.to_i)} :: "\
         | 
| 99 | 
            +
                      "#{id&.text} :: #{title}"
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  def boilerplate_cleanup(xmldoc)
         | 
| 103 | 
            +
                    super
         | 
| 104 | 
            +
                    initial_boilerplace(xmldoc)
         | 
| 105 | 
            +
                  end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                  def initial_boilerplace(x)
         | 
| 108 | 
            +
                    return if x.at("//boilerplate")
         | 
| 109 | 
            +
                    preface = x.at("//preface") || x.at("//sections") || x.at("//annex") ||
         | 
| 110 | 
            +
                      x.at("//references") || return
         | 
| 111 | 
            +
                    preface.previous = boilerplate(x)
         | 
| 112 | 
            +
                  end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                  def boilerplate(x_orig)
         | 
| 115 | 
            +
                    x = x_orig.dup
         | 
| 116 | 
            +
                    # TODO variable
         | 
| 117 | 
            +
                    x.root.add_namespace(nil, "http://riboseinc.com/isoxml")
         | 
| 118 | 
            +
                    x = Nokogiri::XML(x.to_xml)
         | 
| 119 | 
            +
                    conv = IsoDoc::Iso::HtmlConvert.new({})
         | 
| 120 | 
            +
                    conv.metadata_init("en", "Latn", {})
         | 
| 121 | 
            +
                    conv.info(x, nil)
         | 
| 122 | 
            +
                    file = @boilerplateauthority ? "#{@localdir}/#{@boilerplateauthority}" :
         | 
| 123 | 
            +
                      File.join(File.dirname(__FILE__), "iso_intro.xml")
         | 
| 124 | 
            +
                      conv.populate_template((File.read(file, encoding: "UTF-8")), nil)
         | 
| 98 125 | 
             
                  end
         | 
| 99 126 | 
             
                end
         | 
| 100 127 | 
             
              end
         | 
| @@ -0,0 +1,46 @@ | |
| 1 | 
            +
            <boilerplate>
         | 
| 2 | 
            +
              <copyright-statement>
         | 
| 3 | 
            +
                <clause>
         | 
| 4 | 
            +
                <p id="authority1">
         | 
| 5 | 
            +
                © {{ agency }} {{ docyear }}, Published in Switzerland
         | 
| 6 | 
            +
              </p>
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              <p id="authority2">
         | 
| 9 | 
            +
                All rights
         | 
| 10 | 
            +
            reserved. Unless otherwise specified, no part of this publication may be
         | 
| 11 | 
            +
            reproduced or utilized otherwise in any form or by any means, electronic or
         | 
| 12 | 
            +
            mechanical, including photocopying, or posting on the internet or an intranet,
         | 
| 13 | 
            +
            without prior written permission. Permission can be requested from either ISO
         | 
| 14 | 
            +
            at the address below or ISO's member body in the country of the requester.
         | 
| 15 | 
            +
              </p>
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              <p id="authority3" align="left">
         | 
| 18 | 
            +
                ISO copyright office<br/>
         | 
| 19 | 
            +
                Ch. de Blandonnet 8 • CP 401<br/>
         | 
| 20 | 
            +
                CH-1214 Vernier, Geneva, Switzerland<br/>
         | 
| 21 | 
            +
                Tel.  + 41 22 749 01 11<br/>
         | 
| 22 | 
            +
                Fax  + 41 22 749 09 47<br/>
         | 
| 23 | 
            +
                copyright@iso.org<br/>
         | 
| 24 | 
            +
                www.iso.org
         | 
| 25 | 
            +
              </p>
         | 
| 26 | 
            +
            </clause>
         | 
| 27 | 
            +
              </copyright-statement>
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              {% if unpublished %}
         | 
| 30 | 
            +
              <license-statement>
         | 
| 31 | 
            +
                <clause>
         | 
| 32 | 
            +
            <title>Warning for WDs and CDs</title>
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            <p>This
         | 
| 35 | 
            +
            document is not an ISO International Standard. It is distributed for review and
         | 
| 36 | 
            +
            comment. It is subject to change without notice and may not be referred to as
         | 
| 37 | 
            +
            an International Standard.</p>
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            <p>Recipients
         | 
| 40 | 
            +
            of this draft are invited to submit, with their comments, notification of any
         | 
| 41 | 
            +
            relevant patent rights of which they are aware and to provide supporting
         | 
| 42 | 
            +
            documentation.</p>
         | 
| 43 | 
            +
            </clause>
         | 
| 44 | 
            +
              </license-statement>
         | 
| 45 | 
            +
            {% endif %}
         | 
| 46 | 
            +
            </boilerplate>
         | 
| @@ -164,8 +164,8 @@ module Asciidoctor | |
| 164 164 | 
             
                  end
         | 
| 165 165 |  | 
| 166 166 | 
             
                  ASSETS_TO_STYLE =
         | 
| 167 | 
            -
                    "//termsource | //formula | //termnote | //p | 
| 168 | 
            -
                    "//dt | //dd[not(p)] | //td[not(p)] | //th[not(p)]".freeze
         | 
| 167 | 
            +
                    "//termsource | //formula | //termnote | //p[not(ancestor::boilerplate)] | "\
         | 
| 168 | 
            +
                    "//li[not(p)] | //dt | //dd[not(p)] | //td[not(p)] | //th[not(p)]".freeze
         | 
| 169 169 |  | 
| 170 170 | 
             
                  NORM_BIBITEMS =
         | 
| 171 171 | 
             
                    "//references[title = 'Normative References']/bibitem".freeze
         | 
| @@ -58,6 +58,14 @@ module IsoDoc | |
| 58 58 | 
             
                  def error_parse(node, out)
         | 
| 59 59 | 
             
                    case node.name
         | 
| 60 60 | 
             
                    when "appendix" then clause_parse(node, out)
         | 
| 61 | 
            +
                    when "copyright-statement"
         | 
| 62 | 
            +
                      out.div **{class: "copyright"} do |div|
         | 
| 63 | 
            +
                        node.children.each { |n| parse(n, div) }
         | 
| 64 | 
            +
                      end
         | 
| 65 | 
            +
                    when "license-statement"
         | 
| 66 | 
            +
                      out.div **{class: "license"} do |div|
         | 
| 67 | 
            +
                        node.children.each { |n| parse(n, out) }
         | 
| 68 | 
            +
                      end
         | 
| 61 69 | 
             
                    else
         | 
| 62 70 | 
             
                      super
         | 
| 63 71 | 
             
                    end
         | 
| @@ -125,15 +133,15 @@ module IsoDoc | |
| 125 133 | 
             
                  end
         | 
| 126 134 |  | 
| 127 135 | 
             
                  def example_span_label(node, div, name)
         | 
| 128 | 
            -
             | 
| 129 | 
            -
             | 
| 130 | 
            -
             | 
| 131 | 
            -
             | 
| 132 | 
            -
             | 
| 133 | 
            -
             | 
| 134 | 
            -
             | 
| 136 | 
            +
                    n = get_anchors[node["id"]]
         | 
| 137 | 
            +
                    div.span **{ class: "example_label" } do |p|
         | 
| 138 | 
            +
                      lbl = (n.nil? || n[:label].nil? || n[:label].empty?) ? @example_lbl :
         | 
| 139 | 
            +
                        l10n("#{@example_lbl} #{n[:label]}")
         | 
| 140 | 
            +
                      p << lbl
         | 
| 141 | 
            +
                      name and !lbl.nil? and p << " — "
         | 
| 142 | 
            +
                      name and name.children.each { |n| parse(n, div) }
         | 
| 143 | 
            +
                    end
         | 
| 135 144 | 
             
                  end
         | 
| 136 | 
            -
                end
         | 
| 137 145 |  | 
| 138 146 | 
             
                  def example_p_parse(node, div)
         | 
| 139 147 | 
             
                    name = node&.at(ns("./name"))&.remove
         | 
| @@ -189,6 +197,21 @@ module IsoDoc | |
| 189 197 | 
             
                  def clausedelim
         | 
| 190 198 | 
             
                    ""
         | 
| 191 199 | 
             
                  end
         | 
| 200 | 
            +
             | 
| 201 | 
            +
                  def boilerplate(node, out)
         | 
| 202 | 
            +
                    boilerplate = node.at(ns("//boilerplate")) or return
         | 
| 203 | 
            +
                    out.div **{class: "authority"} do |s|
         | 
| 204 | 
            +
                      boilerplate.children.each do |n|
         | 
| 205 | 
            +
                        if n.name == "title"
         | 
| 206 | 
            +
                          s.h1 do |h|
         | 
| 207 | 
            +
                            n.children.each { |nn| parse(nn, h) }
         | 
| 208 | 
            +
                          end
         | 
| 209 | 
            +
                        else
         | 
| 210 | 
            +
                          parse(n, s)
         | 
| 211 | 
            +
                        end
         | 
| 212 | 
            +
                      end
         | 
| 213 | 
            +
                    end
         | 
| 214 | 
            +
                  end
         | 
| 192 215 | 
             
                end
         | 
| 193 216 | 
             
              end
         | 
| 194 217 | 
             
            end
         | 
| @@ -1,30 +1,4 @@ | |
| 1 | 
            -
            <div  | 
| 2 | 
            -
              <p class="year">
         | 
| 3 | 
            -
                © {{ agency }} {{ docyear }}, Published in Switzerland
         | 
| 4 | 
            -
              </p>
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              <p class="message">
         | 
| 7 | 
            -
                All rights
         | 
| 8 | 
            -
            reserved. Unless otherwise specified, no part of this publication may be
         | 
| 9 | 
            -
            reproduced or utilized otherwise in any form or by any means, electronic or
         | 
| 10 | 
            -
            mechanical, including photocopying, or posting on the internet or an intranet,
         | 
| 11 | 
            -
            without prior written permission. Permission can be requested from either ISO
         | 
| 12 | 
            -
            at the address below or ISO’s member body in the country of the requester.
         | 
| 13 | 
            -
              </p>
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              <p class="name">ISO copyright office</p>
         | 
| 16 | 
            -
              <p class="address">
         | 
| 17 | 
            -
                Ch. de Blandonnet 8 • CP 401<br/>
         | 
| 18 | 
            -
                CH-1214 Vernier, Geneva, Switzerland<br/>
         | 
| 19 | 
            -
                Tel.  + 41 22 749 01 11<br/>
         | 
| 20 | 
            -
                Fax  + 41 22 749 09 47<br/>
         | 
| 21 | 
            -
                copyright@iso.org<br/>
         | 
| 22 | 
            -
                www.iso.org
         | 
| 23 | 
            -
              </p>
         | 
| 24 | 
            -
            </div>
         | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
            </div>
         | 
| 1 | 
            +
            <div id="copyright"/>
         | 
| 28 2 |  | 
| 29 3 | 
             
            <nav>
         | 
| 30 4 |  | 
| @@ -44,7 +44,8 @@ name="CVP_Secretariat_Loca">Secretariat</a>: {{ secretariat }}</p> | |
| 44 44 |  | 
| 45 45 | 
             
            {% if unpublished %}
         | 
| 46 46 | 
             
            <div class="coverpage_warning">
         | 
| 47 | 
            -
             | 
| 47 | 
            +
              <div id="license"/>
         | 
| 48 | 
            +
            <!--
         | 
| 48 49 | 
             
            <p>Warning for WDs
         | 
| 49 50 | 
             
            and CDs</p>
         | 
| 50 51 |  | 
| @@ -57,6 +58,6 @@ an International Standard.</p> | |
| 57 58 | 
             
            of this draft are invited to submit, with their comments, notification of any
         | 
| 58 59 | 
             
            relevant patent rights of which they are aware and to provide supporting
         | 
| 59 60 | 
             
            documentation.</p>
         | 
| 60 | 
            -
             | 
| 61 | 
            +
            -->
         | 
| 61 62 | 
             
            </div>
         | 
| 62 63 | 
             
            {% endif %}
         | 
| @@ -379,15 +379,12 @@ p.zzCopyright, li.zzCopyright, div.zzCopyright | |
| 379 379 | 
             
            	mso-style-unhide:no;
         | 
| 380 380 | 
             
            	mso-style-next:Normal;
         | 
| 381 381 | 
             
            	margin-top:0cm;
         | 
| 382 | 
            -
            	margin-right:14.2pt;
         | 
| 383 382 | 
             
            	margin-bottom:12.0pt;
         | 
| 384 | 
            -
            	margin-left:14.2pt;
         | 
| 385 383 | 
             
            	text-align:justify;
         | 
| 386 384 | 
             
            	line-height:12.0pt;
         | 
| 387 385 | 
             
            	mso-pagination:widow-orphan;
         | 
| 388 386 | 
             
            	tab-stops:20.15pt 25.7pt 481.15pt;
         | 
| 389 387 | 
             
            	border:none;
         | 
| 390 | 
            -
            	mso-border-alt:solid blue .5pt;
         | 
| 391 388 | 
             
            	padding:0cm;
         | 
| 392 389 | 
             
            	mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
         | 
| 393 390 | 
             
            	font-size:11.0pt;
         | 
| @@ -395,6 +392,57 @@ p.zzCopyright, li.zzCopyright, div.zzCopyright | |
| 395 392 | 
             
            	mso-fareast-font-family:$bodyfont;
         | 
| 396 393 | 
             
            	mso-bidi-font-family:$bodyfont;
         | 
| 397 394 | 
             
            	mso-ansi-language:EN-GB;}
         | 
| 395 | 
            +
            p.zzCopyright1
         | 
| 396 | 
            +
                    {mso-style-name:zzCopyright;
         | 
| 397 | 
            +
                    mso-style-noshow:yes;
         | 
| 398 | 
            +
                    mso-style-unhide:no;
         | 
| 399 | 
            +
                    mso-style-next:Normal;
         | 
| 400 | 
            +
                    margin-top:0cm;
         | 
| 401 | 
            +
                    margin-bottom:12.0pt;
         | 
| 402 | 
            +
                    text-align:justify;
         | 
| 403 | 
            +
                    line-height:12.0pt;
         | 
| 404 | 
            +
                    mso-pagination:widow-orphan;
         | 
| 405 | 
            +
                    tab-stops:20.15pt 25.7pt 481.15pt;
         | 
| 406 | 
            +
                    border:none;
         | 
| 407 | 
            +
                    padding:0cm;
         | 
| 408 | 
            +
                    mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
         | 
| 409 | 
            +
                    font-size:10.0pt;
         | 
| 410 | 
            +
                    font-family:$bodyfont;
         | 
| 411 | 
            +
                    mso-fareast-font-family:$bodyfont;
         | 
| 412 | 
            +
                    mso-bidi-font-family:$bodyfont;
         | 
| 413 | 
            +
                    mso-ansi-language:EN-GB;}
         | 
| 414 | 
            +
            p.zzAddress {
         | 
| 415 | 
            +
              margin:0cm;
         | 
| 416 | 
            +
              margin-bottom:.0001pt;
         | 
| 417 | 
            +
              margin-left:20.15pt;
         | 
| 418 | 
            +
            mso-layout-grid-align:none;
         | 
| 419 | 
            +
            text-autospace:none;
         | 
| 420 | 
            +
            padding:0cm;
         | 
| 421 | 
            +
            mso-padding-alt:0cm 4.0pt 0cm 4.0pt;
         | 
| 422 | 
            +
            font-size:10.0pt;
         | 
| 423 | 
            +
            font-family:$bodyfont;
         | 
| 424 | 
            +
            }
         | 
| 425 | 
            +
            p.zzWarning {
         | 
| 426 | 
            +
              border:none;
         | 
| 427 | 
            +
              mso-border-alt:solid windowtext .5pt;
         | 
| 428 | 
            +
            padding:0cm;
         | 
| 429 | 
            +
            mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
         | 
| 430 | 
            +
            font-size:10.0pt;
         | 
| 431 | 
            +
            mso-bidi-font-weight:bold;
         | 
| 432 | 
            +
            font-family:$bodyfont;
         | 
| 433 | 
            +
            }
         | 
| 434 | 
            +
            p.zzWarningHdr {
         | 
| 435 | 
            +
              margin-bottom:6.0pt;
         | 
| 436 | 
            +
              border:none;
         | 
| 437 | 
            +
              mso-border-alt:solid windowtext .5pt;
         | 
| 438 | 
            +
            padding:0cm;
         | 
| 439 | 
            +
            mso-padding-alt:1.0pt 4.0pt 1.0pt 4.0pt;
         | 
| 440 | 
            +
            font-size:10.0pt;
         | 
| 441 | 
            +
            mso-bidi-font-weight:bold;
         | 
| 442 | 
            +
            font-family:$bodyfont;
         | 
| 443 | 
            +
            text-align:center;
         | 
| 444 | 
            +
            font-weight:bold;
         | 
| 445 | 
            +
            }
         | 
| 398 446 | 
             
            p.zzSTDTitle, li.zzSTDTitle, div.zzSTDTitle
         | 
| 399 447 | 
             
            	{mso-style-name:zzSTDTitle;
         | 
| 400 448 | 
             
            	mso-style-noshow:yes;
         | 
| @@ -1,70 +1,8 @@ | |
| 1 1 | 
             
            <div style='mso-element:para-border-div;border:solid windowtext 1.0pt;
         | 
| 2 | 
            -
            border-bottom: | 
| 2 | 
            +
            border-bottom-alt:solid windowtext .5pt;mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:
         | 
| 3 3 | 
             
            solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 0cm 4.0pt;
         | 
| 4 4 | 
             
            margin-left:5.1pt;margin-right:5.1pt'>
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            <p class="zzCopyright" align="left" style='margin-top:2.0pt;margin-right:0cm;
         | 
| 7 | 
            -
            margin-bottom:12.0pt;margin-left:0cm;text-align:left;page-break-before:always;
         | 
| 8 | 
            -
            mso-layout-grid-align:none;text-autospace:none;border:none;mso-border-top-alt:
         | 
| 9 | 
            -
            solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;mso-border-right-alt:
         | 
| 10 | 
            -
            solid windowtext .5pt;padding:0cm;mso-padding-alt:1.0pt 4.0pt 0cm 4.0pt'><span
         | 
| 11 | 
            -
            lang="EN-GB" style='color:windowtext'>© {{ agency }} {{ docyear }}, Published in Switzerland.<o:p></o:p></span></p>
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            <p class="zzCopyright" style='margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;
         | 
| 14 | 
            -
            margin-left:0cm;mso-layout-grid-align:none;text-autospace:none;border:none;
         | 
| 15 | 
            -
            mso-border-left-alt:solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;
         | 
| 16 | 
            -
            padding:0cm;mso-padding-alt:0cm 4.0pt 0cm 4.0pt'><span lang="EN-GB"
         | 
| 17 | 
            -
            style='font-size:10.0pt;mso-bidi-font-size:11.0pt;color:windowtext'>All rights
         | 
| 18 | 
            -
            reserved. Unless otherwise specified, no part of this publication may be
         | 
| 19 | 
            -
            reproduced or utilized otherwise in any form or by any means, electronic or
         | 
| 20 | 
            -
            mechanical, including photocopying, or posting on the internet or an intranet,
         | 
| 21 | 
            -
            without prior written permission. Permission can be requested from either ISO
         | 
| 22 | 
            -
            at the address below or ISO’s member body in the country of the requester.<o:p></o:p></span></p>
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            <p class="zzCopyright" style='margin:0cm;margin-bottom:.0001pt;text-indent:20.15pt;
         | 
| 25 | 
            -
            mso-layout-grid-align:none;text-autospace:none;border:none;mso-border-left-alt:
         | 
| 26 | 
            -
            solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:0cm;
         | 
| 27 | 
            -
            mso-padding-alt:0cm 4.0pt 0cm 4.0pt'><span lang="EN-GB" style='font-size:10.0pt;
         | 
| 28 | 
            -
            mso-bidi-font-size:11.0pt;color:windowtext'>ISO copyright office<o:p></o:p></span></p>
         | 
| 29 | 
            -
             | 
| 30 | 
            -
            <p class="zzCopyright" style='margin:0cm;margin-bottom:.0001pt;text-indent:20.15pt;
         | 
| 31 | 
            -
            mso-layout-grid-align:none;text-autospace:none;border:none;mso-border-left-alt:
         | 
| 32 | 
            -
            solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:0cm;
         | 
| 33 | 
            -
            mso-padding-alt:0cm 4.0pt 0cm 4.0pt'><span lang="EN-GB" style='font-size:10.0pt;
         | 
| 34 | 
            -
            mso-bidi-font-size:11.0pt;color:windowtext'>Ch. de Blandonnet 8 • CP 401<o:p></o:p></span></p>
         | 
| 35 | 
            -
             | 
| 36 | 
            -
            <p class="zzCopyright" style='margin:0cm;margin-bottom:.0001pt;text-indent:20.15pt;
         | 
| 37 | 
            -
            mso-layout-grid-align:none;text-autospace:none;border:none;mso-border-left-alt:
         | 
| 38 | 
            -
            solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:0cm;
         | 
| 39 | 
            -
            mso-padding-alt:0cm 4.0pt 0cm 4.0pt'><span lang="EN-GB" style='font-size:10.0pt;
         | 
| 40 | 
            -
            mso-bidi-font-size:11.0pt;color:windowtext'>CH-1214 Vernier, Geneva,
         | 
| 41 | 
            -
            Switzerland<o:p></o:p></span></p>
         | 
| 42 | 
            -
             | 
| 43 | 
            -
            <p class="zzCopyright" style='margin:0cm;margin-bottom:.0001pt;text-indent:20.15pt;
         | 
| 44 | 
            -
            mso-layout-grid-align:none;text-autospace:none;border:none;mso-border-left-alt:
         | 
| 45 | 
            -
            solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:0cm;
         | 
| 46 | 
            -
            mso-padding-alt:0cm 4.0pt 0cm 4.0pt'><span lang="EN-GB" style='font-size:10.0pt;
         | 
| 47 | 
            -
            mso-bidi-font-size:11.0pt;color:windowtext'>Tel.  + 41 22 749 01 11<o:p></o:p></span></p>
         | 
| 48 | 
            -
             | 
| 49 | 
            -
            <p class="zzCopyright" style='margin:0cm;margin-bottom:.0001pt;text-indent:20.15pt;
         | 
| 50 | 
            -
            mso-layout-grid-align:none;text-autospace:none;border:none;mso-border-left-alt:
         | 
| 51 | 
            -
            solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:0cm;
         | 
| 52 | 
            -
            mso-padding-alt:0cm 4.0pt 0cm 4.0pt'><span lang="EN-GB" style='font-size:10.0pt;
         | 
| 53 | 
            -
            mso-bidi-font-size:11.0pt;color:windowtext'>Fax  + 41 22 749 09 47<o:p></o:p></span></p>
         | 
| 54 | 
            -
             | 
| 55 | 
            -
            <p class="zzCopyright" style='margin:0cm;margin-bottom:.0001pt;text-indent:20.15pt;
         | 
| 56 | 
            -
            mso-layout-grid-align:none;text-autospace:none;border:none;mso-border-left-alt:
         | 
| 57 | 
            -
            solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:0cm;
         | 
| 58 | 
            -
            mso-padding-alt:0cm 4.0pt 0cm 4.0pt'><span lang="EN-GB" style='font-size:10.0pt;
         | 
| 59 | 
            -
            mso-bidi-font-size:11.0pt;color:windowtext'>copyright@iso.org<o:p></o:p></span></p>
         | 
| 60 | 
            -
             | 
| 61 | 
            -
            <p class="zzCopyright" style='margin-top:0cm;margin-right:0cm;margin-bottom:12.0pt;
         | 
| 62 | 
            -
            margin-left:0cm;text-indent:20.15pt;mso-layout-grid-align:none;text-autospace:
         | 
| 63 | 
            -
            none;border:none;mso-border-left-alt:solid windowtext .5pt;mso-border-bottom-alt:
         | 
| 64 | 
            -
            solid windowtext .5pt;mso-border-right-alt:solid windowtext .5pt;padding:0cm;
         | 
| 65 | 
            -
            mso-padding-alt:0cm 4.0pt 1.0pt 4.0pt'><span lang="EN-GB" style='font-size:10.0pt;
         | 
| 66 | 
            -
            mso-bidi-font-size:11.0pt;color:windowtext'>www.iso.org<o:p></o:p></span></p>
         | 
| 67 | 
            -
             | 
| 5 | 
            +
            <div id="copyright"/>
         | 
| 68 6 | 
             
            </div>
         | 
| 69 7 |  | 
| 70 8 | 
             
            <p class="zzContents" style='margin-top:0cm'><span lang="EN-GB">Contents</span></p>
         | 
| @@ -60,11 +60,14 @@ lang="EN-GB" style='font-size:40.0pt'>{% if unpublished %}{{ stageabbr }} stage{ | |
| 60 60 | 
             
            <p class="MsoNormal" style='margin-bottom:6.0pt'><span lang="EN-GB"><o:p> </o:p></span></p>
         | 
| 61 61 |  | 
| 62 62 | 
             
            {% if unpublished %}
         | 
| 63 | 
            -
             | 
| 63 | 
            +
            <!--
         | 
| 64 64 | 
             
            <div style='mso-element:para-border-div;border:solid windowtext 1.0pt;
         | 
| 65 65 | 
             
            mso-border-alt:solid windowtext .5pt;padding:1.0pt 4.0pt 1.0pt 4.0pt;
         | 
| 66 66 | 
             
            margin-left:4.25pt;margin-right:4.25pt'>
         | 
| 67 | 
            +
            -->
         | 
| 67 68 |  | 
| 69 | 
            +
              <div id="license"/>
         | 
| 70 | 
            +
            <!--
         | 
| 68 71 | 
             
            <p class="MsoNormal" align="center" style='margin-bottom:6.0pt;text-align:center;
         | 
| 69 72 | 
             
            border:none;mso-border-alt:solid windowtext .5pt;padding:0cm;mso-padding-alt:
         | 
| 70 73 | 
             
            1.0pt 4.0pt 1.0pt 4.0pt'><b style='mso-bidi-font-weight:normal'><span
         | 
| @@ -85,9 +88,9 @@ of this draft are invited to submit, with their comments, notification of any | |
| 85 88 | 
             
            relevant patent rights of which they are aware and to provide supporting
         | 
| 86 89 | 
             
            documentation.</span><span lang="EN-GB" style='font-size:10.0pt;mso-bidi-font-size:
         | 
| 87 90 | 
             
            11.0pt'><o:p></o:p></span></p>
         | 
| 88 | 
            -
             | 
| 91 | 
            +
            -->
         | 
| 89 92 | 
             
            {% endif %}
         | 
| 90 93 |  | 
| 91 | 
            -
             | 
| 94 | 
            +
            <!--</div>-->
         | 
| 92 95 |  | 
| 93 96 |  | 
| @@ -12,18 +12,22 @@ module IsoDoc | |
| 12 12 |  | 
| 13 13 | 
             
                  def default_fonts(options)
         | 
| 14 14 | 
             
                    {
         | 
| 15 | 
            -
                      bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' : | 
| 16 | 
            -
             | 
| 17 | 
            -
                       | 
| 15 | 
            +
                      bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' :
         | 
| 16 | 
            +
                                 options[:alt] ? '"Lato",sans-serif' : '"Cambria",serif'),
         | 
| 17 | 
            +
                      headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' :
         | 
| 18 | 
            +
                                   options[:alt] ? '"Lato",sans-serif' : '"Cambria",serif'),
         | 
| 19 | 
            +
                      monospacefont: (options[:alt] ?  '"Space Mono",monospace' :
         | 
| 20 | 
            +
                                      '"Courier New",monospace'),
         | 
| 18 21 | 
             
                    }
         | 
| 19 22 | 
             
                  end
         | 
| 20 23 |  | 
| 21 24 | 
             
                  def default_file_locations(options)
         | 
| 22 25 | 
             
                    {
         | 
| 23 | 
            -
                      htmlstylesheet: options[:alt] ? html_doc_path("style-human.scss") : | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 26 | 
            +
                      htmlstylesheet: (options[:alt] ? html_doc_path("style-human.scss") :
         | 
| 27 | 
            +
                                       html_doc_path("style-iso.scss")),
         | 
| 28 | 
            +
                    htmlcoverpage: html_doc_path("html_iso_titlepage.html"),
         | 
| 29 | 
            +
                    htmlintropage: html_doc_path("html_iso_intro.html"),
         | 
| 30 | 
            +
                    scripts: html_doc_path("scripts.html"),
         | 
| 27 31 | 
             
                    }
         | 
| 28 32 | 
             
                  end
         | 
| 29 33 |  | 
| @@ -36,6 +40,35 @@ module IsoDoc | |
| 36 40 | 
             
                    insert
         | 
| 37 41 | 
             
                  end
         | 
| 38 42 |  | 
| 43 | 
            +
                  def make_body3(body, docxml)
         | 
| 44 | 
            +
                    body.div **{ class: "main-section" } do |div3|
         | 
| 45 | 
            +
                      boilerplate docxml, div3
         | 
| 46 | 
            +
                      abstract docxml, div3
         | 
| 47 | 
            +
                      foreword docxml, div3
         | 
| 48 | 
            +
                      introduction docxml, div3
         | 
| 49 | 
            +
                      middle docxml, div3
         | 
| 50 | 
            +
                      footnotes div3
         | 
| 51 | 
            +
                      comments div3
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
                  end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                  def html_preface(docxml)
         | 
| 56 | 
            +
                    super
         | 
| 57 | 
            +
                    authority_cleanup(docxml)
         | 
| 58 | 
            +
                    docxml
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  def authority_cleanup(docxml)
         | 
| 62 | 
            +
                    dest = docxml.at("//div[@id = 'copyright']")
         | 
| 63 | 
            +
                    auth = docxml.at("//div[@class = 'copyright']")
         | 
| 64 | 
            +
                    auth&.xpath(".//h1 | .//h2")&.each { |h| h["class"] = "IntroTitle" }
         | 
| 65 | 
            +
                    dest and auth and dest.replace(auth.remove)
         | 
| 66 | 
            +
                    dest = docxml.at("//div[@id = 'license']")
         | 
| 67 | 
            +
                    auth = docxml.at("//div[@class = 'license']")
         | 
| 68 | 
            +
                    auth&.xpath(".//h1 | .//h2")&.each { |h| h["class"] = "IntroTitle" }
         | 
| 69 | 
            +
                    dest and auth and dest.replace(auth.remove)
         | 
| 70 | 
            +
                  end
         | 
| 71 | 
            +
             | 
| 39 72 | 
             
                  include BaseConvert
         | 
| 40 73 | 
             
                end
         | 
| 41 74 | 
             
              end
         | 
| @@ -12,15 +12,18 @@ module IsoDoc | |
| 12 12 |  | 
| 13 13 | 
             
                  def default_fonts(options)
         | 
| 14 14 | 
             
                    {
         | 
| 15 | 
            -
                      bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' : | 
| 16 | 
            -
             | 
| 15 | 
            +
                      bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' :
         | 
| 16 | 
            +
                                 '"Cambria",serif'),
         | 
| 17 | 
            +
                      headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' :
         | 
| 18 | 
            +
                                   '"Cambria",serif'),
         | 
| 17 19 | 
             
                      monospacefont: '"Courier New",monospace',
         | 
| 18 20 | 
             
                    }
         | 
| 19 21 | 
             
                  end
         | 
| 20 22 |  | 
| 21 23 | 
             
                  def default_file_locations(options)
         | 
| 22 24 | 
             
                    {
         | 
| 23 | 
            -
                      htmlstylesheet: options[:alt] ? html_doc_path("style-human.scss") : | 
| 25 | 
            +
                      htmlstylesheet: (options[:alt] ? html_doc_path("style-human.scss") :
         | 
| 26 | 
            +
                                       html_doc_path("style-iso.scss")),
         | 
| 24 27 | 
             
                      htmlcoverpage: html_doc_path("html_iso_titlepage.html"),
         | 
| 25 28 | 
             
                      htmlintropage: html_doc_path("html_iso_intro.html"),
         | 
| 26 29 | 
             
                      scripts: html_doc_path("scripts.html"),
         | 
| @@ -44,17 +47,29 @@ module IsoDoc | |
| 44 47 | 
             
                    end
         | 
| 45 48 | 
             
                  end
         | 
| 46 49 |  | 
| 50 | 
            +
                  def make_body2(body, docxml)
         | 
| 51 | 
            +
                    body.div **{ class: "WordSection2" } do |div2|
         | 
| 52 | 
            +
                      boilerplate docxml, div2
         | 
| 53 | 
            +
                      abstract docxml, div2
         | 
| 54 | 
            +
                      foreword docxml, div2
         | 
| 55 | 
            +
                      introduction docxml, div2
         | 
| 56 | 
            +
                      div2.p { |p| p << " " } # placeholder
         | 
| 57 | 
            +
                    end
         | 
| 58 | 
            +
                    section_break(body)
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
             | 
| 47 61 | 
             
                  def colophon(body, docxml)
         | 
| 48 62 | 
             
                    stage =  @meta.get[:stage_int]
         | 
| 49 63 | 
             
                    return if !stage.nil? && stage < 60
         | 
| 50 | 
            -
                    body.br **{ clear: "all", style: "page-break-before:left; | 
| 64 | 
            +
                    body.br **{ clear: "all", style: "page-break-before:left;"\
         | 
| 65 | 
            +
                                "mso-break-type:section-break" }
         | 
| 51 66 | 
             
                    body.div **{ class: "colophon" } do |div|
         | 
| 52 67 | 
             
                    end
         | 
| 53 68 | 
             
                  end
         | 
| 54 69 |  | 
| 55 | 
            -
                  def figure_cleanup( | 
| 70 | 
            +
                  def figure_cleanup(xml)
         | 
| 56 71 | 
             
                    super
         | 
| 57 | 
            -
                     | 
| 72 | 
            +
                    xml.xpath("//div[@class = 'figure']//table[@class = 'dl']").each do |t|
         | 
| 58 73 | 
             
                      t["class"] = "figdl"
         | 
| 59 74 | 
             
                      d = t.add_previous_sibling("<div class='figdl'/>")
         | 
| 60 75 | 
             
                      t.parent = d.first
         | 
| @@ -77,6 +92,41 @@ module IsoDoc | |
| 77 92 | 
             
                    word_annex_cleanup1(docxml, 6)
         | 
| 78 93 | 
             
                  end
         | 
| 79 94 |  | 
| 95 | 
            +
                  def authority_hdr_cleanup(docxml)
         | 
| 96 | 
            +
                    docxml&.xpath("//div[@class = 'license']").each do |d|
         | 
| 97 | 
            +
                      d.xpath(".//h1").each do |p|
         | 
| 98 | 
            +
                        p.name = "p"
         | 
| 99 | 
            +
                        p["class"] = "zzWarningHdr"
         | 
| 100 | 
            +
                      end
         | 
| 101 | 
            +
                    end
         | 
| 102 | 
            +
                    docxml&.xpath("//div[@class = 'copyright']").each do |d|
         | 
| 103 | 
            +
                      d.xpath(".//h1").each do |p|
         | 
| 104 | 
            +
                        p.name = "p"
         | 
| 105 | 
            +
                        p["class"] = "zzCopyrightHdr"
         | 
| 106 | 
            +
                      end
         | 
| 107 | 
            +
                    end
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                  def authority_cleanup(docxml)
         | 
| 111 | 
            +
                    insert = docxml.at("//div[@id = 'license']")
         | 
| 112 | 
            +
                    auth = docxml&.at("//div[@class = 'license']")&.remove
         | 
| 113 | 
            +
                    auth&.xpath(".//p[not(@class)]")&.each { |p| p["class"] = "zzWarning" }
         | 
| 114 | 
            +
                    auth and insert.children = auth
         | 
| 115 | 
            +
                    insert = docxml.at("//div[@id = 'copyright']")
         | 
| 116 | 
            +
                    auth = docxml&.at("//div[@class = 'copyright']")&.remove
         | 
| 117 | 
            +
                    auth&.xpath(".//p[not(@class)]")&.each { |p| p["class"] = "zzCopyright" }
         | 
| 118 | 
            +
                    auth&.xpath(".//p[@id = 'authority2']")&.each { |p| p["class"] = "zzCopyright1" }
         | 
| 119 | 
            +
                    auth&.xpath(".//p[@id = 'authority3']")&.each { |p| p["class"] = "zzAddress" }
         | 
| 120 | 
            +
                    auth and insert.children = auth
         | 
| 121 | 
            +
                  end
         | 
| 122 | 
            +
             | 
| 123 | 
            +
                  def word_cleanup(docxml)
         | 
| 124 | 
            +
                    authority_hdr_cleanup(docxml)
         | 
| 125 | 
            +
                    super
         | 
| 126 | 
            +
                    authority_cleanup(docxml)
         | 
| 127 | 
            +
                    docxml
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
             | 
| 80 130 | 
             
                  include BaseConvert
         | 
| 81 131 | 
             
                end
         | 
| 82 132 | 
             
              end
         | 
| @@ -45,7 +45,7 @@ RSpec.describe Asciidoctor::ISO do | |
| 45 45 | 
             
              end
         | 
| 46 46 |  | 
| 47 47 | 
             
              it "processes default metadata" do
         | 
| 48 | 
            -
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 48 | 
            +
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true).sub(%r{<boilerplate>.*</boilerplate>}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 49 49 | 
             
                  = Document title
         | 
| 50 50 | 
             
                  Author
         | 
| 51 51 | 
             
                  :docfile: test.adoc
         | 
| @@ -168,7 +168,7 @@ RSpec.describe Asciidoctor::ISO do | |
| 168 168 |  | 
| 169 169 |  | 
| 170 170 | 
             
              it "processes complex metadata" do
         | 
| 171 | 
            -
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to <<~'OUTPUT'
         | 
| 171 | 
            +
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true).sub(%r{<boilerplate>.*</boilerplate>}m, ""))).to be_equivalent_to <<~'OUTPUT'
         | 
| 172 172 | 
             
                  = Document title
         | 
| 173 173 | 
             
                  Author
         | 
| 174 174 | 
             
                  :docfile: test.adoc
         | 
| @@ -280,7 +280,7 @@ RSpec.describe Asciidoctor::ISO do | |
| 280 280 | 
             
              end
         | 
| 281 281 |  | 
| 282 282 | 
             
                it "defaults substage" do
         | 
| 283 | 
            -
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 283 | 
            +
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true).sub(%r{<boilerplate>.*</boilerplate>}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 284 284 | 
             
                  = Document title
         | 
| 285 285 | 
             
                  Author
         | 
| 286 286 | 
             
                  :docfile: test.adoc
         | 
| @@ -342,7 +342,7 @@ OUTPUT | |
| 342 342 | 
             
                end
         | 
| 343 343 |  | 
| 344 344 | 
             
                    it "defaults substage for stage 60" do
         | 
| 345 | 
            -
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 345 | 
            +
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true).sub(%r{<boilerplate>.*</boilerplate>}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 346 346 | 
             
                  = Document title
         | 
| 347 347 | 
             
                  Author
         | 
| 348 348 | 
             
                  :docfile: test.adoc
         | 
| @@ -404,7 +404,7 @@ OUTPUT | |
| 404 404 | 
             
                end
         | 
| 405 405 |  | 
| 406 406 | 
             
              it "populates metadata for PRF" do
         | 
| 407 | 
            -
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 407 | 
            +
                expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :iso, header_footer: true).sub(%r{<boilerplate>.*</boilerplate>}m, ""))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 408 408 | 
             
                  = Document title
         | 
| 409 409 | 
             
                  Author
         | 
| 410 410 | 
             
                  :docfile: test.adoc
         | 
| @@ -184,7 +184,7 @@ RSpec.describe IsoDoc do | |
| 184 184 | 
             
                IsoDoc::Iso::WordConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css", wordintropage: "spec/assets/wordintro.html"}).convert("test", <<~"INPUT", false)
         | 
| 185 185 | 
             
                    <iso-standard xmlns="http://riboseinc.com/isoxml">
         | 
| 186 186 | 
             
                    <sections>
         | 
| 187 | 
            -
                           <clause inline-header="false" obligation="normative"><title>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
         | 
| 187 | 
            +
                           <clause id="A" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
         | 
| 188 188 |  | 
| 189 189 | 
             
                     <title>Introduction<bookmark id="Q"/> to this<fn reference="1">
         | 
| 190 190 | 
             
              <p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">Formerly denoted as 15 % (m/m).</p>
         | 
| @@ -203,7 +203,7 @@ RSpec.describe IsoDoc do | |
| 203 203 | 
             
                word = File.read("test.doc", encoding: "UTF-8").sub(/^.*An empty word intro page\./m, '').
         | 
| 204 204 | 
             
                  sub(%r{</div>.*$}m, "</div>")
         | 
| 205 205 |  | 
| 206 | 
            -
                expect(("<div>" + word.gsub(/_Toc\d\d+/, "_Toc") )).to be_equivalent_to xmlpp(<<~'OUTPUT')
         | 
| 206 | 
            +
                expect(xmlpp("<div>" + word.gsub(/_Toc\d\d+/, "_Toc") )).to be_equivalent_to xmlpp(<<~'OUTPUT')
         | 
| 207 207 | 
             
                       <div>
         | 
| 208 208 | 
             
                   <p class="MsoToc1"><span lang="EN-GB" xml:lang="EN-GB"><span style="mso-element:field-begin"></span><span style="mso-spacerun:yes"> </span>TOC
         | 
| 209 209 | 
             
                     \o "1-2" \h \z \u <span style="mso-element:field-separator"></span></span>
         | 
| @@ -262,7 +262,7 @@ RSpec.describe IsoDoc do | |
| 262 262 | 
             
                IsoDoc::Iso::HtmlConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css", wordintropage: "spec/assets/wordintro.html"}).convert("test", <<~"INPUT", false)
         | 
| 263 263 | 
             
                    <iso-standard xmlns="http://riboseinc.com/isoxml">
         | 
| 264 264 | 
             
                    <sections>
         | 
| 265 | 
            -
                           <clause inline-header="false" obligation="normative"><title>Clause 4</title><fn reference="3">
         | 
| 265 | 
            +
                           <clause id="A" inline-header="false" obligation="normative"><title>Clause 4</title><fn reference="3">
         | 
| 266 266 | 
             
              <p id="_ff27c067-2785-4551-96cf-0a73530ff1e6">This is a footnote.</p>
         | 
| 267 267 | 
             
            </fn><clause id="N" inline-header="false" obligation="normative">
         | 
| 268 268 |  | 
| @@ -284,7 +284,7 @@ RSpec.describe IsoDoc do | |
| 284 284 | 
             
                expect(xmlpp(html)).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 285 285 | 
             
                       <main xmlns:epub="epub" class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
         | 
| 286 286 | 
             
                         <p class="zzSTDTitle1"></p>
         | 
| 287 | 
            -
                         <div>
         | 
| 287 | 
            +
                         <div id="A">
         | 
| 288 288 | 
             
                           <h1>1  Clause 4</h1>
         | 
| 289 289 | 
             
                           <a rel="footnote" href="#fn:3" epub:type="footnote" id="fnref:1">
         | 
| 290 290 | 
             
                             <sup>1</sup>
         | 
| @@ -478,6 +478,105 @@ RSpec.describe IsoDoc do | |
| 478 478 | 
             
                OUTPUT
         | 
| 479 479 | 
             
              end
         | 
| 480 480 |  | 
| 481 | 
            +
                  it "processes boilerplate" do
         | 
| 482 | 
            +
                 FileUtils.rm_f "test.doc"
         | 
| 483 | 
            +
                FileUtils.rm_f "test.html"
         | 
| 484 | 
            +
                IsoDoc::Iso::HtmlConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", <<~"INPUT", false)
         | 
| 485 | 
            +
                <iso-standard xmlns="http://riboseinc.com/isoxml">
         | 
| 486 | 
            +
                    <bibdata type="standard">
         | 
| 487 | 
            +
                    <status><stage>30</stage></status>
         | 
| 488 | 
            +
                    </bibdata>
         | 
| 489 | 
            +
                <boilerplate>
         | 
| 490 | 
            +
              <copyright-statement>
         | 
| 491 | 
            +
                <clause>
         | 
| 492 | 
            +
                <p id="authority1">
         | 
| 493 | 
            +
                © ISO 2019, Published in Switzerland
         | 
| 494 | 
            +
              </p>
         | 
| 495 | 
            +
             | 
| 496 | 
            +
              <p id="authority2">
         | 
| 497 | 
            +
            I am the Walrus.
         | 
| 498 | 
            +
              </p>
         | 
| 499 | 
            +
             | 
| 500 | 
            +
              <p id="authority3" align="left">
         | 
| 501 | 
            +
                ISO copyright office<br/>
         | 
| 502 | 
            +
                Ch. de Blandonnet 8 ?~@? CP 401<br/>
         | 
| 503 | 
            +
                CH-1214 Vernier, Geneva, Switzerland<br/>
         | 
| 504 | 
            +
                Tel. + 41 22 749 01 11<br/>
         | 
| 505 | 
            +
                Fax + 41 22 749 09 47<br/>
         | 
| 506 | 
            +
                copyright@iso.org<br/>
         | 
| 507 | 
            +
                www.iso.org
         | 
| 508 | 
            +
              </p>
         | 
| 509 | 
            +
            </clause>
         | 
| 510 | 
            +
              </copyright-statement>
         | 
| 511 | 
            +
             | 
| 512 | 
            +
             | 
| 513 | 
            +
              <license-statement>
         | 
| 514 | 
            +
                <clause>
         | 
| 515 | 
            +
            <title>Warning for Stuff</title>
         | 
| 516 | 
            +
             | 
| 517 | 
            +
            <p>This
         | 
| 518 | 
            +
            document is not an ISO International Standard. It is distributed for review and
         | 
| 519 | 
            +
            comment. It is subject to change without notice and may not be referred to as
         | 
| 520 | 
            +
            an International Standard.</p>
         | 
| 521 | 
            +
             | 
| 522 | 
            +
            <p>Recipients
         | 
| 523 | 
            +
            of this draft are invited to submit, with their comments, notification of any
         | 
| 524 | 
            +
            relevant patent rights of which they are aware and to provide supporting
         | 
| 525 | 
            +
            documentation.</p>
         | 
| 526 | 
            +
            </clause>
         | 
| 527 | 
            +
              </license-statement>
         | 
| 528 | 
            +
             | 
| 529 | 
            +
            </boilerplate>
         | 
| 530 | 
            +
            </iso-standard>
         | 
| 531 | 
            +
                INPUT
         | 
| 532 | 
            +
                word = File.read("test.html", encoding: "UTF-8")
         | 
| 533 | 
            +
                expect(xmlpp(word)).to include "<h1 class='IntroTitle'>Warning for Stuff</h1>"
         | 
| 534 | 
            +
                expect(xmlpp(word)).to include "I am the Walrus."
         | 
| 535 | 
            +
            end
         | 
| 536 | 
            +
             | 
| 537 | 
            +
              it "processes boilerplate (Word)" do
         | 
| 538 | 
            +
                 FileUtils.rm_f "test.doc"
         | 
| 539 | 
            +
                FileUtils.rm_f "test.html"
         | 
| 540 | 
            +
                IsoDoc::Iso::WordConvert.new({wordstylesheet: "spec/assets/word.css", htmlstylesheet: "spec/assets/html.css"}).convert("test", <<~"INPUT", false)
         | 
| 541 | 
            +
                    <iso-standard xmlns="http://riboseinc.com/isoxml">
         | 
| 542 | 
            +
                    <bibdata type="standard">
         | 
| 543 | 
            +
                    <status><stage>30</stage></status>
         | 
| 544 | 
            +
                    </bibdata>
         | 
| 545 | 
            +
                <boilerplate>
         | 
| 546 | 
            +
              <copyright-statement>
         | 
| 547 | 
            +
                <clause>
         | 
| 548 | 
            +
                <p id="authority1">Published in Elbonia</p>
         | 
| 549 | 
            +
             | 
| 550 | 
            +
              <p id="authority2">No soup for you</p>
         | 
| 551 | 
            +
             | 
| 552 | 
            +
              <p id="authority3" align="left">Elbonia 5000</p>
         | 
| 553 | 
            +
            </clause>
         | 
| 554 | 
            +
              </copyright-statement>
         | 
| 555 | 
            +
             | 
| 556 | 
            +
             | 
| 557 | 
            +
              <license-statement>
         | 
| 558 | 
            +
                <clause>
         | 
| 559 | 
            +
            <title>Warning for Stuff</title>
         | 
| 481 560 |  | 
| 561 | 
            +
            <p>I am the Walrus</p>
         | 
| 562 | 
            +
            </clause>
         | 
| 563 | 
            +
              </license-statement>
         | 
| 564 | 
            +
             | 
| 565 | 
            +
            </boilerplate>
         | 
| 566 | 
            +
            </iso-standard>
         | 
| 567 | 
            +
                INPUT
         | 
| 568 | 
            +
                word = File.read("test.doc", encoding: "UTF-8")
         | 
| 569 | 
            +
                expect(xmlpp(word.sub(%r{^.*<p class="zzCopyright">}m, '<p class="zzCopyright">').sub(%r{</p>.*$}m, '</p>'))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 570 | 
            +
                       <p class="zzCopyright"><a name="authority1" id="authority1"></a>Published in Elbonia</p>
         | 
| 571 | 
            +
                       OUTPUT
         | 
| 572 | 
            +
                expect(xmlpp(word.sub(%r{^.*<p class="zzCopyright1">}m, '<p class="zzCopyright1">').sub(%r{</p>.*$}m, '</p>'))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 573 | 
            +
                       <p class="zzCopyright1"><a name="authority2" id="authority2"></a>No soup for you</p>
         | 
| 574 | 
            +
                       OUTPUT
         | 
| 575 | 
            +
                expect(xmlpp(word.sub(%r{^.*<p align="left" style="text-align:left" class="zzAddress">}m, '<p align="left" style="text-align:left" class="zzAddress">').sub(%r{</p>.*$}m, '</p>'))).to be_equivalent_to xmlpp(<<~"OUTPUT")
         | 
| 576 | 
            +
                       <p align="left" style="text-align:left" class="zzAddress"><a name="authority3" id="authority3"></a>Elbonia 5000</p>
         | 
| 577 | 
            +
                       OUTPUT
         | 
| 578 | 
            +
                expect(word).to include '<p class="zzWarning">I am the Walrus</p>'
         | 
| 579 | 
            +
                expect(word).to include '<p class="zzWarning">I am the Walrus</p>'
         | 
| 580 | 
            +
            end
         | 
| 482 581 |  | 
| 483 582 | 
             
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | @@ -95,6 +95,13 @@ VALIDATING_BLANK_HDR = <<~"HDR" | |
| 95 95 |  | 
| 96 96 | 
             
            HDR
         | 
| 97 97 |  | 
| 98 | 
            +
            BOILERPLATE =
         | 
| 99 | 
            +
              HTMLEntities.new.decode(
         | 
| 100 | 
            +
              File.read(File.join(File.dirname(__FILE__), "..", "lib", "asciidoctor", "iso", "iso_intro.xml"), encoding: "utf-8").
         | 
| 101 | 
            +
              gsub(/\{\{ agency \}\}/, "ISO").gsub(/\{\{ docyear \}\}/, Date.today.year.to_s).
         | 
| 102 | 
            +
              gsub(/\{% if unpublished %\}.*\{% endif %\}/m, ""))
         | 
| 103 | 
            +
             | 
| 104 | 
            +
             | 
| 98 105 | 
             
            BLANK_HDR = <<~"HDR"
         | 
| 99 106 | 
             
            <?xml version="1.0" encoding="UTF-8"?>
         | 
| 100 107 | 
             
            <iso-standard xmlns="http://riboseinc.com/isoxml">
         | 
| @@ -137,6 +144,7 @@ BLANK_HDR = <<~"HDR" | |
| 137 144 | 
             
              </editorialgroup>
         | 
| 138 145 | 
             
              </ext>
         | 
| 139 146 | 
             
            </bibdata>
         | 
| 147 | 
            +
            #{BOILERPLATE}
         | 
| 140 148 | 
             
            HDR
         | 
| 141 149 |  | 
| 142 150 | 
             
            TERM_BOILERPLATE = <<~END
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: metanorma-iso
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.3. | 
| 4 | 
            +
              version: 1.3.9
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ribose Inc.
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2019-11- | 
| 11 | 
            +
            date: 2019-11-28 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: ruby-jing
         | 
| @@ -263,6 +263,7 @@ files: | |
| 263 263 | 
             
            - lib/asciidoctor/iso/i18n-en.yaml
         | 
| 264 264 | 
             
            - lib/asciidoctor/iso/i18n-fr.yaml
         | 
| 265 265 | 
             
            - lib/asciidoctor/iso/i18n-zh-Hans.yaml
         | 
| 266 | 
            +
            - lib/asciidoctor/iso/iso_intro.xml
         | 
| 266 267 | 
             
            - lib/asciidoctor/iso/isodoc.rng
         | 
| 267 268 | 
             
            - lib/asciidoctor/iso/isostandard.rnc
         | 
| 268 269 | 
             
            - lib/asciidoctor/iso/isostandard.rng
         |