isodoc 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Gemfile.lock +3 -3
 - data/README.adoc +1 -0
 - data/lib/isodoc/convert.rb +6 -0
 - data/lib/isodoc/function/section.rb +4 -6
 - data/lib/isodoc/html_function/html.rb +14 -5
 - data/lib/isodoc/version.rb +1 -1
 - data/spec/isodoc/postproc_spec.rb +30 -0
 - data/spec/isodoc/section_spec.rb +180 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 271b0b210ccc7da3e9b0a09cf49fb248ff4708fd4f92adfb5529683db655fe63
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4345484709eba0f0ac06dc772fd62455c0f601c2f36c57b0ae1d8fdade47dbdd
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 80a4d6a127130129671f6553283d7a09b2afb8f69756435cc5e20381309a92b5edd055eda730b10cf025fa6bb5169db65e38cff64cdfbf9d0dc20de415fe1f20
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b90a49e79bf3b1d03c15adfcaed42b2e64293ab161b6e585448487db29e40129f8994da57d8429130c54bc66dc73640f5ca929d285c7d3528e44b341150ca2b5
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                isodoc (0.9. 
     | 
| 
      
 4 
     | 
    
         
            +
                isodoc (0.9.1)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  asciimath
         
     | 
| 
       6 
6 
     | 
    
         
             
                  html2doc (~> 0.8.1)
         
     | 
| 
       7 
7 
     | 
    
         
             
                  htmlentities (~> 4.3.4)
         
     | 
| 
         @@ -60,7 +60,7 @@ GEM 
     | 
|
| 
       60 
60 
     | 
    
         
             
                  rb-inotify (~> 0.9, >= 0.9.7)
         
     | 
| 
       61 
61 
     | 
    
         
             
                  ruby_dep (~> 1.2)
         
     | 
| 
       62 
62 
     | 
    
         
             
                lumberjack (1.0.13)
         
     | 
| 
       63 
     | 
    
         
            -
                metanorma (0.2. 
     | 
| 
      
 63 
     | 
    
         
            +
                metanorma (0.2.9)
         
     | 
| 
       64 
64 
     | 
    
         
             
                method_source (0.9.0)
         
     | 
| 
       65 
65 
     | 
    
         
             
                mime-types (3.2.2)
         
     | 
| 
       66 
66 
     | 
    
         
             
                  mime-types-data (~> 3.2015)
         
     | 
| 
         @@ -98,7 +98,7 @@ GEM 
     | 
|
| 
       98 
98 
     | 
    
         
             
                  diff-lcs (>= 1.2.0, < 2.0)
         
     | 
| 
       99 
99 
     | 
    
         
             
                  rspec-support (~> 3.8.0)
         
     | 
| 
       100 
100 
     | 
    
         
             
                rspec-support (3.8.0)
         
     | 
| 
       101 
     | 
    
         
            -
                rubocop (0. 
     | 
| 
      
 101 
     | 
    
         
            +
                rubocop (0.59.1)
         
     | 
| 
       102 
102 
     | 
    
         
             
                  jaro_winkler (~> 1.5.1)
         
     | 
| 
       103 
103 
     | 
    
         
             
                  parallel (~> 1.10)
         
     | 
| 
       104 
104 
     | 
    
         
             
                  parser (>= 2.5, != 2.5.1.1)
         
     | 
    
        data/README.adoc
    CHANGED
    
    | 
         @@ -32,6 +32,7 @@ wordcoverpage:: Cover page for Word output 
     | 
|
| 
       32 
32 
     | 
    
         
             
            wordintropage:: Introductory page for Word output
         
     | 
| 
       33 
33 
     | 
    
         
             
            ulstyle:: Style identifier in Word stylesheet for unordered lists
         
     | 
| 
       34 
34 
     | 
    
         
             
            olstyle:: Style identifier in Word stylesheet for ordered list
         
     | 
| 
      
 35 
     | 
    
         
            +
            suppressheadingnumbers:: Suppress heading numbers for clauses (does not apply to annexes)
         
     | 
| 
       35 
36 
     | 
    
         | 
| 
       36 
37 
     | 
    
         
             
            The IsoDoc gem classes themselves are abstract (though their current implementation contains rendering specific to the ISO standard.) Subclasses of the Isodoc gem classes are specific to different standards, and are associated with templates and stylesheets speciific to the rendering of those standards. Subclasses also provide the default values for the rendering parameters above; they should be used only as overrides.
         
     | 
| 
       37 
38 
     | 
    
         | 
    
        data/lib/isodoc/convert.rb
    CHANGED
    
    | 
         @@ -19,6 +19,10 @@ module IsoDoc 
     | 
|
| 
       19 
19 
     | 
    
         
             
                # bodyfont: font to use for body text
         
     | 
| 
       20 
20 
     | 
    
         
             
                # headerfont: font to use for header text
         
     | 
| 
       21 
21 
     | 
    
         
             
                # monospace: font to use for monospace text
         
     | 
| 
      
 22 
     | 
    
         
            +
                # suppressheadingnumbers: suppress heading numbers for clauses
         
     | 
| 
      
 23 
     | 
    
         
            +
                # scripts: Scripts file for HTML
         
     | 
| 
      
 24 
     | 
    
         
            +
                # scripts_pdf: Scripts file for PDF
         
     | 
| 
      
 25 
     | 
    
         
            +
                # datauriimage: Encode images in HTML output as data URIs
         
     | 
| 
       22 
26 
     | 
    
         
             
                def initialize(options)
         
     | 
| 
       23 
27 
     | 
    
         
             
                  @libdir = File.dirname(__FILE__) unless @libdir
         
     | 
| 
       24 
28 
     | 
    
         
             
                  options.merge!(default_fonts(options)) { |_, old, new| old || new }.
         
     | 
| 
         @@ -38,6 +42,8 @@ module IsoDoc 
     | 
|
| 
       38 
42 
     | 
    
         
             
                  @i18nyaml = options[:i18nyaml]
         
     | 
| 
       39 
43 
     | 
    
         
             
                  @ulstyle = options[:ulstyle]
         
     | 
| 
       40 
44 
     | 
    
         
             
                  @olstyle = options[:olstyle]
         
     | 
| 
      
 45 
     | 
    
         
            +
                  @datauriimage = options[:datauriimage]
         
     | 
| 
      
 46 
     | 
    
         
            +
                  @suppressheadingnumbers = options[:suppressheadingnumbers]
         
     | 
| 
       41 
47 
     | 
    
         
             
                  @termdomain = ""
         
     | 
| 
       42 
48 
     | 
    
         
             
                  @termexample = false
         
     | 
| 
       43 
49 
     | 
    
         
             
                  @note = false
         
     | 
| 
         @@ -5,10 +5,9 @@ module IsoDoc::Function 
     | 
|
| 
       5 
5 
     | 
    
         
             
                  out.span **{ class: "zzMoveToFollowing" } do |s|
         
     | 
| 
       6 
6 
     | 
    
         
             
                    s.b do |b|
         
     | 
| 
       7 
7 
     | 
    
         
             
                      if get_anchors[node['id']][:label]
         
     | 
| 
       8 
     | 
    
         
            -
                        b << "#{get_anchors[node['id']][:label]}.  
     | 
| 
       9 
     | 
    
         
            -
                      else
         
     | 
| 
       10 
     | 
    
         
            -
                        b << "#{title} "
         
     | 
| 
      
 8 
     | 
    
         
            +
                        b << "#{get_anchors[node['id']][:label]}. " unless @suppressheadingnumbers
         
     | 
| 
       11 
9 
     | 
    
         
             
                      end
         
     | 
| 
      
 10 
     | 
    
         
            +
                      b << "#{title} "
         
     | 
| 
       12 
11 
     | 
    
         
             
                    end
         
     | 
| 
       13 
12 
     | 
    
         
             
                  end
         
     | 
| 
       14 
13 
     | 
    
         
             
                end
         
     | 
| 
         @@ -19,7 +18,7 @@ module IsoDoc::Function 
     | 
|
| 
       19 
18 
     | 
    
         
             
                  else
         
     | 
| 
       20 
19 
     | 
    
         
             
                    div.send "h#{get_anchors[node['id']][:level]}" do |h|
         
     | 
| 
       21 
20 
     | 
    
         
             
                      lbl = get_anchors[node['id']][:label]
         
     | 
| 
       22 
     | 
    
         
            -
                      h << "#{lbl}. " if lbl
         
     | 
| 
      
 21 
     | 
    
         
            +
                      h << "#{lbl}. " if lbl && !@suppressheadingnumbers
         
     | 
| 
       23 
22 
     | 
    
         
             
                      c1&.children&.each { |c2| parse(c2, h) }
         
     | 
| 
       24 
23 
     | 
    
         
             
                    end
         
     | 
| 
       25 
24 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -37,7 +36,7 @@ module IsoDoc::Function 
     | 
|
| 
       37 
36 
     | 
    
         
             
                def clause_name(num, title, div, header_class)
         
     | 
| 
       38 
37 
     | 
    
         
             
                  header_class = {} if header_class.nil?
         
     | 
| 
       39 
38 
     | 
    
         
             
                  div.h1 **attr_code(header_class) do |h1|
         
     | 
| 
       40 
     | 
    
         
            -
                    if num
         
     | 
| 
      
 39 
     | 
    
         
            +
                    if num && !@suppressheadingnumbers
         
     | 
| 
       41 
40 
     | 
    
         
             
                      h1 << "#{num}."
         
     | 
| 
       42 
41 
     | 
    
         
             
                      insert_tab(h1, 1)
         
     | 
| 
       43 
42 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -114,7 +113,6 @@ module IsoDoc::Function 
     | 
|
| 
       114 
113 
     | 
    
         
             
                end
         
     | 
| 
       115 
114 
     | 
    
         | 
| 
       116 
115 
     | 
    
         
             
                def term_defs_boilerplate_cont(src, term)
         
     | 
| 
       117 
     | 
    
         
            -
                  #sources = sentence_join(src.map { |s| @anchors[s["bibitemid"]][:xref] })
         
     | 
| 
       118 
116 
     | 
    
         
             
                  sources = sentence_join(src.map { |s| @anchors.dig(s["bibitemid"], :xref) })
         
     | 
| 
       119 
117 
     | 
    
         
             
                  if src.empty? then @internal_terms_boilerplate
         
     | 
| 
       120 
118 
     | 
    
         
             
                  elsif term.nil? then external_terms_boilerplate(sources)
         
     | 
| 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "fileutils"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "base64"
         
     | 
| 
       2 
3 
     | 
    
         | 
| 
       3 
4 
     | 
    
         
             
            module IsoDoc::HtmlFunction
         
     | 
| 
       4 
5 
     | 
    
         
             
              module Html
         
     | 
| 
         @@ -195,15 +196,23 @@ module IsoDoc::HtmlFunction 
     | 
|
| 
       195 
196 
     | 
    
         
             
                  system "rm -r #{tmpimagedir}; mkdir #{tmpimagedir}"
         
     | 
| 
       196 
197 
     | 
    
         
             
                  docxml.xpath("//*[local-name() = 'img']").each do |i|
         
     | 
| 
       197 
198 
     | 
    
         
             
                    next if /^data:image/.match i["src"]
         
     | 
| 
       198 
     | 
    
         
            -
                     
     | 
| 
       199 
     | 
    
         
            -
                    uuid = UUIDTools::UUID.random_create.to_s
         
     | 
| 
       200 
     | 
    
         
            -
                    new_full_filename = File.join(tmpimagedir, "#{uuid}.#{matched[:suffix]}")
         
     | 
| 
       201 
     | 
    
         
            -
                    move_image1(i, new_full_filename)
         
     | 
| 
      
 199 
     | 
    
         
            +
                    @datauriimage ? datauri(i) : move_image1(i)
         
     | 
| 
       202 
200 
     | 
    
         
             
                  end
         
     | 
| 
       203 
201 
     | 
    
         
             
                  docxml
         
     | 
| 
       204 
202 
     | 
    
         
             
                end
         
     | 
| 
       205 
203 
     | 
    
         | 
| 
       206 
     | 
    
         
            -
                def  
     | 
| 
      
 204 
     | 
    
         
            +
                def datauri(i)
         
     | 
| 
      
 205 
     | 
    
         
            +
                  type = i["src"].split(".")[-1]
         
     | 
| 
      
 206 
     | 
    
         
            +
                  #bin = open(i["src"]).read(encoding: "utf-8")
         
     | 
| 
      
 207 
     | 
    
         
            +
                  bin = File.read(i["src"], encoding: "utf-8")
         
     | 
| 
      
 208 
     | 
    
         
            +
                  data = Base64.strict_encode64(bin)
         
     | 
| 
      
 209 
     | 
    
         
            +
                  i["src"] = "data:image/#{type};base64,#{data}"
         
     | 
| 
      
 210 
     | 
    
         
            +
                end
         
     | 
| 
      
 211 
     | 
    
         
            +
             
     | 
| 
      
 212 
     | 
    
         
            +
                def move_image1(i)
         
     | 
| 
      
 213 
     | 
    
         
            +
                  matched = /\.(?<suffix>\S+)$/.match i["src"]
         
     | 
| 
      
 214 
     | 
    
         
            +
                  uuid = UUIDTools::UUID.random_create.to_s
         
     | 
| 
      
 215 
     | 
    
         
            +
                  new_full_filename = File.join(tmpimagedir, "#{uuid}.#{matched[:suffix]}")
         
     | 
| 
       207 
216 
     | 
    
         
             
                  FileUtils.cp i["src"], new_full_filename
         
     | 
| 
       208 
217 
     | 
    
         
             
                  i["src"] = new_full_filename
         
     | 
| 
       209 
218 
     | 
    
         
             
                  i["width"], i["height"] = Html2Doc.image_resize(i, @maxheight, @maxwidth)
         
     | 
    
        data/lib/isodoc/version.rb
    CHANGED
    
    
| 
         @@ -501,6 +501,36 @@ CkZJTEVOQU1FOiB0ZXN0Cgo= 
     | 
|
| 
       501 
501 
     | 
    
         | 
| 
       502 
502 
     | 
    
         
             
              end
         
     | 
| 
       503 
503 
     | 
    
         | 
| 
      
 504 
     | 
    
         
            +
              it "encodes images in HTML as data URIs" do
         
     | 
| 
      
 505 
     | 
    
         
            +
                system "rm -f test.html"
         
     | 
| 
      
 506 
     | 
    
         
            +
                system "rm -rf test_images"
         
     | 
| 
      
 507 
     | 
    
         
            +
                IsoDoc::HtmlConvert.new({htmlstylesheet: "spec/assets/html.css", datauriimage: true}).convert("test", <<~"INPUT", false)
         
     | 
| 
      
 508 
     | 
    
         
            +
                    <iso-standard xmlns="http://riboseinc.com/isoxml">
         
     | 
| 
      
 509 
     | 
    
         
            +
                    <preface><foreword>
         
     | 
| 
      
 510 
     | 
    
         
            +
                     <figure id="_">
         
     | 
| 
      
 511 
     | 
    
         
            +
                     <name>Split-it-right sample divider</name>
         
     | 
| 
      
 512 
     | 
    
         
            +
                              <image src="spec/assets/rice_image1.png" id="_" imagetype="PNG"/>
         
     | 
| 
      
 513 
     | 
    
         
            +
                   </figure>
         
     | 
| 
      
 514 
     | 
    
         
            +
                   </foreword></preface>
         
     | 
| 
      
 515 
     | 
    
         
            +
                    </iso-standard>
         
     | 
| 
      
 516 
     | 
    
         
            +
                INPUT
         
     | 
| 
      
 517 
     | 
    
         
            +
                html = File.read("test.html").sub(/^.*<main class="main-section">/m, '<main class="main-section">').
         
     | 
| 
      
 518 
     | 
    
         
            +
                  sub(%r{</main>.*$}m, "</main>")
         
     | 
| 
      
 519 
     | 
    
         
            +
                expect(html.gsub(%r{src="data:image/png;base64,[^"]+"}, %{src="data:image/png;base64,_"})).to be_equivalent_to <<~"OUTPUT"
         
     | 
| 
      
 520 
     | 
    
         
            +
                       <main class="main-section"><button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
         
     | 
| 
      
 521 
     | 
    
         
            +
                         <br />
         
     | 
| 
      
 522 
     | 
    
         
            +
                         <div>
         
     | 
| 
      
 523 
     | 
    
         
            +
                           <h1 class="ForewordTitle">Foreword</h1>
         
     | 
| 
      
 524 
     | 
    
         
            +
                           <div id="_" class="figure">
         
     | 
| 
      
 525 
     | 
    
         
            +
                           <img src="data:image/png;base64,_" height="auto" width="auto" />
         
     | 
| 
      
 526 
     | 
    
         
            +
                   <p class="FigureTitle" align="center">Figure 1 — Split-it-right sample divider</p></div>
         
     | 
| 
      
 527 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 528 
     | 
    
         
            +
                         <p class="zzSTDTitle1"></p>
         
     | 
| 
      
 529 
     | 
    
         
            +
                       </main>
         
     | 
| 
      
 530 
     | 
    
         
            +
                OUTPUT
         
     | 
| 
      
 531 
     | 
    
         
            +
             
     | 
| 
      
 532 
     | 
    
         
            +
              end
         
     | 
| 
      
 533 
     | 
    
         
            +
             
     | 
| 
       504 
534 
     | 
    
         
             
              it "processes IsoXML terms for HTML" do
         
     | 
| 
       505 
535 
     | 
    
         
             
                system "rm -f test.doc"
         
     | 
| 
       506 
536 
     | 
    
         
             
                system "rm -f test.html"
         
     | 
    
        data/spec/isodoc/section_spec.rb
    CHANGED
    
    | 
         @@ -315,6 +315,155 @@ OUTPUT 
     | 
|
| 
       315 
315 
     | 
    
         
             
            OUTPUT
         
     | 
| 
       316 
316 
     | 
    
         
             
              end
         
     | 
| 
       317 
317 
     | 
    
         | 
| 
      
 318 
     | 
    
         
            +
                it "processes section names suppressing section numbering" do
         
     | 
| 
      
 319 
     | 
    
         
            +
                expect(IsoDoc::HtmlConvert.new({suppressheadingnumbers: true}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
         
     | 
| 
      
 320 
     | 
    
         
            +
                  <iso-standard xmlns="http://riboseinc.com/isoxml">
         
     | 
| 
      
 321 
     | 
    
         
            +
                  <preface>
         
     | 
| 
      
 322 
     | 
    
         
            +
                  <foreword obligation="informative">
         
     | 
| 
      
 323 
     | 
    
         
            +
                     <title>Foreword</title>
         
     | 
| 
      
 324 
     | 
    
         
            +
                     <p id="A">This is a preamble</p>
         
     | 
| 
      
 325 
     | 
    
         
            +
                   </foreword>
         
     | 
| 
      
 326 
     | 
    
         
            +
                    <introduction id="B" obligation="informative"><title>Introduction</title><clause id="C" inline-header="false" obligation="informative">
         
     | 
| 
      
 327 
     | 
    
         
            +
                     <title>Introduction Subsection</title>
         
     | 
| 
      
 328 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 329 
     | 
    
         
            +
                   </introduction></preface><sections>
         
     | 
| 
      
 330 
     | 
    
         
            +
                   <clause id="D" obligation="normative">
         
     | 
| 
      
 331 
     | 
    
         
            +
                     <title>Scope</title>
         
     | 
| 
      
 332 
     | 
    
         
            +
                     <p id="E">Text</p>
         
     | 
| 
      
 333 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 334 
     | 
    
         
            +
             
     | 
| 
      
 335 
     | 
    
         
            +
                   <clause id="H" obligation="normative"><title>Terms, Definitions, Symbols and Abbreviated Terms</title><terms id="I" obligation="normative">
         
     | 
| 
      
 336 
     | 
    
         
            +
                     <title>Normal Terms</title>
         
     | 
| 
      
 337 
     | 
    
         
            +
                     <term id="J">
         
     | 
| 
      
 338 
     | 
    
         
            +
                     <preferred>Term2</preferred>
         
     | 
| 
      
 339 
     | 
    
         
            +
                   </term>
         
     | 
| 
      
 340 
     | 
    
         
            +
                   </terms>
         
     | 
| 
      
 341 
     | 
    
         
            +
                   <definitions id="K">
         
     | 
| 
      
 342 
     | 
    
         
            +
                     <dl>
         
     | 
| 
      
 343 
     | 
    
         
            +
                     <dt>Symbol</dt>
         
     | 
| 
      
 344 
     | 
    
         
            +
                     <dd>Definition</dd>
         
     | 
| 
      
 345 
     | 
    
         
            +
                     </dl>
         
     | 
| 
      
 346 
     | 
    
         
            +
                   </definitions>
         
     | 
| 
      
 347 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 348 
     | 
    
         
            +
                   <definitions id="L">
         
     | 
| 
      
 349 
     | 
    
         
            +
                     <dl>
         
     | 
| 
      
 350 
     | 
    
         
            +
                     <dt>Symbol</dt>
         
     | 
| 
      
 351 
     | 
    
         
            +
                     <dd>Definition</dd>
         
     | 
| 
      
 352 
     | 
    
         
            +
                     </dl>
         
     | 
| 
      
 353 
     | 
    
         
            +
                   </definitions>
         
     | 
| 
      
 354 
     | 
    
         
            +
                   <clause id="M" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
         
     | 
| 
      
 355 
     | 
    
         
            +
                     <title>Introduction</title>
         
     | 
| 
      
 356 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 357 
     | 
    
         
            +
                   <clause id="O" inline-header="false" obligation="normative">
         
     | 
| 
      
 358 
     | 
    
         
            +
                     <title>Clause 4.2</title>
         
     | 
| 
      
 359 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 360 
     | 
    
         
            +
                   <clause id="O1" inline-header="false" obligation="normative">
         
     | 
| 
      
 361 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 362 
     | 
    
         
            +
                    </clause>
         
     | 
| 
      
 363 
     | 
    
         
            +
             
     | 
| 
      
 364 
     | 
    
         
            +
                   </sections><annex id="P" inline-header="false" obligation="normative">
         
     | 
| 
      
 365 
     | 
    
         
            +
                     <title>Annex</title>
         
     | 
| 
      
 366 
     | 
    
         
            +
                     <clause id="Q" inline-header="false" obligation="normative">
         
     | 
| 
      
 367 
     | 
    
         
            +
                     <title>Annex A.1</title>
         
     | 
| 
      
 368 
     | 
    
         
            +
                     <clause id="Q1" inline-header="false" obligation="normative">
         
     | 
| 
      
 369 
     | 
    
         
            +
                     <title>Annex A.1a</title>
         
     | 
| 
      
 370 
     | 
    
         
            +
                     </clause>
         
     | 
| 
      
 371 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 372 
     | 
    
         
            +
                   </annex><bibliography><references id="R" obligation="informative">
         
     | 
| 
      
 373 
     | 
    
         
            +
                     <title>Normative References</title>
         
     | 
| 
      
 374 
     | 
    
         
            +
                   </references><clause id="S" obligation="informative">
         
     | 
| 
      
 375 
     | 
    
         
            +
                     <title>Bibliography</title>
         
     | 
| 
      
 376 
     | 
    
         
            +
                     <references id="T" obligation="informative">
         
     | 
| 
      
 377 
     | 
    
         
            +
                     <title>Bibliography Subsection</title>
         
     | 
| 
      
 378 
     | 
    
         
            +
                   </references>
         
     | 
| 
      
 379 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 380 
     | 
    
         
            +
                   </bibliography>
         
     | 
| 
      
 381 
     | 
    
         
            +
                   </iso-standard>
         
     | 
| 
      
 382 
     | 
    
         
            +
                INPUT
         
     | 
| 
      
 383 
     | 
    
         
            +
                #{HTML_HDR}
         
     | 
| 
      
 384 
     | 
    
         
            +
                          <br/>
         
     | 
| 
      
 385 
     | 
    
         
            +
                         <div>
         
     | 
| 
      
 386 
     | 
    
         
            +
                           <h1 class="ForewordTitle">Foreword</h1>
         
     | 
| 
      
 387 
     | 
    
         
            +
                           <p id="A">This is a preamble</p>
         
     | 
| 
      
 388 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 389 
     | 
    
         
            +
                         <br/>
         
     | 
| 
      
 390 
     | 
    
         
            +
                         <div class="Section3" id="B">
         
     | 
| 
      
 391 
     | 
    
         
            +
                           <h1 class="IntroTitle">Introduction</h1>
         
     | 
| 
      
 392 
     | 
    
         
            +
                           <div id="C"><h2>Introduction Subsection</h2>
         
     | 
| 
      
 393 
     | 
    
         
            +
             
     | 
| 
      
 394 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 395 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 396 
     | 
    
         
            +
                         <p class="zzSTDTitle1"/>
         
     | 
| 
      
 397 
     | 
    
         
            +
                         <div id="D">
         
     | 
| 
      
 398 
     | 
    
         
            +
                           <h1>Scope</h1>
         
     | 
| 
      
 399 
     | 
    
         
            +
                           <p id="E">Text</p>
         
     | 
| 
      
 400 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 401 
     | 
    
         
            +
                         <div>
         
     | 
| 
      
 402 
     | 
    
         
            +
                           <h1>Normative references</h1>
         
     | 
| 
      
 403 
     | 
    
         
            +
                           <p>There are no normative references in this document.</p>
         
     | 
| 
      
 404 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 405 
     | 
    
         
            +
                         <div id="H"><h1>Terms, definitions, symbols and abbreviated terms</h1><p>For the purposes of this document,
         
     | 
| 
      
 406 
     | 
    
         
            +
                       the following terms and definitions apply.</p>
         
     | 
| 
      
 407 
     | 
    
         
            +
                   <p>ISO and IEC maintain terminological databases for use in
         
     | 
| 
      
 408 
     | 
    
         
            +
                   standardization at the following addresses:</p>
         
     | 
| 
      
 409 
     | 
    
         
            +
             
     | 
| 
      
 410 
     | 
    
         
            +
                   <ul>
         
     | 
| 
      
 411 
     | 
    
         
            +
                   <li> <p>ISO Online browsing platform: available at
         
     | 
| 
      
 412 
     | 
    
         
            +
                     <a href="http://www.iso.org/obp">http://www.iso.org/obp</a></p> </li>
         
     | 
| 
      
 413 
     | 
    
         
            +
                   <li> <p>IEC Electropedia: available at
         
     | 
| 
      
 414 
     | 
    
         
            +
                     <a href="http://www.electropedia.org">http://www.electropedia.org</a>
         
     | 
| 
      
 415 
     | 
    
         
            +
                   </p> </li> </ul>
         
     | 
| 
      
 416 
     | 
    
         
            +
                   <div id="I"><h2>Normal Terms</h2>
         
     | 
| 
      
 417 
     | 
    
         
            +
             
     | 
| 
      
 418 
     | 
    
         
            +
                      <p class="TermNum" id="J">3.1.1</p>
         
     | 
| 
      
 419 
     | 
    
         
            +
                      <p class="Terms" style="text-align:left;">Term2</p>
         
     | 
| 
      
 420 
     | 
    
         
            +
             
     | 
| 
      
 421 
     | 
    
         
            +
                    </div><div id="K"><h2>Symbols and abbreviated terms</h2>
         
     | 
| 
      
 422 
     | 
    
         
            +
                      <dl><dt><p>Symbol</p></dt><dd>Definition</dd></dl>
         
     | 
| 
      
 423 
     | 
    
         
            +
                    </div></div>
         
     | 
| 
      
 424 
     | 
    
         
            +
                         <div id="L" class="Symbols">
         
     | 
| 
      
 425 
     | 
    
         
            +
                           <h1>Symbols and abbreviated terms</h1>
         
     | 
| 
      
 426 
     | 
    
         
            +
                           <dl>
         
     | 
| 
      
 427 
     | 
    
         
            +
                             <dt>
         
     | 
| 
      
 428 
     | 
    
         
            +
                               <p>Symbol</p>
         
     | 
| 
      
 429 
     | 
    
         
            +
                             </dt>
         
     | 
| 
      
 430 
     | 
    
         
            +
                             <dd>Definition</dd>
         
     | 
| 
      
 431 
     | 
    
         
            +
                           </dl>
         
     | 
| 
      
 432 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 433 
     | 
    
         
            +
                         <div id="M">
         
     | 
| 
      
 434 
     | 
    
         
            +
                           <h1>Clause 4</h1>
         
     | 
| 
      
 435 
     | 
    
         
            +
                           <div id="N"><h2>Introduction</h2>
         
     | 
| 
      
 436 
     | 
    
         
            +
             
     | 
| 
      
 437 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 438 
     | 
    
         
            +
                           <div id="O"><h2>Clause 4.2</h2>
         
     | 
| 
      
 439 
     | 
    
         
            +
             
     | 
| 
      
 440 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 441 
     | 
    
         
            +
                           <div id="O1"><h2/>
         
     | 
| 
      
 442 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 443 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 444 
     | 
    
         
            +
                         <br/>
         
     | 
| 
      
 445 
     | 
    
         
            +
                         <div id="P" class="Section3">
         
     | 
| 
      
 446 
     | 
    
         
            +
                           <h1 class="Annex"><b>Annex A</b><br/>(normative)<br/><br/><b>Annex</b></h1>
         
     | 
| 
      
 447 
     | 
    
         
            +
                           <div id="Q"><h2>Annex A.1</h2>
         
     | 
| 
      
 448 
     | 
    
         
            +
             
     | 
| 
      
 449 
     | 
    
         
            +
                      <div id="Q1"><h3>Annex A.1a</h3>
         
     | 
| 
      
 450 
     | 
    
         
            +
             
     | 
| 
      
 451 
     | 
    
         
            +
                      </div>
         
     | 
| 
      
 452 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 453 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 454 
     | 
    
         
            +
                         <br/>
         
     | 
| 
      
 455 
     | 
    
         
            +
                         <div>
         
     | 
| 
      
 456 
     | 
    
         
            +
                           <h1 class="Section3">Bibliography</h1>
         
     | 
| 
      
 457 
     | 
    
         
            +
                           <div>
         
     | 
| 
      
 458 
     | 
    
         
            +
                             <h2 class="Section3">Bibliography Subsection</h2>
         
     | 
| 
      
 459 
     | 
    
         
            +
                           </div>
         
     | 
| 
      
 460 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 461 
     | 
    
         
            +
                       </div>
         
     | 
| 
      
 462 
     | 
    
         
            +
                     </body>
         
     | 
| 
      
 463 
     | 
    
         
            +
                   </html>
         
     | 
| 
      
 464 
     | 
    
         
            +
            OUTPUT
         
     | 
| 
      
 465 
     | 
    
         
            +
                end
         
     | 
| 
      
 466 
     | 
    
         
            +
             
     | 
| 
       318 
467 
     | 
    
         
             
              it "processes simple terms & definitions" do
         
     | 
| 
       319 
468 
     | 
    
         
             
                    expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
         
     | 
| 
       320 
469 
     | 
    
         
             
                           <iso-standard xmlns="http://riboseinc.com/isoxml">
         
     | 
| 
         @@ -364,7 +513,6 @@ OUTPUT 
     | 
|
| 
       364 
513 
     | 
    
         
             
            INPUT
         
     | 
| 
       365 
514 
     | 
    
         
             
            end
         
     | 
| 
       366 
515 
     | 
    
         | 
| 
       367 
     | 
    
         
            -
             
     | 
| 
       368 
516 
     | 
    
         
             
              it "processes terms & definitions with external source" do
         
     | 
| 
       369 
517 
     | 
    
         
             
                    expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
         
     | 
| 
       370 
518 
     | 
    
         
             
                           <iso-standard xmlns="http://riboseinc.com/isoxml">
         
     | 
| 
         @@ -528,6 +676,37 @@ end 
     | 
|
| 
       528 
676 
     | 
    
         
             
            OUTPUT
         
     | 
| 
       529 
677 
     | 
    
         
             
                end
         
     | 
| 
       530 
678 
     | 
    
         | 
| 
      
 679 
     | 
    
         
            +
                    it "processes inline section headers with suppressed heading numbering" do
         
     | 
| 
      
 680 
     | 
    
         
            +
                expect(IsoDoc::HtmlConvert.new({suppressheadingnumbers: true}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
         
     | 
| 
      
 681 
     | 
    
         
            +
                  <iso-standard xmlns="http://riboseinc.com/isoxml">
         
     | 
| 
      
 682 
     | 
    
         
            +
                  <sections>
         
     | 
| 
      
 683 
     | 
    
         
            +
                   <clause id="M" inline-header="false" obligation="normative"><title>Clause 4</title><clause id="N" inline-header="false" obligation="normative">
         
     | 
| 
      
 684 
     | 
    
         
            +
                     <title>Introduction</title>
         
     | 
| 
      
 685 
     | 
    
         
            +
                   </clause>
         
     | 
| 
      
 686 
     | 
    
         
            +
                   <clause id="O" inline-header="true" obligation="normative">
         
     | 
| 
      
 687 
     | 
    
         
            +
                     <title>Clause 4.2</title>
         
     | 
| 
      
 688 
     | 
    
         
            +
                   </clause></clause>
         
     | 
| 
      
 689 
     | 
    
         
            +
             
     | 
| 
      
 690 
     | 
    
         
            +
                   </sections>
         
     | 
| 
      
 691 
     | 
    
         
            +
                  </iso-standard>
         
     | 
| 
      
 692 
     | 
    
         
            +
                INPUT
         
     | 
| 
      
 693 
     | 
    
         
            +
                #{HTML_HDR}
         
     | 
| 
      
 694 
     | 
    
         
            +
                           <p class="zzSTDTitle1"/>
         
     | 
| 
      
 695 
     | 
    
         
            +
                           <div id="M">
         
     | 
| 
      
 696 
     | 
    
         
            +
                             <h1>Clause 4</h1>
         
     | 
| 
      
 697 
     | 
    
         
            +
                             <div id="N">
         
     | 
| 
      
 698 
     | 
    
         
            +
                      <h2>Introduction</h2>
         
     | 
| 
      
 699 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 700 
     | 
    
         
            +
                             <div id="O">
         
     | 
| 
      
 701 
     | 
    
         
            +
                      <span class="zzMoveToFollowing"><b>Clause 4.2 </b></span>
         
     | 
| 
      
 702 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 703 
     | 
    
         
            +
                           </div>
         
     | 
| 
      
 704 
     | 
    
         
            +
                         </div>
         
     | 
| 
      
 705 
     | 
    
         
            +
                       </body>
         
     | 
| 
      
 706 
     | 
    
         
            +
                   </html>
         
     | 
| 
      
 707 
     | 
    
         
            +
            OUTPUT
         
     | 
| 
      
 708 
     | 
    
         
            +
                end
         
     | 
| 
      
 709 
     | 
    
         
            +
             
     | 
| 
       531 
710 
     | 
    
         
             
                    it "processes sections without titles" do
         
     | 
| 
       532 
711 
     | 
    
         
             
                expect(IsoDoc::HtmlConvert.new({}).convert("test", <<~"INPUT", true)).to be_equivalent_to <<~"OUTPUT"
         
     | 
| 
       533 
712 
     | 
    
         
             
                  <iso-standard xmlns="http://riboseinc.com/isoxml">
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: isodoc
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.9. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.9.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ribose Inc.
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2018-09- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-09-22 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: asciimath
         
     |