metanorma-iso 1.6.0 → 1.6.1
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/.github/workflows/rake.yml +17 -0
- data/lib/asciidoctor/iso/isodoc.rng +26 -3
- data/lib/asciidoctor/iso/isostandard-amd.rng +8 -4
- data/lib/asciidoctor/iso/isostandard.rng +16 -10
- data/lib/asciidoctor/iso/validate.rb +12 -0
- data/lib/asciidoctor/iso/validate_section.rb +12 -9
- data/lib/isodoc/iso/iso.amendment.xsl +18 -2
- data/lib/isodoc/iso/iso.international-standard.xsl +18 -2
- data/lib/isodoc/iso/sections.rb +1 -1
- data/lib/isodoc/iso/xref.rb +28 -12
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +1 -1
- data/spec/asciidoctor-iso/amd_spec.rb +14 -14
- data/spec/asciidoctor-iso/base_spec.rb +16 -16
- data/spec/asciidoctor-iso/blocks_spec.rb +21 -21
- data/spec/asciidoctor-iso/cleanup_spec.rb +25 -25
- data/spec/asciidoctor-iso/inline_spec.rb +7 -7
- data/spec/asciidoctor-iso/lists_spec.rb +3 -3
- data/spec/asciidoctor-iso/refs_spec.rb +4 -4
- data/spec/asciidoctor-iso/section_spec.rb +7 -7
- data/spec/asciidoctor-iso/table_spec.rb +4 -4
- data/spec/asciidoctor-iso/validate_spec.rb +384 -85
- data/spec/isodoc/amd_spec.rb +13 -13
- metadata +4 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 769601244fc001de9523edde3e6b139a897df0c82a255b786659a83a2e32d8a5
         | 
| 4 | 
            +
              data.tar.gz: 1ea613b3740ec30cc508fa5817bed662f3fe539b7bf03e2cf7e40e4ab1e1c8c4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 870aaeca24c5e5878441a8346c2dc0d8d8cdd19604c50399c38b8af18bd29a90ab3c0dd8c8d080b977c35efc794bbfbffa4ca233113c3c3a103d90542981ba90
         | 
| 7 | 
            +
              data.tar.gz: a6bb8b2d6f598ddf12b8982fa1203165d07f94df83a0f2f7d96eba635834b69e0420e7e46e5cfe86b5ba0283a553106a7941cd06be868032dec6e0179dc1fbb4
         | 
    
        data/.github/workflows/rake.yml
    CHANGED
    
    | @@ -36,6 +36,9 @@ jobs: | |
| 36 36 | 
             
                    with:
         | 
| 37 37 | 
             
                      ruby-version: ${{ matrix.ruby }}
         | 
| 38 38 |  | 
| 39 | 
            +
                  - if: matrix.os == 'macos-latest'
         | 
| 40 | 
            +
                    run: brew install autoconf automake libtool
         | 
| 41 | 
            +
             | 
| 39 42 | 
             
                  - uses: actions/cache@v2
         | 
| 40 43 | 
             
                    with:
         | 
| 41 44 | 
             
                      path: vendor/bundle
         | 
| @@ -64,3 +67,17 @@ jobs: | |
| 64 67 | 
             
                    run: cinst -y plantuml
         | 
| 65 68 |  | 
| 66 69 | 
             
                  - run: bundle exec rake
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              tests-passed:
         | 
| 72 | 
            +
                needs: rake
         | 
| 73 | 
            +
                runs-on: ubuntu-latest
         | 
| 74 | 
            +
                continue-on-error: true
         | 
| 75 | 
            +
                steps:
         | 
| 76 | 
            +
                  - name: Trigger tests passed event
         | 
| 77 | 
            +
                    uses: Sibz/github-status-action@v1
         | 
| 78 | 
            +
                    with:
         | 
| 79 | 
            +
                      authToken: ${{ secrets.METANORMA_CI_PAT_TOKEN || secrets.GITHUB_TOKEN }}
         | 
| 80 | 
            +
                      context: 'tests-passed-successfully'
         | 
| 81 | 
            +
                      description: 'Tests passed successfully'
         | 
| 82 | 
            +
                      state: 'success'
         | 
| 83 | 
            +
                      sha: ${{ github.event.pull_request.head.sha || github.sha }}
         | 
| @@ -253,6 +253,9 @@ | |
| 253 253 | 
             
                        <data type="boolean"/>
         | 
| 254 254 | 
             
                      </attribute>
         | 
| 255 255 | 
             
                    </optional>
         | 
| 256 | 
            +
                    <optional>
         | 
| 257 | 
            +
                      <attribute name="width"/>
         | 
| 258 | 
            +
                    </optional>
         | 
| 256 259 | 
             
                    <optional>
         | 
| 257 260 | 
             
                      <ref name="colgroup"/>
         | 
| 258 261 | 
             
                    </optional>
         | 
| @@ -836,6 +839,9 @@ | |
| 836 839 | 
             
                      <data type="boolean"/>
         | 
| 837 840 | 
             
                    </attribute>
         | 
| 838 841 | 
             
                  </optional>
         | 
| 842 | 
            +
                  <optional>
         | 
| 843 | 
            +
                    <attribute name="number"/>
         | 
| 844 | 
            +
                  </optional>
         | 
| 839 845 | 
             
                  <optional>
         | 
| 840 846 | 
             
                    <attribute name="obligation">
         | 
| 841 847 | 
             
                      <choice>
         | 
| @@ -891,9 +897,11 @@ | |
| 891 897 | 
             
                  <element name="code">
         | 
| 892 898 | 
             
                    <text/>
         | 
| 893 899 | 
             
                  </element>
         | 
| 894 | 
            -
                  < | 
| 895 | 
            -
                    <text | 
| 896 | 
            -
             | 
| 900 | 
            +
                  <optional>
         | 
| 901 | 
            +
                    <element name="text">
         | 
| 902 | 
            +
                      <text/>
         | 
| 903 | 
            +
                    </element>
         | 
| 904 | 
            +
                  </optional>
         | 
| 897 905 | 
             
                </element>
         | 
| 898 906 | 
             
              </define>
         | 
| 899 907 | 
             
              <define name="standard-document">
         | 
| @@ -1063,6 +1071,9 @@ | |
| 1063 1071 | 
             
                    </choice>
         | 
| 1064 1072 | 
             
                  </attribute>
         | 
| 1065 1073 | 
             
                </optional>
         | 
| 1074 | 
            +
                <optional>
         | 
| 1075 | 
            +
                  <attribute name="number"/>
         | 
| 1076 | 
            +
                </optional>
         | 
| 1066 1077 | 
             
                <optional>
         | 
| 1067 1078 | 
             
                  <attribute name="type"/>
         | 
| 1068 1079 | 
             
                </optional>
         | 
| @@ -1116,6 +1127,9 @@ | |
| 1116 1127 | 
             
                <optional>
         | 
| 1117 1128 | 
             
                  <attribute name="type"/>
         | 
| 1118 1129 | 
             
                </optional>
         | 
| 1130 | 
            +
                <optional>
         | 
| 1131 | 
            +
                  <attribute name="number"/>
         | 
| 1132 | 
            +
                </optional>
         | 
| 1119 1133 | 
             
                <optional>
         | 
| 1120 1134 | 
             
                  <ref name="section-title"/>
         | 
| 1121 1135 | 
             
                </optional>
         | 
| @@ -1218,6 +1232,9 @@ | |
| 1218 1232 | 
             
                  <optional>
         | 
| 1219 1233 | 
             
                    <attribute name="type"/>
         | 
| 1220 1234 | 
             
                  </optional>
         | 
| 1235 | 
            +
                  <optional>
         | 
| 1236 | 
            +
                    <attribute name="number"/>
         | 
| 1237 | 
            +
                  </optional>
         | 
| 1221 1238 | 
             
                  <optional>
         | 
| 1222 1239 | 
             
                    <attribute name="obligation">
         | 
| 1223 1240 | 
             
                      <choice>
         | 
| @@ -1546,6 +1563,7 @@ | |
| 1546 1563 | 
             
                      <value>add</value>
         | 
| 1547 1564 | 
             
                      <value>modify</value>
         | 
| 1548 1565 | 
             
                      <value>delete</value>
         | 
| 1566 | 
            +
                      <value>replace</value>
         | 
| 1549 1567 | 
             
                    </choice>
         | 
| 1550 1568 | 
             
                  </attribute>
         | 
| 1551 1569 | 
             
                  <optional>
         | 
| @@ -1576,6 +1594,11 @@ | |
| 1576 1594 | 
             
                  </optional>
         | 
| 1577 1595 | 
             
                  <optional>
         | 
| 1578 1596 | 
             
                    <element name="newcontent">
         | 
| 1597 | 
            +
                      <optional>
         | 
| 1598 | 
            +
                        <attribute name="id">
         | 
| 1599 | 
            +
                          <data type="ID"/>
         | 
| 1600 | 
            +
                        </attribute>
         | 
| 1601 | 
            +
                      </optional>
         | 
| 1579 1602 | 
             
                      <zeroOrMore>
         | 
| 1580 1603 | 
             
                        <ref name="BasicBlock"/>
         | 
| 1581 1604 | 
             
                      </zeroOrMore>
         | 
| @@ -14,9 +14,6 @@ | |
| 14 14 | 
             
                </define>
         | 
| 15 15 | 
             
                <define name="clause">
         | 
| 16 16 | 
             
                  <element name="clause">
         | 
| 17 | 
            -
                    <optional>
         | 
| 18 | 
            -
                      <attribute name="type"/>
         | 
| 19 | 
            -
                    </optional>
         | 
| 20 17 | 
             
                    <optional>
         | 
| 21 18 | 
             
                      <attribute name="change">
         | 
| 22 19 | 
             
                        <choice>
         | 
| @@ -34,6 +31,13 @@ | |
| 34 31 | 
             
                </define>
         | 
| 35 32 | 
             
                <define name="iso-standard">
         | 
| 36 33 | 
             
                  <element name="iso-standard">
         | 
| 34 | 
            +
                    <attribute name="version"/>
         | 
| 35 | 
            +
                    <attribute name="type">
         | 
| 36 | 
            +
                      <choice>
         | 
| 37 | 
            +
                        <value>semantic</value>
         | 
| 38 | 
            +
                        <value>presentation</value>
         | 
| 39 | 
            +
                      </choice>
         | 
| 40 | 
            +
                    </attribute>
         | 
| 37 41 | 
             
                    <ref name="bibdata"/>
         | 
| 38 42 | 
             
                    <optional>
         | 
| 39 43 | 
             
                      <ref name="boilerplate"/>
         | 
| @@ -68,7 +72,7 @@ | |
| 68 72 | 
             
                    </optional>
         | 
| 69 73 | 
             
                    <optional>
         | 
| 70 74 | 
             
                      <attribute name="origyr">
         | 
| 71 | 
            -
                        < | 
| 75 | 
            +
                        <ref name="ISO8601Date"/>
         | 
| 72 76 | 
             
                      </attribute>
         | 
| 73 77 | 
             
                    </optional>
         | 
| 74 78 | 
             
                    <text/>
         | 
| @@ -140,22 +140,28 @@ | |
| 140 140 | 
             
                      </choice>
         | 
| 141 141 | 
             
                    </attribute>
         | 
| 142 142 | 
             
                  </optional>
         | 
| 143 | 
            +
                  <optional>
         | 
| 144 | 
            +
                    <attribute name="type"/>
         | 
| 145 | 
            +
                  </optional>
         | 
| 143 146 | 
             
                  <optional>
         | 
| 144 147 | 
             
                    <ref name="section-title"/>
         | 
| 145 148 | 
             
                  </optional>
         | 
| 146 | 
            -
                  < | 
| 147 | 
            -
                    < | 
| 148 | 
            -
                      < | 
| 149 | 
            -
                        < | 
| 150 | 
            -
             | 
| 151 | 
            -
             | 
| 152 | 
            -
                        < | 
| 153 | 
            -
             | 
| 154 | 
            -
             | 
| 149 | 
            +
                  <group>
         | 
| 150 | 
            +
                    <choice>
         | 
| 151 | 
            +
                      <group>
         | 
| 152 | 
            +
                        <oneOrMore>
         | 
| 153 | 
            +
                          <ref name="BasicBlock"/>
         | 
| 154 | 
            +
                        </oneOrMore>
         | 
| 155 | 
            +
                        <zeroOrMore>
         | 
| 156 | 
            +
                          <ref name="note"/>
         | 
| 157 | 
            +
                        </zeroOrMore>
         | 
| 158 | 
            +
                      </group>
         | 
| 159 | 
            +
                      <ref name="amend"/>
         | 
| 160 | 
            +
                    </choice>
         | 
| 155 161 | 
             
                    <oneOrMore>
         | 
| 156 162 | 
             
                      <ref name="clause-subsection"/>
         | 
| 157 163 | 
             
                    </oneOrMore>
         | 
| 158 | 
            -
                  </ | 
| 164 | 
            +
                  </group>
         | 
| 159 165 | 
             
                </define>
         | 
| 160 166 | 
             
                <define name="term">
         | 
| 161 167 | 
             
                  <element name="term">
         | 
| @@ -146,6 +146,17 @@ module Asciidoctor | |
| 146 146 | 
             
                               "#{iteration} is not a recognised iteration")
         | 
| 147 147 | 
             
                  end
         | 
| 148 148 |  | 
| 149 | 
            +
                  # DRG directives 3.7; but anticipated by standoc
         | 
| 150 | 
            +
                  def figure_validate(xmldoc)
         | 
| 151 | 
            +
                    xmldoc.xpath("//figure//figure").each do |f|
         | 
| 152 | 
            +
                      { footnote: "fn", note: "note", key: "dl" }.each do |k, v|
         | 
| 153 | 
            +
                        f.xpath(".//#{v}").each do |n|
         | 
| 154 | 
            +
                          @log.add("Style", n, "#{k} is not permitted in a subfigure")
         | 
| 155 | 
            +
                        end
         | 
| 156 | 
            +
                      end
         | 
| 157 | 
            +
                    end
         | 
| 158 | 
            +
                  end
         | 
| 159 | 
            +
             | 
| 149 160 | 
             
                  def bibdata_validate(doc)
         | 
| 150 161 | 
             
                    doctype_validate(doc)
         | 
| 151 162 | 
             
                    script_validate(doc)
         | 
| @@ -166,6 +177,7 @@ module Asciidoctor | |
| 166 177 | 
             
                    locality_erefs_validate(doc.root)
         | 
| 167 178 | 
             
                    bibdata_validate(doc.root)
         | 
| 168 179 | 
             
                    bibitem_validate(doc.root)
         | 
| 180 | 
            +
                    figure_validate(doc.root)
         | 
| 169 181 | 
             
                  end
         | 
| 170 182 |  | 
| 171 183 | 
             
                  def bibitem_validate(xmldoc)
         | 
| @@ -4,11 +4,14 @@ module Asciidoctor | |
| 4 4 | 
             
              module ISO
         | 
| 5 5 | 
             
                class Converter < Standoc::Converter
         | 
| 6 6 | 
             
                  def section_validate(doc)
         | 
| 7 | 
            -
                     | 
| 8 | 
            -
                     | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 7 | 
            +
                    doctype = doc&.at("//bibdata/ext/doctype")&.text
         | 
| 8 | 
            +
                    unless %w(amendment technical-corrigendum).include? doctype
         | 
| 9 | 
            +
                      foreword_validate(doc.root)
         | 
| 10 | 
            +
                      normref_validate(doc.root)
         | 
| 11 | 
            +
                      symbols_validate(doc.root)
         | 
| 12 | 
            +
                      sections_presence_validate(doc.root)
         | 
| 13 | 
            +
                      sections_sequence_validate(doc.root)
         | 
| 14 | 
            +
                    end
         | 
| 12 15 | 
             
                    section_style(doc.root)
         | 
| 13 16 | 
             
                    subclause_validate(doc.root)
         | 
| 14 17 | 
             
                    super
         | 
| @@ -111,13 +114,13 @@ module Asciidoctor | |
| 111 114 | 
             
                    end
         | 
| 112 115 | 
             
                    n&.at("./self::clause") ||
         | 
| 113 116 | 
             
                      @log.add("Style", nil, "Document must contain clause after "\
         | 
| 114 | 
            -
             | 
| 117 | 
            +
                               "Terms and Definitions")
         | 
| 115 118 | 
             
                    n&.at("./self::clause[@type = 'scope']") &&
         | 
| 116 119 | 
             
                      @log.add("Style", nil, "Scope must occur before Terms and Definitions")
         | 
| 117 120 | 
             
                    n = names.shift 
         | 
| 118 121 | 
             
                    while n&.name == "clause"
         | 
| 119 122 | 
             
                      n&.at("./self::clause[@type = 'scope']")
         | 
| 120 | 
            -
             | 
| 123 | 
            +
                      @log.add("Style", nil, "Scope must occur before Terms and Definitions")
         | 
| 121 124 | 
             
                      n = names.shift 
         | 
| 122 125 | 
             
                    end
         | 
| 123 126 | 
             
                    unless %w(annex references).include? n&.name
         | 
| @@ -127,12 +130,12 @@ module Asciidoctor | |
| 127 130 | 
             
                      n = names.shift
         | 
| 128 131 | 
             
                      if n.nil?
         | 
| 129 132 | 
             
                        @log.add("Style", nil, "Document must include (references) "\
         | 
| 130 | 
            -
             | 
| 133 | 
            +
                                 "Normative References")
         | 
| 131 134 | 
             
                      end
         | 
| 132 135 | 
             
                    end
         | 
| 133 136 | 
             
                    n&.at("./self::references[@normative = 'true']") ||
         | 
| 134 137 | 
             
                      @log.add("Style", nil, "Document must include (references) "\
         | 
| 135 | 
            -
             | 
| 138 | 
            +
                               "Normative References")
         | 
| 136 139 | 
             
                    n = names&.shift
         | 
| 137 140 | 
             
                    n&.at("./self::references[@normative = 'false']") ||
         | 
| 138 141 | 
             
                      @log.add("Style", nil, "Final section must be (references) Bibliography")
         | 
| @@ -2763,7 +2763,12 @@ | |
| 2763 2763 |  | 
| 2764 2764 | 
             
            			<xsl:variable name="table_attributes">
         | 
| 2765 2765 | 
             
            				<attribute name="table-layout">fixed</attribute>
         | 
| 2766 | 
            -
            				<attribute name="width"> | 
| 2766 | 
            +
            				<attribute name="width">
         | 
| 2767 | 
            +
            					<xsl:choose>
         | 
| 2768 | 
            +
            						<xsl:when test="@width"><xsl:value-of select="@width"/></xsl:when>
         | 
| 2769 | 
            +
            						<xsl:otherwise>100%</xsl:otherwise>
         | 
| 2770 | 
            +
            					</xsl:choose>
         | 
| 2771 | 
            +
            				</attribute>
         | 
| 2767 2772 | 
             
            				<attribute name="margin-left"><xsl:value-of select="$margin-left"/>mm</attribute>
         | 
| 2768 2773 | 
             
            				<attribute name="margin-right"><xsl:value-of select="$margin-left"/>mm</attribute>
         | 
| 2769 2774 |  | 
| @@ -4017,6 +4022,10 @@ | |
| 4017 4022 | 
             
            			</xsl:if>
         | 
| 4018 4023 | 
             
            			<xsl:apply-templates/>
         | 
| 4019 4024 | 
             
            		</fo:inline>
         | 
| 4025 | 
            +
            	</xsl:template><xsl:template match="*[local-name()='underline']">
         | 
| 4026 | 
            +
            		<fo:inline text-decoration="underline">
         | 
| 4027 | 
            +
            			<xsl:apply-templates/>
         | 
| 4028 | 
            +
            		</fo:inline>
         | 
| 4020 4029 | 
             
            	</xsl:template><xsl:template match="*[local-name()='del']">
         | 
| 4021 4030 | 
             
            		<fo:inline font-size="10pt" color="red" text-decoration="line-through">
         | 
| 4022 4031 | 
             
            			<xsl:apply-templates/>
         | 
| @@ -5584,6 +5593,8 @@ | |
| 5584 5593 | 
             
            		<xsl:value-of select="translate(.,'. ','')"/>
         | 
| 5585 5594 | 
             
            	</xsl:template><xsl:template match="*[local-name() = 'name']/*[local-name() = 'forename']/text()" mode="strip">
         | 
| 5586 5595 | 
             
            		<xsl:value-of select="substring(.,1,1)"/>
         | 
| 5596 | 
            +
            	</xsl:template><xsl:template match="*[local-name() = 'title']" mode="title">
         | 
| 5597 | 
            +
            		<fo:inline><xsl:apply-templates/></fo:inline>
         | 
| 5587 5598 | 
             
            	</xsl:template><xsl:template name="convertDate">
         | 
| 5588 5599 | 
             
            		<xsl:param name="date"/>
         | 
| 5589 5600 | 
             
            		<xsl:param name="format" select="'short'"/>
         | 
| @@ -5863,6 +5874,11 @@ | |
| 5863 5874 | 
             
            			<xsl:call-template name="getLang"/>
         | 
| 5864 5875 | 
             
            		</xsl:variable>
         | 
| 5865 5876 |  | 
| 5866 | 
            -
            		<xsl: | 
| 5877 | 
            +
            		<xsl:choose>
         | 
| 5878 | 
            +
            			<xsl:when test="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]">
         | 
| 5879 | 
            +
            				<xsl:value-of select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
         | 
| 5880 | 
            +
            			</xsl:when>
         | 
| 5881 | 
            +
            			<xsl:otherwise><xsl:value-of select="$key"/></xsl:otherwise>
         | 
| 5882 | 
            +
            		</xsl:choose>
         | 
| 5867 5883 |  | 
| 5868 5884 | 
             
            	</xsl:template></xsl:stylesheet>
         | 
| @@ -2763,7 +2763,12 @@ | |
| 2763 2763 |  | 
| 2764 2764 | 
             
            			<xsl:variable name="table_attributes">
         | 
| 2765 2765 | 
             
            				<attribute name="table-layout">fixed</attribute>
         | 
| 2766 | 
            -
            				<attribute name="width"> | 
| 2766 | 
            +
            				<attribute name="width">
         | 
| 2767 | 
            +
            					<xsl:choose>
         | 
| 2768 | 
            +
            						<xsl:when test="@width"><xsl:value-of select="@width"/></xsl:when>
         | 
| 2769 | 
            +
            						<xsl:otherwise>100%</xsl:otherwise>
         | 
| 2770 | 
            +
            					</xsl:choose>
         | 
| 2771 | 
            +
            				</attribute>
         | 
| 2767 2772 | 
             
            				<attribute name="margin-left"><xsl:value-of select="$margin-left"/>mm</attribute>
         | 
| 2768 2773 | 
             
            				<attribute name="margin-right"><xsl:value-of select="$margin-left"/>mm</attribute>
         | 
| 2769 2774 |  | 
| @@ -4017,6 +4022,10 @@ | |
| 4017 4022 | 
             
            			</xsl:if>
         | 
| 4018 4023 | 
             
            			<xsl:apply-templates/>
         | 
| 4019 4024 | 
             
            		</fo:inline>
         | 
| 4025 | 
            +
            	</xsl:template><xsl:template match="*[local-name()='underline']">
         | 
| 4026 | 
            +
            		<fo:inline text-decoration="underline">
         | 
| 4027 | 
            +
            			<xsl:apply-templates/>
         | 
| 4028 | 
            +
            		</fo:inline>
         | 
| 4020 4029 | 
             
            	</xsl:template><xsl:template match="*[local-name()='del']">
         | 
| 4021 4030 | 
             
            		<fo:inline font-size="10pt" color="red" text-decoration="line-through">
         | 
| 4022 4031 | 
             
            			<xsl:apply-templates/>
         | 
| @@ -5584,6 +5593,8 @@ | |
| 5584 5593 | 
             
            		<xsl:value-of select="translate(.,'. ','')"/>
         | 
| 5585 5594 | 
             
            	</xsl:template><xsl:template match="*[local-name() = 'name']/*[local-name() = 'forename']/text()" mode="strip">
         | 
| 5586 5595 | 
             
            		<xsl:value-of select="substring(.,1,1)"/>
         | 
| 5596 | 
            +
            	</xsl:template><xsl:template match="*[local-name() = 'title']" mode="title">
         | 
| 5597 | 
            +
            		<fo:inline><xsl:apply-templates/></fo:inline>
         | 
| 5587 5598 | 
             
            	</xsl:template><xsl:template name="convertDate">
         | 
| 5588 5599 | 
             
            		<xsl:param name="date"/>
         | 
| 5589 5600 | 
             
            		<xsl:param name="format" select="'short'"/>
         | 
| @@ -5863,6 +5874,11 @@ | |
| 5863 5874 | 
             
            			<xsl:call-template name="getLang"/>
         | 
| 5864 5875 | 
             
            		</xsl:variable>
         | 
| 5865 5876 |  | 
| 5866 | 
            -
            		<xsl: | 
| 5877 | 
            +
            		<xsl:choose>
         | 
| 5878 | 
            +
            			<xsl:when test="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]">
         | 
| 5879 | 
            +
            				<xsl:value-of select="/*/*[local-name() = 'localized-strings']/*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
         | 
| 5880 | 
            +
            			</xsl:when>
         | 
| 5881 | 
            +
            			<xsl:otherwise><xsl:value-of select="$key"/></xsl:otherwise>
         | 
| 5882 | 
            +
            		</xsl:choose>
         | 
| 5867 5883 |  | 
| 5868 5884 | 
             
            	</xsl:template></xsl:stylesheet>
         | 
    
        data/lib/isodoc/iso/sections.rb
    CHANGED
    
    
    
        data/lib/isodoc/iso/xref.rb
    CHANGED
    
    | @@ -1,10 +1,14 @@ | |
| 1 1 | 
             
            module IsoDoc
         | 
| 2 2 | 
             
              module Iso
         | 
| 3 | 
            +
                class Counter < IsoDoc::XrefGen::Counter
         | 
| 4 | 
            +
                end
         | 
| 5 | 
            +
             | 
| 3 6 | 
             
                class Xref < IsoDoc::Xref
         | 
| 4 7 | 
             
                  def initial_anchor_names(d)
         | 
| 5 8 | 
             
                    if @klass.amd(d)
         | 
| 6 9 | 
             
                      d.xpath(ns("//preface/*")).each { |c| c.element? and preface_names(c) }
         | 
| 7 10 | 
             
                      sequential_asset_names(d.xpath(ns("//preface/*")))
         | 
| 11 | 
            +
                      d.xpath(ns("//sections/clause")).each { |c| c.element? and preface_names(c) }
         | 
| 8 12 | 
             
                      middle_section_asset_names(d)
         | 
| 9 13 | 
             
                      termnote_anchor_names(d)
         | 
| 10 14 | 
             
                      termexample_anchor_names(d)
         | 
| @@ -19,8 +23,10 @@ module IsoDoc | |
| 19 23 | 
             
                    return if clause.nil?
         | 
| 20 24 | 
             
                    clause.at(ns("./clause")) and @anchors[clause["id"]] = 
         | 
| 21 25 | 
             
                      { label: "0", level: 1, xref: clause.at(ns("./title"))&.text, type: "clause" }
         | 
| 22 | 
            -
                     | 
| 23 | 
            -
             | 
| 26 | 
            +
                    i = Counter.new
         | 
| 27 | 
            +
                    clause.xpath(ns("./clause")).each do |c|
         | 
| 28 | 
            +
                      i.increment(c)
         | 
| 29 | 
            +
                      section_names1(c, "0.#{i.print}", 2)
         | 
| 24 30 | 
             
                    end
         | 
| 25 31 | 
             
                  end
         | 
| 26 32 |  | 
| @@ -30,12 +36,16 @@ module IsoDoc | |
| 30 36 | 
             
                  end
         | 
| 31 37 |  | 
| 32 38 | 
             
                  def appendix_names(clause, num)
         | 
| 33 | 
            -
                     | 
| 34 | 
            -
             | 
| 39 | 
            +
                    i = Counter.new
         | 
| 40 | 
            +
                    clause.xpath(ns("./appendix")).each do |c|
         | 
| 41 | 
            +
                      i.increment(c)
         | 
| 42 | 
            +
                      @anchors[c["id"]] = anchor_struct(i.print, nil, @labels["appendix"], "clause")
         | 
| 35 43 | 
             
                      @anchors[c["id"]][:level] = 2
         | 
| 36 44 | 
             
                      @anchors[c["id"]][:container] = clause["id"]
         | 
| 37 | 
            -
                       | 
| 38 | 
            -
             | 
| 45 | 
            +
                      j = Counter.new
         | 
| 46 | 
            +
                      c.xpath(ns("./clause | ./references")).each do |c1|
         | 
| 47 | 
            +
                        j.increment(c1)
         | 
| 48 | 
            +
                        appendix_names1(c1, l10n("#{@labels["appendix"]} #{i.print}.#{j.print}"), 3, clause["id"])
         | 
| 39 49 | 
             
                      end
         | 
| 40 50 | 
             
                    end
         | 
| 41 51 | 
             
                  end
         | 
| @@ -44,24 +54,30 @@ module IsoDoc | |
| 44 54 | 
             
                    @anchors[clause["id"]] =
         | 
| 45 55 | 
             
                      { label: num, level: level, xref: num }
         | 
| 46 56 | 
             
                    # subclauses are not prefixed with "Clause"
         | 
| 57 | 
            +
                    i = Counter.new
         | 
| 47 58 | 
             
                    clause.xpath(ns("./clause | ./terms | ./term | ./definitions | "\
         | 
| 48 59 | 
             
                                    "./references")).
         | 
| 49 | 
            -
                                    | 
| 50 | 
            -
                       | 
| 60 | 
            +
                                   each do |c|
         | 
| 61 | 
            +
                      i.increment(c)
         | 
| 62 | 
            +
                      section_names1(c, "#{num}.#{i.print}", level + 1)
         | 
| 51 63 | 
             
                    end
         | 
| 52 64 | 
             
                  end
         | 
| 53 65 |  | 
| 54 66 | 
             
                  def annex_names1(clause, num, level)
         | 
| 55 67 | 
             
                    @anchors[clause["id"]] = { label: num, xref: num, level: level }
         | 
| 56 | 
            -
                     | 
| 57 | 
            -
             | 
| 68 | 
            +
                    i = Counter.new
         | 
| 69 | 
            +
                    clause.xpath(ns("./clause | ./references")).each do |c|
         | 
| 70 | 
            +
                      i.increment(c)
         | 
| 71 | 
            +
                      annex_names1(c, "#{num}.#{i.print}", level + 1)
         | 
| 58 72 | 
             
                    end
         | 
| 59 73 | 
             
                  end
         | 
| 60 74 |  | 
| 61 75 | 
             
                  def appendix_names1(clause, num, level, container)
         | 
| 62 76 | 
             
                    @anchors[clause["id"]] = { label: num, xref: num, level: level, container: container }
         | 
| 63 | 
            -
                     | 
| 64 | 
            -
             | 
| 77 | 
            +
                    i = Counter.new
         | 
| 78 | 
            +
                    clause.xpath(ns("./clause | ./references")).each do |c|
         | 
| 79 | 
            +
                      i.increment(c)
         | 
| 80 | 
            +
                      appendix_names1(c, "#{num}.#{i.print}", level + 1, container)
         | 
| 65 81 | 
             
                    end
         | 
| 66 82 | 
             
                  end
         | 
| 67 83 |  |