metanorma-standoc 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7a90c6f9dab7e41ec8a716b6dcb956b3c5066e6af6c24c4c99f6f9e7242cd490
4
- data.tar.gz: 3d91ef4648f885f90e301bdc30989e9f89f4e3a07a856fd91cb90b0adbf81c1c
3
+ metadata.gz: 1f0296f73b69a974d8471004f27194fd72f0005a4b9b76ea99c5fc0ad8828734
4
+ data.tar.gz: dfdba4afa101c91c4d83697876770fd2ea26da7a197702a1a3087157e257bf66
5
5
  SHA512:
6
- metadata.gz: d1bfa8ed19b0ec0aaa93739d240e32f1ec312a2cf13a1ba9f4c715b056541519a75765ae794abe1bc54d0cdc89275c8b5652ba69de4c83090c709b24206f59a6
7
- data.tar.gz: 999e69d048bf5b83a265153d5e08d7bfa9f23a44d08640d309cdca172a5921544d0e1fd5f1cb746a115230134ffe789725eb8ece23026309ad02f797efc1c3fc
6
+ metadata.gz: 5891c907305ea29a718370385a72ae3cc8156f42562fabda70dce276d740cf20160da3d84dda0be783315b5b287bab3732bb03fb33dfdfe59587f03100347d27
7
+ data.tar.gz: 11a9e73079c234d6db80af6d500ce24e8847b4c5fc40cf2e4aadd08ee520462248ccd1e1ff5c77e4dd84fb241ada3821cecc70f4d610179655d55bc49e041caf
@@ -1,14 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- metanorma-standoc (1.2.1)
4
+ metanorma-standoc (1.2.2)
5
5
  asciidoctor (~> 1.5.7)
6
6
  concurrent-ruby
7
7
  html2doc (~> 0.8.11)
8
8
  iev (~> 0.2.1)
9
9
  isodoc (~> 0.10.0)
10
10
  relaton (~> 0.4.0)
11
- relaton-cli (~> 0.2.0)
12
11
  ruby-jing
13
12
  sterile (~> 1.0.14)
14
13
  unicode2latex (~> 0.0.1)
@@ -64,8 +63,8 @@ GEM
64
63
  httpclient (2.8.3)
65
64
  iev (0.2.2)
66
65
  nokogiri
67
- image_size (2.0.1)
68
- isodoc (0.10.1)
66
+ image_size (2.0.2)
67
+ isodoc (0.10.2)
69
68
  asciimath
70
69
  html2doc (~> 0.8.11)
71
70
  htmlentities (~> 4.3.4)
@@ -85,7 +84,7 @@ GEM
85
84
  rb-inotify (~> 0.9, >= 0.9.7)
86
85
  ruby_dep (~> 1.2)
87
86
  lumberjack (1.0.13)
88
- metanorma (0.3.11)
87
+ metanorma (0.3.14)
89
88
  asciidoctor
90
89
  htmlentities
91
90
  method_source (0.9.2)
@@ -107,13 +106,13 @@ GEM
107
106
  pry (0.12.2)
108
107
  coderay (~> 1.1.0)
109
108
  method_source (~> 0.9.0)
110
- public_suffix (3.1.0)
109
+ public_suffix (3.1.1)
111
110
  rainbow (3.0.0)
112
111
  rake (12.3.2)
113
112
  rb-fsevent (0.10.3)
114
113
  rb-inotify (0.10.0)
115
114
  ffi (~> 1.0)
116
- relaton (0.4.1)
115
+ relaton (0.4.3)
117
116
  algoliasearch
118
117
  relaton-gb (~> 0.5.0)
119
118
  relaton-iec (~> 0.3.0)
@@ -122,13 +121,9 @@ GEM
122
121
  relaton-iso-bib (~> 0.2.0)
123
122
  relaton-itu (~> 0.2.0)
124
123
  relaton-nist (~> 0.2.0)
125
- relaton-bib (0.2.3)
124
+ relaton-bib (0.2.4)
126
125
  addressable
127
126
  nokogiri (~> 1.8.4)
128
- relaton-cli (0.2.1)
129
- liquid
130
- relaton (~> 0.4)
131
- thor
132
127
  relaton-gb (0.5.1)
133
128
  cnccs (~> 0.1.1)
134
129
  gb-agencies (~> 0.0.1)
@@ -136,9 +131,9 @@ GEM
136
131
  relaton-iec (0.3.1)
137
132
  addressable
138
133
  relaton-iso-bib (~> 0.2.0)
139
- relaton-ietf (0.5.3)
134
+ relaton-ietf (0.5.4)
140
135
  relaton-iso-bib (~> 0.2.0)
141
- relaton-iso (0.5.1)
136
+ relaton-iso (0.5.3)
142
137
  algoliasearch
143
138
  relaton-iec (~> 0.3.0)
144
139
  relaton-iso-bib (~> 0.2.0)
@@ -147,7 +142,7 @@ GEM
147
142
  nokogiri (~> 1.8.4)
148
143
  relaton-bib (~> 0.2.0)
149
144
  ruby_deep_clone (~> 0.8.0)
150
- relaton-itu (0.2.1)
145
+ relaton-itu (0.2.2)
151
146
  relaton-iso-bib (~> 0.2.0)
152
147
  relaton-nist (0.2.2)
153
148
  relaton-bib (~> 0.2.0)
@@ -157,7 +152,7 @@ GEM
157
152
  rspec-core (~> 3.8.0)
158
153
  rspec-expectations (~> 3.8.0)
159
154
  rspec-mocks (~> 3.8.0)
160
- rspec-core (3.8.1)
155
+ rspec-core (3.8.2)
161
156
  rspec-support (~> 3.8.0)
162
157
  rspec-expectations (3.8.4)
163
158
  diff-lcs (>= 1.2.0, < 2.0)
@@ -184,7 +179,7 @@ GEM
184
179
  ffi (~> 1.9)
185
180
  rake
186
181
  shellany (0.0.1)
187
- simplecov (0.16.1)
182
+ simplecov (0.17.0)
188
183
  docile (~> 1.1)
189
184
  json (>= 1.8, < 3)
190
185
  simplecov-html (~> 0.10.0)
@@ -1,5 +1,5 @@
1
1
  require "set"
2
- require "relaton-cli"
2
+ require "relaton_bib"
3
3
 
4
4
  module Asciidoctor
5
5
  module Standoc
@@ -164,39 +164,11 @@ module Asciidoctor
164
164
  def ref_dl_cleanup(xmldoc)
165
165
  xmldoc.xpath("//clause[@bibitem = 'true']").each do |c|
166
166
  bib = dl_bib_extract(c) or next
167
- b = Nokogiri::XML::Node.new('bibitem', xmldoc)
168
- b["id"] = bib["ref"]&.strip
169
- b["type"] = bib["doctype"]&.strip
170
- b << %Q[<title format="text/plain">#{bib['title']}</title>]
171
- #b << extract_from_p("docidentifier", bib, "docidentifier")
172
-
173
- b << %Q[<docidentifier>#{bib['docidentifier']}</docidentifier>]
174
-
175
- Array(bib["publisher"]).each do |name|
176
- b << %Q[<contributor><role type="publisher"/><organization>
177
- <name>#{name}</name>
178
- </organization></contributor>]
179
- #{extract_from_p("publisher", bib, "name")}
180
- end
181
-
182
- Array(bib["author"]).each do |name|
183
- b << %Q[<contributor><role type="author"/><person>
184
- <name><completename>#{name}</completename></name>
185
- </person></contributor>]
186
- end
187
- c.replace(b)
188
- end
189
- end
190
-
191
- def ref_dl_cleanup(xmldoc)
192
- xmldoc.xpath("//clause[@bibitem = 'true']").each do |c|
193
- bib = dl_bib_extract(c) or next
194
- bibitemxml = Relaton::Bibdata.new(bib).to_xml or next
195
- # TODO move this into relaton-cli
167
+ #bibitemxml = Relaton::Bibdata.new(bib).to_xml or next
168
+ bibitemxml = RelatonBib::BibliographicItem.new(
169
+ RelatonBib::hash_to_bib(bib)).to_xml or next
196
170
  bibitem = Nokogiri::XML(bibitemxml)
197
- bibitem.root.name = "bibitem"
198
- bibitem.root["id"] = bib["ref"]&.strip
199
- bibitem.root["type"] = bib["doctype"]&.strip
171
+ bibitem["id"] = c["id"] if c["id"]
200
172
  c.replace(bibitem.root)
201
173
  end
202
174
  end
@@ -207,18 +179,29 @@ module Asciidoctor
207
179
  end
208
180
 
209
181
  # if the content is a single paragraph, replace it with its children
182
+ # single links replaced with uri
210
183
  def p_unwrap(p)
211
184
  elems = p.elements
212
185
  if elems.size == 1 && elems[0].name == "p"
213
- elems[0].children.to_xml
186
+ link_unwrap(elems[0]).children.to_xml.strip
214
187
  else
215
- p.to_xml
188
+ p.to_xml.strip
216
189
  end
217
190
  end
218
191
 
192
+ def link_unwrap(p)
193
+ elems = p.elements
194
+ if elems.size == 1 && elems[0].name == "link"
195
+ p.at("./link").replace(elems[0]["target"].strip)
196
+ end
197
+ p
198
+ end
199
+
219
200
  def dd_bib_extract(dtd)
201
+ return nil if dtd.children.empty?
202
+ dtd.at("./dl") and return dl_bib_extract(dtd)
220
203
  elems = dtd.remove.elements
221
- return p_unwrap(dtd) unless elems.size == 1 && elems[0].name == "ol"
204
+ return p_unwrap(dtd) unless elems.size == 1 && %w(ol ul).include?(elems[0].name)
222
205
  ret = []
223
206
  elems[0].xpath("./li").each do |li|
224
207
  ret << p_unwrap(li)
@@ -226,16 +209,30 @@ module Asciidoctor
226
209
  ret
227
210
  end
228
211
 
212
+ def add_to_hash(bib, key, val)
213
+ bib[key] = bib[key].is_a?(Array) ? (bib[key] << val) :
214
+ bib[key].nil? ? val : [bib[key], val]
215
+ end
216
+
229
217
  # definition list, with at most one level of unordered lists
230
- def dl_bib_extract(c)
218
+ def dl_bib_extract(c, nested = false)
231
219
  dl = c.at("./dl") or return
232
220
  bib = {}
233
221
  key = ""
234
222
  dl.xpath("./dt | ./dd").each do |dtd|
235
- key = dtd.text if dtd.name == "dt"
236
- bib[key] = dd_bib_extract(dtd) if dtd.name == "dd"
223
+ dtd.name == "dt" and key = dtd.text.sub(/:+$/, "") or
224
+ add_to_hash(bib, key, dd_bib_extract(dtd))
225
+ end
226
+ c.xpath("./clause").each do |c1|
227
+ key = c1&.at("./title")&.text&.downcase&.strip
228
+ next unless %w(contributors relations series).include? key
229
+ add_to_hash(bib, key, dl_bib_extract(c1, true))
230
+ end
231
+ if !nested and c.at("./title")
232
+ title = c.at("./title").remove.children.to_xml
233
+ bib["titles"] = bib["titles"] ? Array(bib["titles"]) : []
234
+ bib["titles"] << title if !title.empty?
237
235
  end
238
- bib["title"] = c.at("./title").remove.children
239
236
  bib
240
237
  end
241
238
  end
@@ -1,5 +1,6 @@
1
1
  require "asciidoctor/extensions"
2
2
  require "fileutils"
3
+ require "uuidtools"
3
4
 
4
5
  module Asciidoctor
5
6
  module Standoc
@@ -81,17 +82,29 @@ module Asciidoctor
81
82
  nil
82
83
  end
83
84
 
85
+ # if no :imagesdir: leave image file in plantuml
84
86
  def self.generate_file parent, reader
85
87
  localdir = Utils::localdir(parent.document)
88
+ fn = save_plantuml parent, reader, localdir
89
+ system "plantuml #{localdir}plantuml/#{fn}.pml"
90
+ outfile = parent.image_uri("#{fn}.png")
91
+ if outfile == "#{fn}.png"
92
+ "plantuml/#{fn}.png"
93
+ else
94
+ FileUtils.mv "#{localdir}plantuml/#{fn}.png", "#{localdir}#{outfile}"
95
+ "#{fn}.png"
96
+ end
97
+ end
98
+
99
+ def self.save_plantuml parent, reader, localdir
86
100
  src = reader.source
87
- !reader.lines.first.sub(/\s+$/, "").match /^@startuml($| )/ or
101
+ reader.lines.first.sub(/\s+$/, "").match /^@startuml($| )/ or
88
102
  src = "@startuml\n#{src}\n@enduml\n"
89
- /^@startuml (?<filename>[^\n]+)\n/ =~ src
90
- filename ||= parent.document.reader.lineno
103
+ /^@startuml (?<fn>[^\n]+)\n/ =~ src
104
+ fn ||= UUIDTools::UUID.random_create
91
105
  FileUtils.mkdir_p "#{localdir}/plantuml"
92
- File.open("#{localdir}plantuml/#{filename}.pml", "w") { |f| f.write src }
93
- system "plantuml #{localdir}plantuml/#{filename}.pml"
94
- filename
106
+ File.open("#{localdir}plantuml/#{fn}.pml", "w") { |f| f.write src }
107
+ fn
95
108
  end
96
109
 
97
110
  def self.generate_attrs attrs
@@ -113,7 +126,7 @@ module Asciidoctor
113
126
  if PlantUMLBlockMacroBackend.plantuml_installed?
114
127
  filename = PlantUMLBlockMacroBackend.generate_file parent, reader
115
128
  through_attrs = PlantUMLBlockMacroBackend.generate_attrs attrs
116
- through_attrs["target"] = "plantuml/#{filename}.png"
129
+ through_attrs["target"] = filename
117
130
  create_image_block parent, through_attrs
118
131
  else
119
132
  warn "PlantUML not installed"
@@ -94,7 +94,8 @@ module Asciidoctor
94
94
  docid(t, id_and_year(m[:code], m[:year]) + " (all parts)")
95
95
  conditional_date(t, m, noyr)
96
96
  iso_publisher(t, m[:code])
97
- t.note(**plaintxt) { |p| p << "ISO DATE: #{m[:fn]}" } if m.names.include?("fn") && m[:fn]
97
+ m.names.include?("fn") && m[:fn] and
98
+ t.note(**plaintxt) { |p| p << "ISO DATE: #{m[:fn]}" }
98
99
  #t.allparts "true"
99
100
  t.extent **{ type: 'part' } do |e|
100
101
  e.referenceFrom "all"
@@ -109,7 +110,11 @@ module Asciidoctor
109
110
  xml.parent.add_child(Utils::smart_render_xml(hit))
110
111
  xml
111
112
  rescue Algolia::AlgoliaProtocolError
112
- nil # Render reference without an Internet connection.
113
+ warn "Could not retrieve #{code}: no access to online site"
114
+ nil
115
+ rescue RelatonBib::RequestError
116
+ warn "Could not retrieve #{code}: no access to online site"
117
+ nil
113
118
  end
114
119
 
115
120
  def refitem_render(xml, m)
@@ -18,8 +18,8 @@ module Asciidoctor
18
18
  end
19
19
 
20
20
  def localdir(node)
21
- %r{/}.match(node.attr("docfile")) ?
22
- node.attr("docfile").sub(%r{/[^/]+$}, "/") : "./"
21
+ docfile = node.attr("docfile")
22
+ docfile.nil? ? './' : Pathname.new(docfile).parent.to_s + '/'
23
23
  end
24
24
 
25
25
  def current_location(n)
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Standoc
3
- VERSION = "1.2.1".freeze
3
+ VERSION = "1.2.2".freeze
4
4
  end
5
5
  end
@@ -35,7 +35,6 @@ Gem::Specification.new do |spec|
35
35
  spec.add_dependency "concurrent-ruby"
36
36
  spec.add_dependency "html2doc", "~> 0.8.11"
37
37
  spec.add_dependency "unicode2latex", "~> 0.0.1"
38
- spec.add_dependency "relaton-cli", "~> 0.2.0"
39
38
 
40
39
  spec.add_development_dependency "bundler", "~> 2.0.1"
41
40
  spec.add_development_dependency "byebug"
@@ -46,7 +46,7 @@ RSpec.describe Asciidoctor::Standoc do
46
46
  end
47
47
 
48
48
  it "processes the PlantUML macro" do
49
- expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
49
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)).gsub(%r{plantuml/[^.]{36}\.}, "plantuml/_.")).to be_equivalent_to <<~"OUTPUT"
50
50
  #{ASCIIDOC_BLANK_HDR}
51
51
 
52
52
  [plantuml]
@@ -82,10 +82,10 @@ RSpec.describe Asciidoctor::Standoc do
82
82
  INPUT
83
83
  #{BLANK_HDR}
84
84
  <sections><figure id="_">
85
- <image src="plantuml/20.png" id="_" imagetype="PNG" height="auto" width="auto"/>
85
+ <image src="plantuml/_.png" id="_" imagetype="PNG" height="auto" width="auto"/>
86
86
  </figure>
87
87
  <figure id="_">
88
- <image src="plantuml/29.png" id="_" imagetype="PNG" height="auto" width="auto"/>
88
+ <image src="plantuml/_.png" id="_" imagetype="PNG" height="auto" width="auto"/>
89
89
  </figure>
90
90
  <figure id="_">
91
91
  <image src="plantuml/filename.png" id="_" imagetype="PNG" height="auto" width="auto"/>
@@ -96,6 +96,37 @@ RSpec.describe Asciidoctor::Standoc do
96
96
  OUTPUT
97
97
  end
98
98
 
99
+ it "processes the PlantUML macro with imagesdir" do
100
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)).gsub(%r{spec/assets/[^.]+\.}, "spec/assets/_.")).to be_equivalent_to <<~"OUTPUT"
101
+ = Document title
102
+ Author
103
+ :docfile: test.adoc
104
+ :nodoc:
105
+ :novalid:
106
+ :no-isobib:
107
+ :imagesdir: spec/assets
108
+
109
+ [plantuml]
110
+ ....
111
+ @startuml
112
+ Alice -> Bob: Authentication Request
113
+ Bob --> Alice: Authentication Response
114
+
115
+ Alice -> Bob: Another authentication Request
116
+ Alice <-- Bob: another authentication Response
117
+ @enduml
118
+ ....
119
+ INPUT
120
+ #{BLANK_HDR}
121
+ <sections>
122
+ <figure id="_">
123
+ <image src="spec/assets/_.png" id="_" imagetype="PNG" height="auto" width="auto"/>
124
+ </figure>
125
+ </sections>
126
+ </standard-document>
127
+ OUTPUT
128
+ end
129
+
99
130
  it "processes the PlantUML macro with PlantUML disabled" do
100
131
  mock_plantuml_disabled
101
132
  expect { Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true) }.to output(%r{PlantUML not installed}).to_stderr
@@ -10,14 +10,30 @@ RSpec.describe Asciidoctor::Standoc do
10
10
 
11
11
  [%bibitem]
12
12
  === Standard
13
- ref:: iso123
14
- docidentifier:: ISO 123
15
- doctype:: standard
16
- contributor_publisher_role::
17
- contributor_publisher_organization:: ISO
18
- contributor_author_person::
19
- ... Fred
20
- ... Jack
13
+ id:: iso123
14
+ docid::
15
+ type::: ISO
16
+ id::: ISO 123
17
+ type:: standard
18
+ contributors::
19
+ roles::: publisher
20
+ organization:::
21
+ name:::: ISO
22
+ contributors::
23
+ roles::: author
24
+ person:::
25
+ name::::
26
+ +
27
+ --
28
+ completename::
29
+ language::: en
30
+ content::: Fred
31
+ --
32
+ contributors::
33
+ roles::: author
34
+ person:::
35
+ name::::
36
+ completename::::: Jack
21
37
 
22
38
  INPUT
23
39
  #{BLANK_HDR}
@@ -26,8 +42,8 @@ RSpec.describe Asciidoctor::Standoc do
26
42
  <title>Normative References</title>
27
43
  <bibitem id="iso123" type="standard">
28
44
  <fetched>#{Date.today}</fetched>
29
- <title>Standard</title>
30
- <docidentifier>ISO 123</docidentifier>
45
+ <title type="main" format="text/plain" language="en" script="Latn">Standard</title>
46
+ <docidentifier type="ISO">ISO 123</docidentifier>
31
47
  <contributor>
32
48
  <role type="publisher"/>
33
49
  <organization>
@@ -37,7 +53,7 @@ RSpec.describe Asciidoctor::Standoc do
37
53
  <contributor>
38
54
  <role type="author"/>
39
55
  <person>
40
- <name><completename>Fred</completename></name>
56
+ <name><completename language="en">Fred</completename></name>
41
57
  </person>
42
58
  </contributor>
43
59
  <contributor>
@@ -53,4 +69,336 @@ RSpec.describe Asciidoctor::Standoc do
53
69
  OUTPUT
54
70
  end
55
71
 
72
+ it "processes complex dl reference" do
73
+ expect(strip_guid(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to <<~"OUTPUT"
74
+ #{ASCIIDOC_BLANK_HDR}
75
+ [bibliography]
76
+ == Normative References
77
+
78
+ [[ISO/TC211]]
79
+ [%bibitem]
80
+ === {blank}
81
+ fetched:: 2019-06-30
82
+ titles::
83
+ type::: main
84
+ content::: Geographic information
85
+ titles::
86
+ type::: subtitle
87
+ content::: Geographic information subtitle
88
+ language::: en
89
+ script::: Latn
90
+ format::: text/plain
91
+ type:: standard
92
+ docid::
93
+ type::: ISO
94
+ id::: TC211
95
+ docnumber:: 211
96
+ edition:: 1
97
+ language::
98
+ . en
99
+ . fr
100
+ script:: Latn
101
+ version::
102
+ revision_date::: 2019-04-01
103
+ draft::: draft
104
+ biblionote::
105
+ type::: bibnote
106
+ content:::
107
+ +
108
+ --
109
+ Mark set a major league
110
+ home run record in 1998.
111
+ --
112
+ docstatus::
113
+ stage::: stage
114
+ substage::: substage
115
+ iteration::: iteration
116
+ dates::
117
+ type::: issued
118
+ value::: 2014
119
+ dates::
120
+ type::: published
121
+ from::: 2014-04
122
+ to::: 2014-05
123
+ dates::
124
+ type::: accessed
125
+ value::: 2015-05-20
126
+ abstract::
127
+ content:::
128
+ +
129
+ --
130
+ ISO 19115-1:2014 defines the schema required for ...
131
+ --
132
+ abstract::
133
+ content::: L'ISO 19115-1:2014 définit le schéma requis pour ...
134
+ language::: fr
135
+ script::: Latn
136
+ format::: text/plain
137
+ copyright::
138
+ owner:::
139
+ name:::: International Organization for Standardization
140
+ abbreviation:::: ISO
141
+ url:::: www.iso.org
142
+ from::: 2014
143
+ to::: 2020
144
+ link::
145
+ type::: src
146
+ content::: https://www.iso.org/standard/53798.html
147
+ link::
148
+ type::: obp
149
+ content::: https://www.iso.org/obp/ui/#!iso:std:53798:en
150
+ link::
151
+ type::: rss
152
+ content::: https://www.iso.org/contents/data/standard/05/37/53798.detail.rss
153
+ medium::
154
+ form::: medium form
155
+ size::: medium size
156
+ scale::: medium scale
157
+ place:: bib place
158
+ extent::
159
+ type::: section
160
+ reference_from::: 7
161
+ accesslocation::
162
+ . accesslocation1
163
+ . accesslocation2
164
+ classification::
165
+ type::: type
166
+ value::: value
167
+ validity::
168
+ begins::: 2010-10-10 12:21
169
+ ends::: 2011-02-03 18:30
170
+
171
+
172
+ ==== Contributor
173
+ organization::
174
+ name::: International Organization for Standardization
175
+ url::: www.iso.org
176
+ abbreviation::: ISO
177
+ subdivision::: division
178
+ role::
179
+ * publisher
180
+ *
181
+ ** Publisher role
182
+
183
+ ==== Contributor
184
+ person::
185
+ name:::
186
+ completename::::
187
+ content::::: A. Bierman
188
+ language::::: en
189
+ affiliation:::
190
+ organization::::
191
+ name::::: IETF
192
+ abbreviation::::: IETF
193
+ identifiers:::::
194
+ +
195
+ ---
196
+ type:: uri
197
+ id:: www.ietf.org
198
+ ---
199
+ description:::: Affiliation description
200
+ contacts:::
201
+ street::::
202
+ * 8 Street St
203
+ city:::: City
204
+ postcode:::: 123456
205
+ country:::: Country
206
+ state:::: State
207
+ contacts:::
208
+ type:::: phone
209
+ value:::: 223322
210
+ role:: author
211
+
212
+ ==== Contributors
213
+ organization::
214
+ name::: IETF
215
+ abbreviation::: IETF
216
+ identifiers:::
217
+ type:::: uri
218
+ id:::: www.ietf.org
219
+ role:: publisher
220
+
221
+ ==== Contributors
222
+ person::
223
+ name:::
224
+ language:::: en
225
+ initials:::: A.
226
+ surname:::: Bierman
227
+ affiliation:::
228
+ +
229
+ --
230
+ organization::
231
+ name::: IETF
232
+ abbreviation::: IETF
233
+ description::
234
+ content::: Affiliation description
235
+ language::: en
236
+ script::: Latn
237
+ --
238
+ identifiers:::
239
+ type:::: uri
240
+ id:::: www.person.com
241
+ roles:: author
242
+
243
+ ==== Relations
244
+ type:: updates
245
+ bibitem::
246
+ formattedref::: ISO 19115:2003
247
+ bib_locality:::
248
+ type:::: page
249
+ reference_from:::: 7
250
+ reference_to:::: 10
251
+
252
+ ==== Relations
253
+ type:: updates
254
+ bibitem::
255
+ type::: standard
256
+ formattedref::: ISO 19115:2003/Cor 1:2006
257
+
258
+ ==== Series
259
+ type:: main
260
+ title::
261
+ type::: original
262
+ content::: ISO/IEC FDIS 10118-3
263
+ language::: en
264
+ script::: Latn
265
+ format::: text/plain
266
+ place:: Serie's place
267
+ organization:: Serie's organization
268
+ abbreviation::
269
+ content::: ABVR
270
+ language::: en
271
+ script::: Latn
272
+ from:: 2009-02-01
273
+ to:: 2010-12-20
274
+ number:: serie1234
275
+ partnumber:: part5678
276
+
277
+ ==== Series
278
+ type:: alt
279
+ formattedref::
280
+ content::: serieref
281
+ language::: en
282
+ script::: Latn
283
+
284
+ INPUT
285
+ #{BLANK_HDR}
286
+ <sections>
287
+ </sections><bibliography><references id="_" obligation="informative">
288
+ <title>Normative References</title>
289
+ <bibitem id="TC211" type="standard">
290
+ <fetched>2019-06-30</fetched>
291
+ <title type="main" format="text/plain">Geographic information</title>
292
+ <title type="subtitle" format="text/plain" language="en" script="Latn">Geographic information subtitle</title>
293
+ <uri type="src">https://www.iso.org/standard/53798.html</uri>
294
+ <uri type="obp">https://www.iso.org/obp/ui/#!iso:std:53798:en</uri>
295
+ <uri type="rss">https://www.iso.org/contents/data/standard/05/37/53798.detail.rss</uri>
296
+ <docidentifier type="ISO">TC211</docidentifier>
297
+ <docnumber>211</docnumber>
298
+ <date type="issued">
299
+ <on>2014</on>
300
+ </date>
301
+ <date type="published">
302
+ <from>2014</from>
303
+ <to>2014</to>
304
+ </date>
305
+ <date type="accessed">
306
+ <on>2015</on>
307
+ </date>
308
+ <contributor>
309
+ <organization>
310
+ <name>IETF</name>
311
+ <abbreviation>IETF</abbreviation>
312
+ <identifier type="uri">www.ietf.org</identifier>
313
+ </organization>
314
+ </contributor>
315
+ <contributor>
316
+ <role type="author"/>
317
+ <person>
318
+ <name>
319
+ <initial language="en">A.</initial>
320
+ <surname language="en">Bierman</surname>
321
+ </name>
322
+ <affiliation>
323
+ <description language="en" script="en">Affiliation description</description>
324
+ <organization>
325
+ <name>IETF</name>
326
+ <abbreviation>IETF</abbreviation>
327
+ </organization>
328
+ </affiliation>
329
+ <identifier type="uri">www.person.com</identifier>
330
+ </person>
331
+ </contributor>
332
+ <edition>1</edition>
333
+ <version>
334
+ <revision-date>2019-04-01</revision-date>
335
+ <draft>draft</draft>
336
+ </version>
337
+ <note type="bibnote">Mark set a major league
338
+ home run record in 1998.</note>
339
+ <language>en</language>
340
+ <language>fr</language>
341
+ <script>Latn</script>
342
+ <abstract format="text/plain">ISO 19115-1:2014 defines the schema required for …​</abstract>
343
+ <abstract format="text/plain" language="fr" script="Latn">L’ISO 19115-1:2014 définit le schéma requis pour …​</abstract>
344
+ <status>
345
+ <stage>stage</stage>
346
+ <substage>substage</substage>
347
+ <iteration>iteration</iteration>
348
+ </status>
349
+ <copyright>
350
+ <from>2014</from>
351
+ <to>2020</to>
352
+ <owner>
353
+ <organization>
354
+ <name>International Organization for Standardization</name>
355
+ <abbreviation>ISO</abbreviation>
356
+ <uri>www.iso.org</uri>
357
+ </organization>
358
+ </owner>
359
+ </copyright>
360
+ <relation type="updates">
361
+ <bibitem>
362
+ <formattedref format="text/plain">ISO 19115:2003</formattedref>
363
+ </bibitem>
364
+ </relation>
365
+ <relation type="updates">
366
+ <bibitem type="standard">
367
+ <formattedref format="text/plain">ISO 19115:2003/Cor 1:2006</formattedref>
368
+ </bibitem>
369
+ </relation>
370
+ <series type="main">
371
+ <title type="original" format="text/plain" language="en" script="Latn">ISO/IEC FDIS 10118-3</title>
372
+ <place>Serie’s place</place>
373
+ <organization>Serie’s organization</organization>
374
+ <abbreviation language="en" script="Latn">ABVR</abbreviation>
375
+ <from>2009-02-01</from>
376
+ <to>2010-12-20</to>
377
+ <number>serie1234</number>
378
+ <partnumber>part5678</partnumber>
379
+ </series>
380
+ <series type="alt">
381
+ <formattedref format="text/plain" language="en" script="Latn">serieref</formattedref>
382
+ </series>
383
+ <medium>
384
+ <form>medium form</form>
385
+ <size>medium size</size>
386
+ <scale>medium scale</scale>
387
+ </medium>
388
+ <place>bib place</place>
389
+ <locality type="section">
390
+ <referenceFrom>7</referenceFrom>
391
+ </locality>
392
+ <accesslocation>accesslocation1</accesslocation>
393
+ <accesslocation>accesslocation2</accesslocation>
394
+ <classification type="type">value</classification>
395
+ <validity>
396
+ <validityBegins>2010-10-10 12:21</validityBegins>
397
+ <validityEnds>2011-02-03 18:30</validityEnds>
398
+ </validity>
399
+ </bibitem></references></bibliography>
400
+ </standard-document>
401
+ OUTPUT
402
+ end
403
+
56
404
  end
@@ -422,7 +422,6 @@ RSpec.describe Asciidoctor::Standoc do
422
422
  <title format="text/plain" language="en" script="Latn">Network Configuration Access Control Model</title>
423
423
  <uri type="src">https://www.rfc-editor.org/info/rfc8341</uri>
424
424
  <docidentifier type="IETF">RFC 8341</docidentifier>
425
- <docidentifier type="DOI">10.17487/RFC8341</docidentifier>
426
425
  <date type="published">
427
426
  <on>2018-03</on>
428
427
  </date>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-standoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.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: 2019-06-30 00:00:00.000000000 Z
11
+ date: 2019-07-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -136,20 +136,6 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.0.1
139
- - !ruby/object:Gem::Dependency
140
- name: relaton-cli
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: 0.2.0
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.2.0
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: bundler
155
141
  requirement: !ruby/object:Gem::Requirement