metanorma-standoc 1.3.24 → 1.3.29
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/macos.yml +10 -1
- data/.github/workflows/ubuntu.yml +13 -3
- data/.github/workflows/windows.yml +8 -1
- data/lib/asciidoctor/standoc/base.rb +29 -11
- data/lib/asciidoctor/standoc/biblio.rng +75 -28
- data/lib/asciidoctor/standoc/blocks.rb +12 -5
- data/lib/asciidoctor/standoc/cleanup.rb +17 -8
- data/lib/asciidoctor/standoc/cleanup_block.rb +3 -0
- data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +1 -3
- data/lib/asciidoctor/standoc/cleanup_inline.rb +3 -0
- data/lib/asciidoctor/standoc/cleanup_ref.rb +15 -6
- data/lib/asciidoctor/standoc/cleanup_section.rb +36 -8
- data/lib/asciidoctor/standoc/front.rb +5 -3
- data/lib/asciidoctor/standoc/inline.rb +43 -18
- data/lib/asciidoctor/standoc/isodoc.rng +31 -1
- data/lib/asciidoctor/standoc/macros.rb +2 -1
- data/lib/asciidoctor/standoc/macros_yaml2text.rb +142 -0
- data/lib/asciidoctor/standoc/ref.rb +6 -4
- data/lib/asciidoctor/standoc/section.rb +41 -9
- data/lib/asciidoctor/standoc/utils.rb +2 -11
- data/lib/asciidoctor/standoc/validate.rb +8 -2
- data/lib/asciidoctor/standoc/validate_section.rb +1 -3
- data/lib/metanorma/standoc/latexml_requirement.rb +14 -12
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +2 -2
- data/spec/asciidoctor-standoc/base_spec.rb +8 -0
- data/spec/asciidoctor-standoc/blocks_spec.rb +74 -2
- data/spec/asciidoctor-standoc/cleanup_spec.rb +75 -28
- data/spec/asciidoctor-standoc/inline_spec.rb +4 -3
- data/spec/asciidoctor-standoc/macros_spec.rb +9 -8
- data/spec/asciidoctor-standoc/macros_yaml2text_spec.rb +564 -0
- data/spec/asciidoctor-standoc/refs_dl_spec.rb +91 -3
- data/spec/asciidoctor-standoc/refs_spec.rb +272 -166
- data/spec/asciidoctor-standoc/section_spec.rb +197 -6
- data/spec/asciidoctor-standoc/validate_spec.rb +67 -2
- data/spec/assets/codes.yml +695 -0
- data/spec/assets/xref_error.adoc +7 -0
- data/spec/examples/codes_table.html +3174 -0
- data/spec/metanorma/processor_spec.rb +2 -2
- data/spec/spec_helper.rb +1 -0
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +77 -271
- data/spec/vcr_cassettes/isobib_get_123.yml +36 -82
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +17 -40
- data/spec/vcr_cassettes/isobib_get_124.yml +19 -101
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +34 -34
- metadata +11 -6
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: e964fb25b29d5ecbe775bf397a17f9cf264fa3709e8756be7a9025bcf043250f
         | 
| 4 | 
            +
              data.tar.gz: d6085180737f332f6aa657eb129bf72f02ca0466b60e22276ddda03cd2cbd788
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: baccf6cbbb3c32defcac92b95911e83f10f44338a2bb631a8c6ee86a7b00833583d27161b18ad45b2d80aeec8dcbe3dd349a39b4cfa08670f6cdbe1c8492323c
         | 
| 7 | 
            +
              data.tar.gz: 347739395332e6d3ac88ea0ec5bec557fa0d06dee7f7f2bbafa198e245131dd313c3f229f63bb3afc92c99eb4cd0cec8fc2a9f969e0cbf42a76271e45955e8eb
         | 
    
        data/.github/workflows/macos.yml
    CHANGED
    
    | @@ -6,15 +6,23 @@ on: | |
| 6 6 | 
             
              push:
         | 
| 7 7 | 
             
                branches: [ master ]
         | 
| 8 8 | 
             
              pull_request:
         | 
| 9 | 
            +
                paths-ignore:
         | 
| 10 | 
            +
                  - .github/workflows/ubuntu.yml
         | 
| 11 | 
            +
                  - .github/workflows/windows.yml
         | 
| 9 12 |  | 
| 10 13 | 
             
            jobs:
         | 
| 11 14 | 
             
              test-macos:
         | 
| 12 15 | 
             
                name: Test on Ruby ${{ matrix.ruby }} macOS
         | 
| 13 16 | 
             
                runs-on: macos-latest
         | 
| 17 | 
            +
                continue-on-error: ${{ matrix.experimental }}
         | 
| 14 18 | 
             
                strategy:
         | 
| 15 19 | 
             
                  fail-fast: false
         | 
| 16 20 | 
             
                  matrix:
         | 
| 17 21 | 
             
                    ruby: [ '2.6', '2.5', '2.4' ]
         | 
| 22 | 
            +
                    experimental: [false]
         | 
| 23 | 
            +
                    include:
         | 
| 24 | 
            +
                      - ruby: '2.7'
         | 
| 25 | 
            +
                        experimental: true
         | 
| 18 26 | 
             
                steps:
         | 
| 19 27 | 
             
                  - uses: actions/checkout@master
         | 
| 20 28 | 
             
                  - name: Use Ruby
         | 
| @@ -28,7 +36,8 @@ jobs: | |
| 28 36 | 
             
                  - name: Install LaTeXML
         | 
| 29 37 | 
             
                    run: |
         | 
| 30 38 | 
             
                      brew install libxml2 cpanminus
         | 
| 31 | 
            -
                      env PATH=$(brew --prefix libxml2)/bin:$PATH  | 
| 39 | 
            +
                      env PATH=$(brew --prefix libxml2)/bin:$PATH \
         | 
| 40 | 
            +
                        cpanm --notest XML::LibXSLT@1.96 git://github.com/brucemiller/LaTeXML.git@9a0e7dc5
         | 
| 32 41 | 
             
                  - name: Install PlantUML
         | 
| 33 42 | 
             
                    run: |
         | 
| 34 43 | 
             
                      brew install plantuml
         | 
| @@ -6,15 +6,23 @@ on: | |
| 6 6 | 
             
              push:
         | 
| 7 7 | 
             
                branches: [ master ]
         | 
| 8 8 | 
             
              pull_request:
         | 
| 9 | 
            +
                paths-ignore:
         | 
| 10 | 
            +
                  - .github/workflows/macos.yml
         | 
| 11 | 
            +
                  - .github/workflows/windows.yml
         | 
| 9 12 |  | 
| 10 13 | 
             
            jobs:
         | 
| 11 14 | 
             
              test-linux:
         | 
| 12 15 | 
             
                name: Test on Ruby ${{ matrix.ruby }} Ubuntu
         | 
| 13 16 | 
             
                runs-on: ubuntu-latest
         | 
| 17 | 
            +
                continue-on-error: ${{ matrix.experimental }}
         | 
| 14 18 | 
             
                strategy:
         | 
| 15 19 | 
             
                  fail-fast: false
         | 
| 16 20 | 
             
                  matrix:
         | 
| 17 21 | 
             
                    ruby: [ '2.6', '2.5', '2.4' ]
         | 
| 22 | 
            +
                    experimental: [false]
         | 
| 23 | 
            +
                    include:
         | 
| 24 | 
            +
                      - ruby: '2.7'
         | 
| 25 | 
            +
                        experimental: true
         | 
| 18 26 | 
             
                steps:
         | 
| 19 27 | 
             
                  - uses: actions/checkout@master
         | 
| 20 28 | 
             
                  - name: Use Ruby
         | 
| @@ -31,14 +39,16 @@ jobs: | |
| 31 39 | 
             
                      bundle install --jobs 4 --retry 3
         | 
| 32 40 | 
             
                  - name: Install LaTeXML
         | 
| 33 41 | 
             
                    run: |
         | 
| 34 | 
            -
                      sudo snap install latexml
         | 
| 35 | 
            -
                       | 
| 42 | 
            +
                      sudo snap install latexml --edge
         | 
| 43 | 
            +
                      echo "::add-path::/snap/bin"
         | 
| 36 44 | 
             
                  - name: Install PlantUML
         | 
| 37 45 | 
             
                    run: |
         | 
| 38 46 | 
             
                      curl -L https://raw.githubusercontent.com/metanorma/plantuml-install/master/ubuntu.sh | sudo bash
         | 
| 39 47 | 
             
                  - name: Install puppeteer
         | 
| 40 48 | 
             
                    run: |
         | 
| 41 | 
            -
                       | 
| 49 | 
            +
                      sudo apt-get update
         | 
| 50 | 
            +
                      sudo apt-get install -y libgbm1
         | 
| 51 | 
            +
                      npm install -g puppeteer@3.0.1
         | 
| 42 52 | 
             
                  - name: Run specs
         | 
| 43 53 | 
             
                    run: |
         | 
| 44 54 | 
             
                      bundle exec rake
         | 
| @@ -6,15 +6,23 @@ on: | |
| 6 6 | 
             
              push:
         | 
| 7 7 | 
             
                branches: [ master ]
         | 
| 8 8 | 
             
              pull_request:
         | 
| 9 | 
            +
                paths-ignore:
         | 
| 10 | 
            +
                  - .github/workflows/macos.yml
         | 
| 11 | 
            +
                  - .github/workflows/ubuntu.yml
         | 
| 9 12 |  | 
| 10 13 | 
             
            jobs:
         | 
| 11 14 | 
             
              test-windows:
         | 
| 12 15 | 
             
                name: Test on Ruby ${{ matrix.ruby }} Windows
         | 
| 13 16 | 
             
                runs-on: windows-latest
         | 
| 17 | 
            +
                continue-on-error: ${{ matrix.experimental }}
         | 
| 14 18 | 
             
                strategy:
         | 
| 15 19 | 
             
                  fail-fast: false
         | 
| 16 20 | 
             
                  matrix:
         | 
| 17 21 | 
             
                    ruby: [ '2.6', '2.5', '2.4' ]
         | 
| 22 | 
            +
                    experimental: [false]
         | 
| 23 | 
            +
                    include:
         | 
| 24 | 
            +
                      - ruby: '2.7'
         | 
| 25 | 
            +
                        experimental: true
         | 
| 18 26 | 
             
                steps:
         | 
| 19 27 | 
             
                  - uses: actions/checkout@master
         | 
| 20 28 | 
             
                  - name: Use Ruby
         | 
| @@ -34,7 +42,6 @@ jobs: | |
| 34 42 | 
             
                    run: |
         | 
| 35 43 | 
             
                      gem install bundler
         | 
| 36 44 | 
             
                      bundle config --local path vendor/bundle
         | 
| 37 | 
            -
                      bundle update
         | 
| 38 45 | 
             
                      bundle install --jobs 4 --retry 3
         | 
| 39 46 | 
             
                  - name: Install LaTeXML
         | 
| 40 47 | 
             
                    shell: cmd
         | 
| @@ -15,6 +15,7 @@ module Asciidoctor | |
| 15 15 | 
             
                  XML_NAMESPACE = "https://www.metanorma.org/ns/standoc".freeze
         | 
| 16 16 |  | 
| 17 17 | 
             
                  Asciidoctor::Extensions.register do
         | 
| 18 | 
            +
                    preprocessor Asciidoctor::Standoc::Yaml2TextPreprocessor
         | 
| 18 19 | 
             
                    inline_macro Asciidoctor::Standoc::AltTermInlineMacro
         | 
| 19 20 | 
             
                    inline_macro Asciidoctor::Standoc::DeprecatedTermInlineMacro
         | 
| 20 21 | 
             
                    inline_macro Asciidoctor::Standoc::DomainTermInlineMacro
         | 
| @@ -27,6 +28,14 @@ module Asciidoctor | |
| 27 28 | 
             
                    block Asciidoctor::Standoc::PseudocodeBlockMacro
         | 
| 28 29 | 
             
                  end
         | 
| 29 30 |  | 
| 31 | 
            +
                  def xml_root_tag
         | 
| 32 | 
            +
                    self.class::XML_ROOT_TAG
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  def xml_namespace
         | 
| 36 | 
            +
                    self.class::XML_NAMESPACE
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 30 39 | 
             
                  def content(node)
         | 
| 31 40 | 
             
                    node.content
         | 
| 32 41 | 
             
                  end
         | 
| @@ -34,7 +43,7 @@ module Asciidoctor | |
| 34 43 | 
             
                  def skip(node, name = nil)
         | 
| 35 44 | 
             
                    name = name || node.node_name
         | 
| 36 45 | 
             
                    w = "converter missing for #{name} node in Metanorma backend"
         | 
| 37 | 
            -
                    @log.add(" | 
| 46 | 
            +
                    @log.add("AsciiDoc Input", node, w)
         | 
| 38 47 | 
             
                    nil
         | 
| 39 48 | 
             
                  end
         | 
| 40 49 |  | 
| @@ -54,6 +63,7 @@ module Asciidoctor | |
| 54 63 | 
             
                      datauriimage: node.attr("data-uri-image"),
         | 
| 55 64 | 
             
                      htmltoclevels: node.attr("htmltoclevels") || node.attr("toclevels"),
         | 
| 56 65 | 
             
                      doctoclevels: node.attr("doctoclevels") || node.attr("toclevels"),
         | 
| 66 | 
            +
                      break_up_urls_in_tables: node.attr("break-up-urls-in-tables"),
         | 
| 57 67 | 
             
                    }
         | 
| 58 68 | 
             
                  end
         | 
| 59 69 |  | 
| @@ -78,6 +88,7 @@ module Asciidoctor | |
| 78 88 | 
             
                      olstyle: node.attr("olstyle"),
         | 
| 79 89 | 
             
                      htmltoclevels: node.attr("htmltoclevels") || node.attr("toclevels"),
         | 
| 80 90 | 
             
                      doctoclevels: node.attr("doctoclevels") || node.attr("toclevels"),
         | 
| 91 | 
            +
                      break_up_urls_in_tables: node.attr("break-up-urls-in-tables"),
         | 
| 81 92 | 
             
                    }
         | 
| 82 93 | 
             
                  end
         | 
| 83 94 |  | 
| @@ -98,7 +109,7 @@ module Asciidoctor | |
| 98 109 | 
             
                    @fontheader = default_fonts(node)
         | 
| 99 110 | 
             
                    @files_to_delete = []
         | 
| 100 111 | 
             
                    @filename = node.attr("docfile") ?
         | 
| 101 | 
            -
                      node.attr("docfile").gsub(/\.adoc$/, "") | 
| 112 | 
            +
                      File.basename(node.attr("docfile")).gsub(/\.adoc$/, "") : ""
         | 
| 102 113 | 
             
                    @localdir = Utils::localdir(node)
         | 
| 103 114 | 
             
                    @no_isobib_cache = node.attr("no-isobib-cache")
         | 
| 104 115 | 
             
                    @no_isobib = node.attr("no-isobib")
         | 
| @@ -158,24 +169,28 @@ module Asciidoctor | |
| 158 169 | 
             
                      html_converter(node).convert(@filename + ".xml")
         | 
| 159 170 | 
             
                      doc_converter(node).convert(@filename + ".xml")
         | 
| 160 171 | 
             
                    end
         | 
| 172 | 
            +
                    clean_exit
         | 
| 173 | 
            +
                    ret
         | 
| 174 | 
            +
                  end
         | 
| 175 | 
            +
             | 
| 176 | 
            +
                  def clean_exit
         | 
| 161 177 | 
             
                    @log.write(@localdir + @filename + ".err") unless @novalid
         | 
| 162 178 | 
             
                    @files_to_delete.each { |f| FileUtils.rm f }
         | 
| 163 | 
            -
                    ret
         | 
| 164 179 | 
             
                  end
         | 
| 165 180 |  | 
| 166 181 | 
             
                  def makexml1(node)
         | 
| 167 182 | 
             
                    result = ["<?xml version='1.0' encoding='UTF-8'?>",
         | 
| 168 | 
            -
                              "<#{ | 
| 183 | 
            +
                              "<#{xml_root_tag}>"]
         | 
| 169 184 | 
             
                    result << noko { |ixml| front node, ixml }
         | 
| 170 185 | 
             
                    result << noko { |ixml| middle node, ixml }
         | 
| 171 | 
            -
                    result << "</#{ | 
| 186 | 
            +
                    result << "</#{xml_root_tag}>"
         | 
| 172 187 | 
             
                    textcleanup(result)
         | 
| 173 188 | 
             
                  end
         | 
| 174 189 |  | 
| 175 190 | 
             
                  def makexml(node)
         | 
| 176 191 | 
             
                    result = makexml1(node)
         | 
| 177 192 | 
             
                    ret1 = cleanup(Nokogiri::XML(result))
         | 
| 178 | 
            -
                    ret1.root.add_namespace(nil,  | 
| 193 | 
            +
                    ret1.root.add_namespace(nil, xml_namespace)
         | 
| 179 194 | 
             
                    validate(ret1) unless @novalid
         | 
| 180 195 | 
             
                    ret1
         | 
| 181 196 | 
             
                  end
         | 
| @@ -207,15 +222,19 @@ module Asciidoctor | |
| 207 222 | 
             
                  end
         | 
| 208 223 |  | 
| 209 224 | 
             
                  def add_term_source(xml_t, seen_xref, m)
         | 
| 210 | 
            -
                     | 
| 211 | 
            -
                       | 
| 225 | 
            +
                    if seen_xref.children[0].name == "concept"
         | 
| 226 | 
            +
                      xml_t.origin { |o| o << seen_xref.children[0].to_xml }
         | 
| 227 | 
            +
                    else
         | 
| 228 | 
            +
                      xml_t.origin seen_xref.children[0].content,
         | 
| 229 | 
            +
                        **attr_code(term_source_attr(seen_xref))
         | 
| 230 | 
            +
                    end
         | 
| 212 231 | 
             
                    m[:text] && xml_t.modification do |mod|
         | 
| 213 232 | 
             
                      mod.p { |p| p << m[:text].sub(/^\s+/, "") }
         | 
| 214 233 | 
             
                    end
         | 
| 215 234 | 
             
                  end
         | 
| 216 235 |  | 
| 217 236 | 
             
                  TERM_REFERENCE_RE_STR = <<~REGEXP.freeze
         | 
| 218 | 
            -
                    ^(?<xref><xref[^>]+>([^<]*</xref>)?)
         | 
| 237 | 
            +
                    ^(?<xref><(xref|concept)[^>]+>([^<]*</(xref|concept)>)?)
         | 
| 219 238 | 
             
                           (,\s(?<text>.*))?
         | 
| 220 239 | 
             
                    $
         | 
| 221 240 | 
             
                  REGEXP
         | 
| @@ -226,8 +245,7 @@ module Asciidoctor | |
| 226 245 | 
             
                  def extract_termsource_refs(text, node)
         | 
| 227 246 | 
             
                    matched = TERM_REFERENCE_RE.match text
         | 
| 228 247 | 
             
                    matched.nil? and
         | 
| 229 | 
            -
                       | 
| 230 | 
            -
                    @log.add("Asciidoctor Input", node, "term reference not in expected format: #{text}")
         | 
| 248 | 
            +
                      @log.add("AsciiDoc Input", node, "term reference not in expected format: #{text}")
         | 
| 231 249 | 
             
                    matched
         | 
| 232 250 | 
             
                  end
         | 
| 233 251 |  | 
| @@ -88,7 +88,7 @@ | |
| 88 88 | 
             
                  <text/>
         | 
| 89 89 | 
             
                </element>
         | 
| 90 90 | 
             
              </define>
         | 
| 91 | 
            -
              <define name=" | 
| 91 | 
            +
              <define name="LocalizedString1">
         | 
| 92 92 | 
             
                <optional>
         | 
| 93 93 | 
             
                  <!-- multiple languages and scripts possible: comma delimit them if so -->
         | 
| 94 94 | 
             
                  <attribute name="language"/>
         | 
| @@ -98,6 +98,16 @@ | |
| 98 98 | 
             
                </optional>
         | 
| 99 99 | 
             
                <text/>
         | 
| 100 100 | 
             
              </define>
         | 
| 101 | 
            +
              <define name="LocalizedString">
         | 
| 102 | 
            +
                <choice>
         | 
| 103 | 
            +
                  <ref name="LocalizedString1"/>
         | 
| 104 | 
            +
                  <oneOrMore>
         | 
| 105 | 
            +
                    <element name="variant">
         | 
| 106 | 
            +
                      <ref name="LocalizedString1"/>
         | 
| 107 | 
            +
                    </element>
         | 
| 108 | 
            +
                  </oneOrMore>
         | 
| 109 | 
            +
                </choice>
         | 
| 110 | 
            +
              </define>
         | 
| 101 111 | 
             
              <!--
         | 
| 102 112 | 
             
                Unlike UML, change type to format: type is overloaded
         | 
| 103 113 | 
             
                Would be need if plain were default value and could omit the attribute
         | 
| @@ -121,7 +131,7 @@ | |
| 121 131 | 
             
                </optional>
         | 
| 122 132 | 
             
                <ref name="LocalizedStringOrXsAny"/>
         | 
| 123 133 | 
             
              </define>
         | 
| 124 | 
            -
              <define name=" | 
| 134 | 
            +
              <define name="LocalizedStringOrXsAny1">
         | 
| 125 135 | 
             
                <optional>
         | 
| 126 136 | 
             
                  <!-- multiple languages and scripts possible: comma delimit them if so -->
         | 
| 127 137 | 
             
                  <attribute name="language"/>
         | 
| @@ -136,6 +146,16 @@ | |
| 136 146 | 
             
                  </choice>
         | 
| 137 147 | 
             
                </oneOrMore>
         | 
| 138 148 | 
             
              </define>
         | 
| 149 | 
            +
              <define name="LocalizedStringOrXsAny">
         | 
| 150 | 
            +
                <choice>
         | 
| 151 | 
            +
                  <ref name="LocalizedStringOrXsAny1"/>
         | 
| 152 | 
            +
                  <oneOrMore>
         | 
| 153 | 
            +
                    <element name="variant">
         | 
| 154 | 
            +
                      <ref name="LocalizedStringOrXsAny1"/>
         | 
| 155 | 
            +
                    </element>
         | 
| 156 | 
            +
                  </oneOrMore>
         | 
| 157 | 
            +
                </choice>
         | 
| 158 | 
            +
              </define>
         | 
| 139 159 | 
             
              <define name="contributor">
         | 
| 140 160 | 
             
                <element name="contributor">
         | 
| 141 161 | 
             
                  <zeroOrMore>
         | 
| @@ -767,6 +787,8 @@ | |
| 767 787 | 
             
                  <value>unchanged</value>
         | 
| 768 788 | 
             
                  <value>circulated</value>
         | 
| 769 789 | 
             
                  <value>adapted</value>
         | 
| 790 | 
            +
                  <value>vote-started</value>
         | 
| 791 | 
            +
                  <value>vote-ended</value>
         | 
| 770 792 | 
             
                </choice>
         | 
| 771 793 | 
             
              </define>
         | 
| 772 794 | 
             
              <define name="bdate">
         | 
| @@ -1019,38 +1041,63 @@ | |
| 1019 1041 | 
             
              </define>
         | 
| 1020 1042 | 
             
              <define name="DocRelationType">
         | 
| 1021 1043 | 
             
                <choice>
         | 
| 1022 | 
            -
                  <value>obsoletes</value>
         | 
| 1023 | 
            -
                  <value>obsoletedBy</value>
         | 
| 1024 | 
            -
                  <value>supersedes</value>
         | 
| 1025 | 
            -
                  <value>supersededBy</value>
         | 
| 1026 | 
            -
                  <value>updates</value>
         | 
| 1027 | 
            -
                  <value>updatedBy</value>
         | 
| 1028 | 
            -
                  <value>complements</value>
         | 
| 1029 | 
            -
                  <value>derivedFrom</value>
         | 
| 1030 | 
            -
                  <value>translatedFrom</value>
         | 
| 1031 | 
            -
                  <value>hasTranslation</value>
         | 
| 1032 | 
            -
                  <value>adoptedFrom</value>
         | 
| 1033 | 
            -
                  <value>equivalent</value>
         | 
| 1034 | 
            -
                  <value>identical</value>
         | 
| 1035 | 
            -
                  <value>nonequivalent</value>
         | 
| 1036 | 
            -
                  <value>includedIn</value>
         | 
| 1037 1044 | 
             
                  <value>includes</value>
         | 
| 1038 | 
            -
                  <value> | 
| 1039 | 
            -
                  <value>instanceOf</value>
         | 
| 1040 | 
            -
                  <value>partOf</value>
         | 
| 1045 | 
            +
                  <value>includedIn</value>
         | 
| 1041 1046 | 
             
                  <value>hasPart</value>
         | 
| 1042 | 
            -
                  <value> | 
| 1043 | 
            -
                  <value>draftOf</value>
         | 
| 1047 | 
            +
                  <value>partOf</value>
         | 
| 1044 1048 | 
             
                  <value>merges</value>
         | 
| 1049 | 
            +
                  <value>mergedInto</value>
         | 
| 1045 1050 | 
             
                  <value>splits</value>
         | 
| 1046 | 
            -
                  <value> | 
| 1047 | 
            -
                  <value> | 
| 1048 | 
            -
                  <value> | 
| 1049 | 
            -
                  <value> | 
| 1050 | 
            -
                  <value> | 
| 1051 | 
            -
                  <value> | 
| 1051 | 
            +
                  <value>splitInto</value>
         | 
| 1052 | 
            +
                  <value>instance</value>
         | 
| 1053 | 
            +
                  <value>hasInstance</value>
         | 
| 1054 | 
            +
                  <value>exemplarOf</value>
         | 
| 1055 | 
            +
                  <value>hasExemplar</value>
         | 
| 1056 | 
            +
                  <value>manifestationOf</value>
         | 
| 1057 | 
            +
                  <value>hasManifestation</value>
         | 
| 1058 | 
            +
                  <value>reproductionOf</value>
         | 
| 1059 | 
            +
                  <value>hasReproduction</value>
         | 
| 1060 | 
            +
                  <value>reprintOf</value>
         | 
| 1061 | 
            +
                  <value>hasReprint</value>
         | 
| 1062 | 
            +
                  <value>expressionOf</value>
         | 
| 1063 | 
            +
                  <value>hasExpression</value>
         | 
| 1064 | 
            +
                  <value>translatedFrom</value>
         | 
| 1065 | 
            +
                  <value>hasTranslation</value>
         | 
| 1066 | 
            +
                  <value>arrangementOf</value>
         | 
| 1067 | 
            +
                  <value>hasArrangement</value>
         | 
| 1068 | 
            +
                  <value>abridgementOf</value>
         | 
| 1069 | 
            +
                  <value>hasAbridgement</value>
         | 
| 1070 | 
            +
                  <value>annotationOf</value>
         | 
| 1071 | 
            +
                  <value>hasAnnotation</value>
         | 
| 1072 | 
            +
                  <value>draftOf</value>
         | 
| 1073 | 
            +
                  <value>hasDraft</value>
         | 
| 1074 | 
            +
                  <value>editionOf</value>
         | 
| 1075 | 
            +
                  <value>hasEdition</value>
         | 
| 1076 | 
            +
                  <value>updates</value>
         | 
| 1077 | 
            +
                  <value>updatedBy</value>
         | 
| 1078 | 
            +
                  <value>derivedFrom</value>
         | 
| 1079 | 
            +
                  <value>derives</value>
         | 
| 1052 1080 | 
             
                  <value>describes</value>
         | 
| 1053 1081 | 
             
                  <value>describedBy</value>
         | 
| 1082 | 
            +
                  <value>catalogues</value>
         | 
| 1083 | 
            +
                  <value>cataloguedBy</value>
         | 
| 1084 | 
            +
                  <value>hasSuccessor</value>
         | 
| 1085 | 
            +
                  <value>successorOf</value>
         | 
| 1086 | 
            +
                  <value>adaptedFrom</value>
         | 
| 1087 | 
            +
                  <value>hasAdaptation</value>
         | 
| 1088 | 
            +
                  <value>adoptedFrom</value>
         | 
| 1089 | 
            +
                  <value>adoptedAs</value>
         | 
| 1090 | 
            +
                  <value>reviewOf</value>
         | 
| 1091 | 
            +
                  <value>hasReview</value>
         | 
| 1092 | 
            +
                  <value>commentaryOf</value>
         | 
| 1093 | 
            +
                  <value>hasCommentary</value>
         | 
| 1094 | 
            +
                  <value>related</value>
         | 
| 1095 | 
            +
                  <value>complements</value>
         | 
| 1096 | 
            +
                  <value>complementOf</value>
         | 
| 1097 | 
            +
                  <value>obsoletes</value>
         | 
| 1098 | 
            +
                  <value>obsoletedBy</value>
         | 
| 1099 | 
            +
                  <value>cited</value>
         | 
| 1100 | 
            +
                  <value>isCitedIn</value>
         | 
| 1054 1101 | 
             
                </choice>
         | 
| 1055 1102 | 
             
              </define>
         | 
| 1056 1103 | 
             
              <define name="docrelation">
         | 
| @@ -21,6 +21,10 @@ module Asciidoctor | |
| 21 21 | 
             
                              subsequence: node.attr("subsequence") )
         | 
| 22 22 | 
             
                  end
         | 
| 23 23 |  | 
| 24 | 
            +
                  def note_attr(node)
         | 
| 25 | 
            +
                    attr_code(id_attr(node).merge("keep-separate": node.attr("keep-separate")))
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 24 28 | 
             
                  # We append each contained block to its parent
         | 
| 25 29 | 
             
                  def open(node)
         | 
| 26 30 | 
             
                    role = node.role || node.attr("style")
         | 
| @@ -91,7 +95,7 @@ module Asciidoctor | |
| 91 95 |  | 
| 92 96 | 
             
                  def termnote(n)
         | 
| 93 97 | 
             
                    noko do |xml|
         | 
| 94 | 
            -
                      xml.termnote ** | 
| 98 | 
            +
                      xml.termnote **note_attr(n) do |ex|
         | 
| 95 99 | 
             
                        wrap_in_para(n, ex)
         | 
| 96 100 | 
             
                      end
         | 
| 97 101 | 
             
                    end.join("\n")
         | 
| @@ -99,7 +103,7 @@ module Asciidoctor | |
| 99 103 |  | 
| 100 104 | 
             
                  def note(n)
         | 
| 101 105 | 
             
                    noko do |xml|
         | 
| 102 | 
            -
                      xml.note ** | 
| 106 | 
            +
                      xml.note **note_attr(n) do |c|
         | 
| 103 107 | 
             
                        wrap_in_para(n, c)
         | 
| 104 108 | 
             
                      end
         | 
| 105 109 | 
             
                    end.join("\n")
         | 
| @@ -146,8 +150,7 @@ module Asciidoctor | |
| 146 150 |  | 
| 147 151 | 
             
                  def pseudocode_example(node)
         | 
| 148 152 | 
             
                    noko do |xml|
         | 
| 149 | 
            -
                      xml.figure ** | 
| 150 | 
            -
                                    class: "pseudocode"} do |ex|
         | 
| 153 | 
            +
                      xml.figure **id_unnum_attr(node).merge(class: "pseudocode") do |ex|
         | 
| 151 154 | 
             
                        figure_title(node, ex)
         | 
| 152 155 | 
             
                        wrap_in_para(node, ex)
         | 
| 153 156 | 
             
                      end
         | 
| @@ -244,7 +247,11 @@ module Asciidoctor | |
| 244 247 | 
             
                  end
         | 
| 245 248 |  | 
| 246 249 | 
             
                  def pass(node)
         | 
| 247 | 
            -
                     | 
| 250 | 
            +
                    noko do |xml|
         | 
| 251 | 
            +
                      xml.passthrough **attr_code(formats: node.attr("format")) do |p|
         | 
| 252 | 
            +
                        p << HTMLEntities.new.encode(node.content, :basic, :hexadecimal)
         | 
| 253 | 
            +
                      end
         | 
| 254 | 
            +
                    end
         | 
| 248 255 | 
             
                  end
         | 
| 249 256 | 
             
                end
         | 
| 250 257 | 
             
              end
         | 
| @@ -20,18 +20,18 @@ module Asciidoctor | |
| 20 20 | 
             
                        "<amathstem>#{HTMLEntities.new.decode($1)}</amathstem>"
         | 
| 21 21 | 
             
                      end
         | 
| 22 22 | 
             
                      text = Html2Doc.
         | 
| 23 | 
            -
                        asciimath_to_mathml(text, ["<amathstem>", "</amathstem>"]) | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 23 | 
            +
                        asciimath_to_mathml(text, ["<amathstem>", "</amathstem>"])
         | 
| 24 | 
            +
                      x =  Nokogiri::XML(text)
         | 
| 25 | 
            +
                      x.xpath("//*[local-name() = 'math'][not(parent::stem)]").each do |y|
         | 
| 26 | 
            +
                        y.wrap("<stem type='MathML'></stem>")
         | 
| 27 | 
            +
                      end
         | 
| 28 | 
            +
                      text = x.to_xml
         | 
| 28 29 | 
             
                    end
         | 
| 29 30 | 
             
                    text.gsub(/\s+<fn /, "<fn ")
         | 
| 30 31 | 
             
                  end
         | 
| 31 32 |  | 
| 32 33 | 
             
                  def cleanup(xmldoc)
         | 
| 33 34 | 
             
                    element_name_cleanup(xmldoc)
         | 
| 34 | 
            -
                    termdef_cleanup(xmldoc)
         | 
| 35 35 | 
             
                    sections_cleanup(xmldoc)
         | 
| 36 36 | 
             
                    obligations_cleanup(xmldoc)
         | 
| 37 37 | 
             
                    table_cleanup(xmldoc)
         | 
| @@ -45,15 +45,15 @@ module Asciidoctor | |
| 45 45 | 
             
                    reference_names(xmldoc)
         | 
| 46 46 | 
             
                    symbols_cleanup(xmldoc)
         | 
| 47 47 | 
             
                    xref_cleanup(xmldoc)
         | 
| 48 | 
            -
                    origin_cleanup(xmldoc)
         | 
| 49 48 | 
             
                    concept_cleanup(xmldoc)
         | 
| 49 | 
            +
                    origin_cleanup(xmldoc)
         | 
| 50 | 
            +
                    termdef_cleanup(xmldoc)
         | 
| 50 51 | 
             
                    RelatonIev::iev_cleanup(xmldoc, @bibdb)
         | 
| 51 52 | 
             
                    element_name_cleanup(xmldoc)
         | 
| 52 53 | 
             
                    bpart_cleanup(xmldoc)
         | 
| 53 54 | 
             
                    quotesource_cleanup(xmldoc)
         | 
| 54 55 | 
             
                    callout_cleanup(xmldoc)
         | 
| 55 56 | 
             
                    footnote_cleanup(xmldoc)
         | 
| 56 | 
            -
                    empty_element_cleanup(xmldoc)
         | 
| 57 57 | 
             
                    mathml_cleanup(xmldoc)
         | 
| 58 58 | 
             
                    script_cleanup(xmldoc)
         | 
| 59 59 | 
             
                    docidentifier_cleanup(xmldoc)
         | 
| @@ -63,6 +63,8 @@ module Asciidoctor | |
| 63 63 | 
             
                    boilerplate_cleanup(xmldoc)
         | 
| 64 64 | 
             
                    smartquotes_cleanup(xmldoc)
         | 
| 65 65 | 
             
                    para_cleanup(xmldoc)
         | 
| 66 | 
            +
                    empty_element_cleanup(xmldoc)
         | 
| 67 | 
            +
                    img_cleanup(xmldoc)
         | 
| 66 68 | 
             
                    xmldoc
         | 
| 67 69 | 
             
                  end
         | 
| 68 70 |  | 
| @@ -157,6 +159,13 @@ module Asciidoctor | |
| 157 159 | 
             
                      x.replace(x.children)
         | 
| 158 160 | 
             
                    end
         | 
| 159 161 | 
             
                  end
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                  def img_cleanup(xmldoc)
         | 
| 164 | 
            +
                    return xmldoc unless @datauriimage
         | 
| 165 | 
            +
                    xmldoc.xpath("//image").each do |i|
         | 
| 166 | 
            +
                      i["src"] = datauri(i["src"])
         | 
| 167 | 
            +
                    end
         | 
| 168 | 
            +
                  end
         | 
| 160 169 | 
             
                end
         | 
| 161 170 | 
             
              end
         | 
| 162 171 | 
             
            end
         |