metanorma-standoc 2.0.6 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/asciidoctor/standoc/base.rb +0 -1
- data/lib/asciidoctor/standoc/blocks.rb +0 -1
- data/lib/asciidoctor/standoc/blocks_notes.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_amend.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_block.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_footnotes.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_image.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_inline.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_maths.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_ref.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_reqt.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_section.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_section_names.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_symbols.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_table.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_terms.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_terms_designations.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_text.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_toc.rb +0 -1
- data/lib/asciidoctor/standoc/cleanup_xref.rb +0 -1
- data/lib/asciidoctor/standoc/converter.rb +0 -1
- data/lib/asciidoctor/standoc/deprecated.rb +4 -2
- data/lib/asciidoctor/standoc/front.rb +0 -1
- data/lib/asciidoctor/standoc/front_contributor.rb +0 -1
- data/lib/asciidoctor/standoc/inline.rb +0 -1
- data/lib/asciidoctor/standoc/lists.rb +0 -1
- data/lib/asciidoctor/standoc/macros.rb +0 -1
- data/lib/asciidoctor/standoc/macros_form.rb +0 -1
- data/lib/asciidoctor/standoc/macros_note.rb +0 -1
- data/lib/asciidoctor/standoc/macros_plantuml.rb +0 -1
- data/lib/asciidoctor/standoc/macros_terms.rb +0 -1
- data/lib/asciidoctor/standoc/render.rb +0 -1
- data/lib/asciidoctor/standoc/reqt.rb +0 -1
- data/lib/asciidoctor/standoc/section.rb +0 -1
- data/lib/asciidoctor/standoc/table.rb +0 -1
- data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +0 -1
- data/lib/asciidoctor/standoc/terms.rb +0 -1
- data/lib/asciidoctor/standoc/utils.rb +0 -1
- data/lib/asciidoctor/standoc/validate.rb +0 -1
- data/lib/asciidoctor/standoc/validate_section.rb +0 -1
- data/lib/isodoc/pdf_convert.rb +2 -3
- data/lib/metanorma/standoc/biblio.rng +25 -2
- data/lib/metanorma/standoc/blocks.rb +10 -0
- data/lib/metanorma/standoc/cleanup_boilerplate.rb +15 -7
- data/lib/metanorma/standoc/cleanup_ref.rb +2 -4
- data/lib/metanorma/standoc/cleanup_xref.rb +3 -4
- data/lib/metanorma/standoc/inline.rb +11 -8
- data/lib/metanorma/standoc/macros_embed.rb +1 -3
- data/lib/metanorma/standoc/macros_terms.rb +1 -1
- data/lib/metanorma/standoc/processor.rb +2 -1
- data/lib/metanorma/standoc/ref.rb +4 -4
- data/lib/metanorma/standoc/render.rb +6 -1
- data/lib/metanorma/standoc/term_lookup_cleanup.rb +1 -1
- data/lib/metanorma/standoc/version.rb +1 -1
- data/metanorma-standoc.gemspec +2 -0
- data/spec/assets/iso.adoc +10 -0
- data/spec/metanorma/blocks_spec.rb +113 -72
- data/spec/metanorma/cleanup_sections_spec.rb +6 -6
- data/spec/metanorma/cleanup_spec.rb +5 -5
- data/spec/metanorma/cleanup_terms_spec.rb +93 -19
- data/spec/metanorma/inline_spec.rb +1 -1
- data/spec/metanorma/macros_spec.rb +216 -45
- data/spec/metanorma/refs_dl_spec.rb +11 -6
- data/spec/metanorma/section_spec.rb +15 -15
- data/spec/metanorma/table_spec.rb +339 -342
- data/spec/spec_helper.rb +2 -5
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e678173d52fd8197d0127f397b7f65349b72d26242d62c3cee8005e3057068b
|
4
|
+
data.tar.gz: 4a5548452c906db7df68ead74453f49d484fe601791a35aeb22360e9abb0b2ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b28ce6e459d29a0b457179ad2f97282ccf26109358ed8ab933d42e080d8ad1e4511d68c1470d16437c8dd71338ed8951f2a021335f135cf0d3d467d432e715a
|
7
|
+
data.tar.gz: d54fc63c669aa31fc728d35f3761c4a853d1ef345d9010988157550073ff2e38feb6ad123be562ee323219d812fa3f414da17102d0c462801bd31aa0be50405d
|
@@ -1,5 +1,7 @@
|
|
1
|
-
warn "Please replace your references to Asciidoctor::Standoc with
|
1
|
+
warn "Please replace your references to Asciidoctor::Standoc with "\
|
2
|
+
"Metanorma::Standoc and your instances of require 'asciidoctor/standoc' "\
|
3
|
+
"with require 'metanorma/standoc'"
|
2
4
|
|
3
|
-
exit 127 if ENV[
|
5
|
+
exit 127 if ENV["METANORMA_DEPRECATION_FAIL"]
|
4
6
|
|
5
7
|
Asciidoctor::Standoc = Metanorma::Standoc unless defined? Asciidoctor::Standoc
|
data/lib/isodoc/pdf_convert.rb
CHANGED
@@ -2,7 +2,6 @@ require "isodoc"
|
|
2
2
|
|
3
3
|
module IsoDoc
|
4
4
|
module Standoc
|
5
|
-
|
6
5
|
# A {Converter} implementation that generates HTML output, and a document
|
7
6
|
# schema encapsulation of the document for validation
|
8
7
|
#
|
@@ -12,8 +11,8 @@ module IsoDoc
|
|
12
11
|
super
|
13
12
|
end
|
14
13
|
|
15
|
-
def pdf_stylesheet(
|
16
|
-
|
14
|
+
def pdf_stylesheet(_docxml)
|
15
|
+
"base.standard.xsl"
|
17
16
|
end
|
18
17
|
end
|
19
18
|
end
|
@@ -527,7 +527,7 @@
|
|
527
527
|
</define>
|
528
528
|
<define name="LocalityType">
|
529
529
|
<data type="string">
|
530
|
-
<param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
|
530
|
+
<param name="pattern">section|clause|part|paragraph|chapter|page|title|line|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
|
531
531
|
</data>
|
532
532
|
</define>
|
533
533
|
<define name="referenceFrom">
|
@@ -677,6 +677,9 @@
|
|
677
677
|
<zeroOrMore>
|
678
678
|
<ref name="extent"/>
|
679
679
|
</zeroOrMore>
|
680
|
+
<optional>
|
681
|
+
<ref name="bibliographic_size"/>
|
682
|
+
</optional>
|
680
683
|
<zeroOrMore>
|
681
684
|
<ref name="accesslocation"/>
|
682
685
|
</zeroOrMore>
|
@@ -922,9 +925,29 @@
|
|
922
925
|
<text/>
|
923
926
|
</element>
|
924
927
|
</define>
|
928
|
+
<define name="sizevalue">
|
929
|
+
<element name="value">
|
930
|
+
<attribute name="type"/>
|
931
|
+
<text/>
|
932
|
+
</element>
|
933
|
+
</define>
|
934
|
+
<define name="bibliographic_size">
|
935
|
+
<element name="size">
|
936
|
+
<oneOrMore>
|
937
|
+
<ref name="sizevalue"/>
|
938
|
+
</oneOrMore>
|
939
|
+
</element>
|
940
|
+
</define>
|
925
941
|
<define name="extent">
|
926
942
|
<element name="extent">
|
927
|
-
<
|
943
|
+
<choice>
|
944
|
+
<zeroOrMore>
|
945
|
+
<ref name="locality"/>
|
946
|
+
</zeroOrMore>
|
947
|
+
<zeroOrMore>
|
948
|
+
<ref name="localityStack"/>
|
949
|
+
</zeroOrMore>
|
950
|
+
</choice>
|
928
951
|
</element>
|
929
952
|
</define>
|
930
953
|
<define name="series">
|
@@ -96,6 +96,7 @@ module Metanorma
|
|
96
96
|
return svgmap_example(node) if role == "svgmap"
|
97
97
|
return form(node) if role == "form"
|
98
98
|
return termdefinition(node) if role == "definition"
|
99
|
+
return figure_example(node) if role == "figure"
|
99
100
|
|
100
101
|
reqt_subpart(role) and return requirement_subpart(node)
|
101
102
|
example_proper(node)
|
@@ -145,6 +146,15 @@ module Metanorma
|
|
145
146
|
end.join("\n")
|
146
147
|
end
|
147
148
|
|
149
|
+
def figure_example(node)
|
150
|
+
noko do |xml|
|
151
|
+
xml.figure **figure_attrs(node) do |ex|
|
152
|
+
node.title.nil? or ex.name { |name| name << node.title }
|
153
|
+
wrap_in_para(node, ex)
|
154
|
+
end
|
155
|
+
end.join("\n")
|
156
|
+
end
|
157
|
+
|
148
158
|
def figure_title(node, out)
|
149
159
|
return if node.title.nil?
|
150
160
|
|
@@ -111,7 +111,7 @@ module Metanorma
|
|
111
111
|
return if xml.at("//boilerplate")
|
112
112
|
|
113
113
|
preface = xml.at("//preface") || xml.at("//sections") ||
|
114
|
-
xml.at("//annex") || xml.at("//references")
|
114
|
+
xml.at("//annex") || xml.at("//references") or return
|
115
115
|
b = boilerplate(xml, isodoc) or return
|
116
116
|
preface.previous = b
|
117
117
|
end
|
@@ -162,11 +162,11 @@ module Metanorma
|
|
162
162
|
end
|
163
163
|
|
164
164
|
def insert_indirect_biblio(xmldoc, refs, prefix)
|
165
|
-
|
166
|
-
xmldoc.root << "<bibliography/>" and
|
167
|
-
|
165
|
+
i = xmldoc.at("bibliography") or
|
166
|
+
xmldoc.root << "<bibliography/>" and i = xmldoc.at("bibliography")
|
167
|
+
i = i.add_child("<references hidden='true' normative='false'/>").first
|
168
168
|
refs.each do |x|
|
169
|
-
|
169
|
+
i << <<~BIB
|
170
170
|
<bibitem id="#{x}" type="internal">
|
171
171
|
<docidentifier type="repository">#{x.sub(/^#{prefix}_/, "#{prefix}/")}</docidentifier>
|
172
172
|
</bibitem>
|
@@ -213,12 +213,13 @@ module Metanorma
|
|
213
213
|
def bibdata_embed_hdr_cleanup(xmldoc)
|
214
214
|
return if @embed_hdr.nil? || @embed_hdr.empty?
|
215
215
|
|
216
|
-
|
216
|
+
xmldoc.at("//bibdata") << "<relation type='derivedFrom'>"\
|
217
|
+
"#{hdr2bibitem(@embed_hdr.first)}</relation>"
|
217
218
|
end
|
218
219
|
|
219
220
|
def hdr2bibitem(hdr)
|
220
221
|
xml = Asciidoctor
|
221
|
-
.convert(hdr[:text], backend:
|
222
|
+
.convert(hdr[:text], backend: hdr2bibitem_type(hdr),
|
222
223
|
header_footer: true)
|
223
224
|
b = Nokogiri::XML(xml).at("//xmlns:bibdata")
|
224
225
|
b.name = "bibitem"
|
@@ -227,6 +228,13 @@ module Metanorma
|
|
227
228
|
b.to_xml
|
228
229
|
end
|
229
230
|
|
231
|
+
def hdr2bibitem_type(hdr)
|
232
|
+
m = /:mn-document-class: (\S+)/.match(hdr[:text])
|
233
|
+
if m then m[1].to_sym
|
234
|
+
else Processor.new.asciidoctor_backend
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
230
238
|
def embed_recurse(bibitem, node)
|
231
239
|
node[:child].map { |x| hdr2bibitem(x) }.each do |x|
|
232
240
|
bibitem << "<relation type='derivedFrom'>#{x}</relation>"
|
@@ -50,10 +50,8 @@ module Metanorma
|
|
50
50
|
# only numeric references are renumbered
|
51
51
|
def biblio_renumber(xmldoc)
|
52
52
|
i = 0
|
53
|
-
xmldoc.xpath("//
|
54
|
-
"
|
55
|
-
next if r["normative"] == "true"
|
56
|
-
|
53
|
+
xmldoc.xpath("//references[not(@normative = 'true')]"\
|
54
|
+
"[not(@hidden = 'true')]").each do |r|
|
57
55
|
r.xpath("./bibitem[not(@hidden = 'true')]").each do |b|
|
58
56
|
i += 1
|
59
57
|
next unless docid = b.at("./docidentifier[@type = 'metanorma']")
|
@@ -4,12 +4,12 @@ module Metanorma
|
|
4
4
|
# extending localities to cover ISO referencing
|
5
5
|
LOCALITY_REGEX_STR = <<~REGEXP.freeze
|
6
6
|
^(((?<conn>and|or|from|to)!)?
|
7
|
-
(?<locality>section|clause|part|paragraph|chapter|page|
|
7
|
+
(?<locality>section|clause|part|paragraph|chapter|page|line|
|
8
8
|
table|annex|figure|example|note|formula|list|time|anchor|
|
9
9
|
locality:[^ \\t\\n\\r:,;=]+)(\\s+|=)
|
10
10
|
(?<ref>[^"][^ \\t\\n,:;-]*|"[^"]+")
|
11
11
|
(-(?<to>[^"][^ \\t\\n,:;-]*|"[^"]"))?|
|
12
|
-
(?<locality2>whole|locality:[^ \\t\\n\\r:,;=]+))(?<punct>[,:;]?)\\s*
|
12
|
+
(?<locality2>whole|title|locality:[^ \\t\\n\\r:,;=]+))(?<punct>[,:;]?)\\s*
|
13
13
|
(?<text>.*)$
|
14
14
|
REGEXP
|
15
15
|
LOCALITY_RE = Regexp.new(LOCALITY_REGEX_STR.gsub(/\s/, ""),
|
@@ -160,8 +160,7 @@ module Metanorma
|
|
160
160
|
|
161
161
|
def origin_cleanup(xmldoc)
|
162
162
|
xmldoc.xpath("//origin/concept[termref]").each do |x|
|
163
|
-
|
164
|
-
x.replace(t)
|
163
|
+
x.replace(x.at("./termref"))
|
165
164
|
end
|
166
165
|
xmldoc.xpath("//origin").each do |x|
|
167
166
|
x["citeas"] = @anchors&.dig(x["bibitemid"], :xref) or
|
@@ -51,7 +51,7 @@ module Metanorma
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def inline_anchor_xref_match(node)
|
54
|
-
/^(hidden%(?<hidden>[^,]+),?)?
|
54
|
+
/^(?:hidden%(?<hidden>[^,]+),?)?
|
55
55
|
(?<drop>droploc%)?(?<case>capital%|lowercase%)?(?<drop2>droploc%)?
|
56
56
|
(?<fn>fn:?\s*)?(?<text>.*)$/x.match node.text
|
57
57
|
end
|
@@ -81,10 +81,9 @@ module Metanorma
|
|
81
81
|
def inline_anchor_bibref(node)
|
82
82
|
eref_contents = (node.text || node.target || node.id)
|
83
83
|
&.sub(/^\[?([^\[\]]+?)\]?$/, "[\\1]")
|
84
|
-
eref_attributes = { id: node.target || node.id }
|
85
84
|
@refids << (node.target || node.id)
|
86
85
|
noko do |xml|
|
87
|
-
xml.ref **attr_code(
|
86
|
+
xml.ref **attr_code(id: node.target || node.id) do |r|
|
88
87
|
r << eref_contents
|
89
88
|
end
|
90
89
|
end.join
|
@@ -229,13 +228,17 @@ module Metanorma
|
|
229
228
|
noko do |xml|
|
230
229
|
node.type == :visible and xml << node.text
|
231
230
|
terms = (node.attr("terms") || [node.text]).map { |x| xml_encode(x) }
|
232
|
-
xml
|
233
|
-
i.primary { |x| x << terms[0] }
|
234
|
-
a = terms[1] and i.secondary { |x| x << a }
|
235
|
-
a = terms[2] and i.tertiary { |x| x << a }
|
236
|
-
end
|
231
|
+
inline_indexterm1(xml, terms)
|
237
232
|
end.join
|
238
233
|
end
|
234
|
+
|
235
|
+
def inline_indexterm1(xml, terms)
|
236
|
+
xml.index do |i|
|
237
|
+
i.primary { |x| x << terms[0] }
|
238
|
+
a = terms[1] and i.secondary { |x| x << a }
|
239
|
+
a = terms[2] and i.tertiary { |x| x << a }
|
240
|
+
end
|
241
|
+
end
|
239
242
|
end
|
240
243
|
end
|
241
244
|
end
|
@@ -9,7 +9,6 @@ module Metanorma
|
|
9
9
|
ret = lines.each_with_object({ lines: [], hdr: [] }) do |line, m|
|
10
10
|
process1(line, m, doc, reader, headings)
|
11
11
|
end
|
12
|
-
#doc.converter.embed_hdr = ret[:hdr]
|
13
12
|
doc.attributes["embed_hdr"] = ret[:hdr]
|
14
13
|
::Asciidoctor::Reader.new ret[:lines].flatten
|
15
14
|
end
|
@@ -83,8 +82,7 @@ module Metanorma
|
|
83
82
|
j = i
|
84
83
|
j -= 1 while j >= 0 && /^\S/.match?(m[j])
|
85
84
|
lines[j..i].each { |n| m << n }
|
86
|
-
else
|
87
|
-
skip or m << l
|
85
|
+
else skip or m << l
|
88
86
|
end
|
89
87
|
end
|
90
88
|
end
|
@@ -109,7 +109,7 @@ module Metanorma
|
|
109
109
|
def preprocess_attrs(target)
|
110
110
|
m = /^(?<id><<.+?>>)?(?<rest>.*)$/.match(target)
|
111
111
|
ret = { id: m[:id]&.sub(/^<</, "")&.sub(/>>$/, "") }
|
112
|
-
if m2 = /^(?<rest>.*?)(?<opt>,opt(ion)?s=.+)$/
|
112
|
+
if m2 = /^(?<rest>.*?)(?<opt>,opt(?:ion)?s=.+)$/
|
113
113
|
.match(m[:rest].sub(/^,/, ""))
|
114
114
|
ret[:opt] = CSV.parse_line(m2[:opt].sub(/^,opt(ion)?s=/, "")
|
115
115
|
.sub(/^"(.+)"$/, "\\1").sub(/^'(.+)'$/, "\\1"))
|
@@ -87,10 +87,10 @@ module Metanorma
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
def isorefmatches3_1(xml, match,
|
90
|
+
def isorefmatches3_1(xml, match, year, _hasyr, _ref)
|
91
91
|
xml.bibitem(**attr_code(ref_attributes(match))) do |t|
|
92
|
-
isorefrender1(t, match,
|
93
|
-
conditional_date(t, match,
|
92
|
+
isorefrender1(t, match, year, " (all parts)")
|
93
|
+
conditional_date(t, match, year == "--")
|
94
94
|
iso_publisher(t, match[:code])
|
95
95
|
if match.names.include?("fn") && match[:fn]
|
96
96
|
t.note(**plaintxt.merge(type: "Unpublished-Status")) do |p|
|
@@ -179,7 +179,7 @@ module Metanorma
|
|
179
179
|
\[(?<usrlbl>\([^)]+\))?(?<code>(?:ISO|IEC)[^0-9]*\s[0-9]+)
|
180
180
|
(?::(?<year>--|&\#821[12];|[0-9][0-9-]+))?\s
|
181
181
|
\(all\sparts\)\]</ref>,?\s*
|
182
|
-
(
|
182
|
+
(?:<fn[^>]*>\s*<p>(?<fn>[^\]]+)</p>\s*</fn>,?\s?)?(?<text>.*)$}xm.freeze
|
183
183
|
|
184
184
|
NON_ISO_REF = %r{^<ref\sid="(?<anchor>[^"]+)">
|
185
185
|
\[(?<usrlbl>\([^)]+\))?(?<code>.+?)\]</ref>,?\s*(?<text>.*)$}xm
|
@@ -28,6 +28,8 @@ module Metanorma
|
|
28
28
|
tocfigures: @tocfigures,
|
29
29
|
toctables: @toctables,
|
30
30
|
tocrecommendations: @tocrecommendations,
|
31
|
+
fonts: node.attr("fonts"),
|
32
|
+
fontlicenseagreement: node.attr("font-license-agreement"),
|
31
33
|
}
|
32
34
|
end
|
33
35
|
|
@@ -67,6 +69,8 @@ module Metanorma
|
|
67
69
|
tocfigures: @tocfigures,
|
68
70
|
toctables: @toctables,
|
69
71
|
tocrecommendations: @tocrecommendations,
|
72
|
+
fonts: node.attr("fonts"),
|
73
|
+
fontlicenseagreement: node.attr("font-license-agreement"),
|
70
74
|
}
|
71
75
|
|
72
76
|
if fonts_manifest = node.attr(FONTS_MANIFEST)
|
@@ -81,7 +85,8 @@ module Metanorma
|
|
81
85
|
pdf-owner-password pdf-allow-copy-content pdf-allow-edit-content
|
82
86
|
pdf-allow-assemble-document pdf-allow-edit-annotations
|
83
87
|
pdf-allow-print pdf-allow-print-hq pdf-allow-fill-in-forms
|
84
|
-
pdf-allow-access-content pdf-encrypt-metadata
|
88
|
+
pdf-allow-access-content pdf-encrypt-metadata fonts
|
89
|
+
font-license-agreement)
|
85
90
|
.each_with_object({}) do |x, m|
|
86
91
|
m[x.gsub(/-/, "").to_i] = node.attr(x)
|
87
92
|
end
|
data/metanorma-standoc.gemspec
CHANGED
@@ -46,6 +46,7 @@ Gem::Specification.new do |spec|
|
|
46
46
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
47
47
|
spec.add_development_dependency "guard", "~> 2.14"
|
48
48
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
49
|
+
spec.add_development_dependency "metanorma-iso"
|
49
50
|
spec.add_development_dependency "rake", "~> 13.0"
|
50
51
|
spec.add_development_dependency "rspec", "~> 3.6"
|
51
52
|
spec.add_development_dependency "rubocop", "~> 1.5.2"
|
@@ -54,4 +55,5 @@ Gem::Specification.new do |spec|
|
|
54
55
|
spec.add_development_dependency "timecop", "~> 0.9"
|
55
56
|
spec.add_development_dependency "vcr", "~> 6.1.0"
|
56
57
|
spec.add_development_dependency "webmock"
|
58
|
+
#spec.metadata["rubygems_mfa_required"] = "true"
|
57
59
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
= X
|
2
|
+
A
|
3
|
+
:mn-document-class: iso
|
4
|
+
:title-main-en: Medical devices — Quality management systems — Requirements for regulatory purposes
|
5
|
+
:title-main-fr: Dispositifs médicaux — Systèmes de management de la qualité — Exigences à des fins réglementaires
|
6
|
+
|
7
|
+
== Clause 1
|
8
|
+
|
9
|
+
X
|
10
|
+
|