metanorma-ietf 2.5.1 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +4 -70
- data/.gitignore +5 -0
- data/lib/isodoc/ietf/inline.rb +8 -31
- data/lib/isodoc/ietf/references.rb +2 -2
- data/lib/isodoc/ietf/rfc_convert.rb +71 -67
- data/lib/isodoc/ietf/terms.rb +1 -1
- data/lib/isodoc/ietf/xref.rb +1 -0
- data/lib/{asciidoctor → metanorma}/ietf/basicdoc.rng +5 -3
- data/lib/{asciidoctor → metanorma}/ietf/biblio.rng +7 -5
- data/lib/{asciidoctor → metanorma}/ietf/blocks.rb +2 -2
- data/lib/{asciidoctor → metanorma}/ietf/cleanup.rb +8 -8
- data/lib/{asciidoctor → metanorma}/ietf/converter.rb +4 -4
- data/lib/{asciidoctor → metanorma}/ietf/front.rb +2 -2
- data/lib/{asciidoctor → metanorma}/ietf/ietf.rng +1 -1
- data/lib/{asciidoctor → metanorma}/ietf/isodoc.rng +191 -6
- data/lib/{asciidoctor → metanorma}/ietf/macros.rb +1 -1
- data/lib/{asciidoctor → metanorma}/ietf/reqt.rng +0 -0
- data/lib/{asciidoctor → metanorma}/ietf/validate.rb +2 -2
- data/lib/metanorma/ietf/version.rb +1 -1
- data/lib/metanorma-ietf.rb +1 -1
- data/metanorma-ietf.gemspec +2 -2
- metadata +16 -22
- data/bin/asciidoctor-rfc2 +0 -14
- data/bin/asciidoctor-rfc2.bat +0 -2
- data/bin/asciidoctor-rfc3 +0 -14
- data/bin/console +0 -14
- data/bin/rspec +0 -17
- data/bin/setup +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51d0713bcfae4cec3a50c1c840c445df4b12d0b7c8b31ae75eae87ef5dde0a67
|
4
|
+
data.tar.gz: 62ca2ad04f15976d681a621d399bb463cf339d496b98a8111cf4ec8ef9792c8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfb117a7bae17c2ad66302424b97672dc35bbc4b710af759c4e191c9a01dfa4d30326324786760cc5437b845e7941472fd524dc8b6ee9b85cb94f8ef29424dd4
|
7
|
+
data.tar.gz: a4ecb6cc11f97bde100cb8c9a8870379ddd732fcf638abf6b928502b056c95e80ed82c044a65998f5b1e871bf2a9b6dc21d3ac58a4c388168ea97e09191ffac5
|
data/.github/workflows/rake.yml
CHANGED
@@ -8,75 +8,9 @@ on:
|
|
8
8
|
tags: [ v* ]
|
9
9
|
pull_request:
|
10
10
|
|
11
|
+
|
11
12
|
jobs:
|
12
13
|
rake:
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
strategy:
|
17
|
-
fail-fast: false
|
18
|
-
matrix:
|
19
|
-
ruby: [ '3.0', '2.7', '2.6', '2.5' ]
|
20
|
-
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
21
|
-
experimental: [ false ]
|
22
|
-
|
23
|
-
steps:
|
24
|
-
- uses: actions/checkout@master
|
25
|
-
|
26
|
-
- uses: ruby/setup-ruby@v1
|
27
|
-
with:
|
28
|
-
ruby-version: ${{ matrix.ruby }}
|
29
|
-
bundler-cache: true
|
30
|
-
|
31
|
-
- uses: actions/setup-python@v1
|
32
|
-
with:
|
33
|
-
python-version: '3.6'
|
34
|
-
|
35
|
-
- name: set PIP_DOWNLOAD_CACHE
|
36
|
-
shell: python
|
37
|
-
run: |
|
38
|
-
import os
|
39
|
-
import platform
|
40
|
-
from os.path import expanduser
|
41
|
-
|
42
|
-
home = expanduser("~")
|
43
|
-
cache_path = {
|
44
|
-
"Linux": f"{home}/.cache/pip",
|
45
|
-
"Darwin": f"{home}Library/Caches/pip",
|
46
|
-
"Windows": f"{home}\\AppData\\Local\\pip\\Cache"
|
47
|
-
}[platform.system()]
|
48
|
-
|
49
|
-
os.system(f"echo PIP_DOWNLOAD_CACHE={cache_path} >> {os.environ['GITHUB_ENV']}")
|
50
|
-
|
51
|
-
- uses: actions/cache@v2
|
52
|
-
with:
|
53
|
-
path: ${{ env.PIP_DOWNLOAD_CACHE }}
|
54
|
-
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
|
55
|
-
restore-keys: ${{ runner.os }}-pip-
|
56
|
-
|
57
|
-
- uses: actions/cache@v2
|
58
|
-
with:
|
59
|
-
path: ~/.cache/xml2rfc
|
60
|
-
key: xml2rfc
|
61
|
-
restore-keys: xml2rfc
|
62
|
-
|
63
|
-
- if: matrix.os == 'macos-latest'
|
64
|
-
run: brew install libmagic
|
65
|
-
|
66
|
-
- if: matrix.os == 'windows-latest'
|
67
|
-
run: pip install python-magic-bin
|
68
|
-
|
69
|
-
- run: pip install xml2rfc
|
70
|
-
|
71
|
-
- run: bundle exec rake
|
72
|
-
|
73
|
-
tests-passed:
|
74
|
-
needs: rake
|
75
|
-
runs-on: ubuntu-latest
|
76
|
-
steps:
|
77
|
-
- uses: peter-evans/repository-dispatch@v1
|
78
|
-
with:
|
79
|
-
token: ${{ secrets.METANORMA_CI_PAT_TOKEN || secrets.GITHUB_TOKEN }}
|
80
|
-
repository: ${{ github.repository }}
|
81
|
-
event-type: tests-passed
|
82
|
-
client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}"}'
|
14
|
+
uses: metanorma/metanorma-build-scripts/.github/workflows/xml2rfc-rake.yml@main
|
15
|
+
secrets:
|
16
|
+
pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
|
data/.gitignore
CHANGED
data/lib/isodoc/ietf/inline.rb
CHANGED
@@ -107,10 +107,10 @@ module IsoDoc
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def get_linkend(node)
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
110
|
+
no_loc_contents = node.children.reject do |c|
|
111
|
+
%w{locality localityStack location}.include? c.name
|
112
|
+
end
|
113
|
+
contents = no_loc_contents.select { |c| !c.text? || /\S/.match(c) }
|
114
114
|
!contents.empty? and
|
115
115
|
return Nokogiri::XML::NodeSet.new(node.document, contents).to_xml
|
116
116
|
""
|
@@ -122,9 +122,10 @@ module IsoDoc
|
|
122
122
|
end
|
123
123
|
relative = node["relative"] ||
|
124
124
|
node.at(ns(".//locality[@type = 'anchor']/referenceFrom"))&.text || ""
|
125
|
-
section =
|
126
|
-
|
127
|
-
|
125
|
+
section = @isodoc.eref_localities(
|
126
|
+
node.xpath(ns("./locality | ./localityStack")), nil, node
|
127
|
+
)&.sub(/^,/, "")&.sub(/^\s*(Section|Clause)/, "")&.strip&.sub(/,$/, "") || ""
|
128
|
+
# section = "" unless relative.empty?
|
128
129
|
out.relref **attr_code(target: node["bibitemid"], section: section,
|
129
130
|
relative: relative,
|
130
131
|
displayFormat: node["displayFormat"]) do |l|
|
@@ -132,30 +133,6 @@ module IsoDoc
|
|
132
133
|
end
|
133
134
|
end
|
134
135
|
|
135
|
-
def eref_clause(refs, target)
|
136
|
-
ret = []
|
137
|
-
ret1 = ""
|
138
|
-
refs.each do |l|
|
139
|
-
if l.name == "localityStack"
|
140
|
-
ret << ret1
|
141
|
-
ret1 = ""
|
142
|
-
ret << eref_clause1(l.elements, target)
|
143
|
-
else ret1 += eref_clause1([l], target)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
ret << ret1
|
147
|
-
ret.reject { |c| c.nil? || c.empty? }.join("; ")
|
148
|
-
end
|
149
|
-
|
150
|
-
def eref_clause1(refs, _target)
|
151
|
-
refs.each do |l|
|
152
|
-
next unless %w(clause section).include? l["type"]
|
153
|
-
|
154
|
-
return l&.at(ns("./referenceFrom"))&.text
|
155
|
-
end
|
156
|
-
""
|
157
|
-
end
|
158
|
-
|
159
136
|
def index_parse(node, out)
|
160
137
|
out.iref nil, **attr_code(item: node.at(ns("./primary")).text,
|
161
138
|
primary: node["primary"],
|
@@ -62,12 +62,12 @@ module IsoDoc
|
|
62
62
|
def docidentifier_render(bib, out)
|
63
63
|
docidentifiers = bib.xpath(ns("./docidentifier"))
|
64
64
|
id = render_identifier(bibitem_ref_code(bib))
|
65
|
-
!id[
|
65
|
+
!id[:sdo].nil? && id[:sdo] != "(NO ID)" and out.refcontent id[:sdo]
|
66
66
|
docidentifiers&.each do |u|
|
67
67
|
u["type"] == "DOI" and
|
68
68
|
out.seriesInfo nil, **attr_code(value: u.text.sub(/^DOI /, ""),
|
69
69
|
name: "DOI")
|
70
|
-
u["type"]
|
70
|
+
%w(IETF RFC).include?(u["type"]) and docidentifier_ietf(u, out)
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
@@ -13,85 +13,89 @@ require_relative "./validation"
|
|
13
13
|
require_relative "./xref"
|
14
14
|
require_relative "./init"
|
15
15
|
|
16
|
-
module IsoDoc
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
16
|
+
module IsoDoc
|
17
|
+
module Ietf
|
18
|
+
class RfcConvert < ::IsoDoc::Convert
|
19
|
+
def convert1(docxml, _filename, _dir)
|
20
|
+
@xrefs.parse docxml
|
21
|
+
info docxml, nil
|
22
|
+
ret = noko do |xml|
|
23
|
+
xml.rfc **attr_code(rfc_attributes(docxml)) do |html|
|
24
|
+
make_link(html, docxml)
|
25
|
+
make_front(html, docxml)
|
26
|
+
make_middle(html, docxml)
|
27
|
+
make_back(html, docxml)
|
28
|
+
end
|
29
|
+
end.join("\n").sub(/<!DOCTYPE[^>]+>\n/, "")
|
30
|
+
set_pis(docxml, Nokogiri::XML(ret))
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
33
|
+
def metadata_init(lang, script, i18n)
|
34
|
+
@meta = Metadata.new(lang, script, i18n)
|
35
|
+
end
|
35
36
|
|
36
|
-
|
37
|
-
|
38
|
-
|
37
|
+
def xref_init(lang, script, klass, i18n, options)
|
38
|
+
@xrefs = Xref.new(lang, script, klass, i18n, options)
|
39
|
+
end
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
41
|
+
def extract_delims(text)
|
42
|
+
@openmathdelim = "$$"
|
43
|
+
@closemathdelim = "$$"
|
44
|
+
while %r{#{Regexp.escape(@openmathdelim)}}m.match(text) ||
|
45
|
+
%r{#{Regexp.escape(@closemathdelim)}}m.match(text)
|
46
|
+
@openmathdelim += "$"
|
47
|
+
@closemathdelim += "$"
|
48
|
+
end
|
49
|
+
[@openmathdelim, @closemathdelim]
|
47
50
|
end
|
48
|
-
[@openmathdelim, @closemathdelim]
|
49
|
-
end
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
52
|
+
def error_parse(node, out)
|
53
|
+
case node.name
|
54
|
+
when "bcp14" then bcp14_parse(node, out)
|
55
|
+
when "concept" then concept_parse(node, out)
|
56
|
+
when "verbal-definition", "non-verbal-representation"
|
57
|
+
node.elements.each { |n| parse(n, out) }
|
58
|
+
else
|
59
|
+
text = node.to_xml.gsub(/</, "<").gsub(/>/, ">")
|
60
|
+
out.t { |p| p << text }
|
61
|
+
end
|
60
62
|
end
|
61
|
-
end
|
62
63
|
|
63
|
-
|
64
|
-
|
64
|
+
def omit_docid_prefix(prefix)
|
65
|
+
return true if %w(IETF RFC).include?(prefix)
|
65
66
|
|
66
|
-
|
67
|
-
|
67
|
+
super
|
68
|
+
end
|
68
69
|
|
69
|
-
|
70
|
-
|
71
|
-
|
70
|
+
def textcleanup(docxml)
|
71
|
+
passthrough_cleanup(docxml)
|
72
|
+
end
|
72
73
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
74
|
+
def postprocess(result, filename, _dir)
|
75
|
+
result = from_xhtml(cleanup(to_xhtml(textcleanup(result))))
|
76
|
+
.sub(/<!DOCTYPE[^>]+>\n/, "")
|
77
|
+
.sub(/(<rfc[^<]+? )lang="[^"]+"/, "\\1")
|
78
|
+
File.open(filename, "w:UTF-8") { |f| f.write(result) }
|
79
|
+
schema_validate(filename)
|
80
|
+
@files_to_delete.each { |f| FileUtils.rm_rf f }
|
81
|
+
content_validate(to_xhtml(result), filename)
|
82
|
+
end
|
82
83
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
84
|
+
def init_file(filename, debug)
|
85
|
+
filename = filename.sub(/\.rfc\.xml$/, ".rfc")
|
86
|
+
super
|
87
|
+
end
|
87
88
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
89
|
+
def initialize(options)
|
90
|
+
super
|
91
|
+
@xinclude = options[:use_xinclude] == "true"
|
92
|
+
@format = :rfc
|
93
|
+
@suffix = "rfc.xml"
|
94
|
+
@isodoc = IsoDoc::PresentationXMLConvert.new({})
|
95
|
+
@isodoc.i18n_init("en", "Latn")
|
96
|
+
end
|
94
97
|
|
95
|
-
|
98
|
+
include ::IsoDoc::Ietf::Init
|
99
|
+
end
|
96
100
|
end
|
97
101
|
end
|
data/lib/isodoc/ietf/terms.rb
CHANGED
data/lib/isodoc/ietf/xref.rb
CHANGED
@@ -173,9 +173,11 @@
|
|
173
173
|
<data type="dateTime"/>
|
174
174
|
</attribute>
|
175
175
|
</optional>
|
176
|
-
<
|
177
|
-
<
|
178
|
-
|
176
|
+
<optional>
|
177
|
+
<attribute name="from">
|
178
|
+
<data type="IDREF"/>
|
179
|
+
</attribute>
|
180
|
+
</optional>
|
179
181
|
<optional>
|
180
182
|
<attribute name="to">
|
181
183
|
<data type="IDREF"/>
|
@@ -209,9 +209,6 @@
|
|
209
209
|
<zeroOrMore>
|
210
210
|
<ref name="contact"/>
|
211
211
|
</zeroOrMore>
|
212
|
-
<zeroOrMore>
|
213
|
-
<ref name="uri"/>
|
214
|
-
</zeroOrMore>
|
215
212
|
</element>
|
216
213
|
</define>
|
217
214
|
<define name="fullname">
|
@@ -401,9 +398,9 @@
|
|
401
398
|
<choice>
|
402
399
|
<!-- iso191606 TODO -->
|
403
400
|
<group>
|
404
|
-
<
|
401
|
+
<zeroOrMore>
|
405
402
|
<ref name="street"/>
|
406
|
-
</
|
403
|
+
</zeroOrMore>
|
407
404
|
<ref name="city"/>
|
408
405
|
<optional>
|
409
406
|
<ref name="state"/>
|
@@ -828,6 +825,11 @@
|
|
828
825
|
<optional>
|
829
826
|
<attribute name="scope"/>
|
830
827
|
</optional>
|
828
|
+
<optional>
|
829
|
+
<attribute name="primary">
|
830
|
+
<data type="boolean"/>
|
831
|
+
</attribute>
|
832
|
+
</optional>
|
831
833
|
<text/>
|
832
834
|
</element>
|
833
835
|
</define>
|
@@ -1,6 +1,6 @@
|
|
1
|
-
module
|
1
|
+
module Metanorma
|
2
2
|
module Ietf
|
3
|
-
class Converter < ::
|
3
|
+
class Converter < ::Metanorma::Standoc::Converter
|
4
4
|
def para_attrs(node)
|
5
5
|
attr_code( "keep-with-next": node.attr("keepWithNext") ||
|
6
6
|
node.attr("keep-with-next"),
|
@@ -1,6 +1,6 @@
|
|
1
|
-
module
|
1
|
+
module Metanorma
|
2
2
|
module Ietf
|
3
|
-
class Converter < ::
|
3
|
+
class Converter < ::Metanorma::Standoc::Converter
|
4
4
|
def cleanup(xmldoc)
|
5
5
|
bcp14_cleanup(xmldoc)
|
6
6
|
abstract_cleanup(xmldoc)
|
@@ -42,19 +42,19 @@ module Asciidoctor
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
def rfc_anchor_cleanup(
|
46
|
-
map =
|
47
|
-
|
45
|
+
def rfc_anchor_cleanup(xml)
|
46
|
+
map = xml.xpath("//bibitem[docidentifier[@type = 'IETF' or @type = 'RFC']"\
|
47
|
+
"[@scope = 'anchor']]").each_with_object({}) do |b, m|
|
48
48
|
next if b.at("./ancestor::bibdata | ./ancestor::bibitem")
|
49
49
|
|
50
|
-
id = b.at("./docidentifier[@type = '
|
50
|
+
id = b.at("./docidentifier[@type = 'IETF' or @type = 'RFC'][@scope = 'anchor']").text
|
51
51
|
m[b["id"]] = id
|
52
52
|
b["id"] = id
|
53
53
|
end
|
54
|
-
|
54
|
+
xml.xpath("//eref | //origin").each do |x|
|
55
55
|
map[x["bibitemid"]] and x["bibitemid"] = map[x["bibitemid"]]
|
56
56
|
end
|
57
|
-
|
57
|
+
xml
|
58
58
|
end
|
59
59
|
|
60
60
|
def smartquotes_cleanup(xmldoc)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require "asciidoctor"
|
2
|
-
require "
|
2
|
+
require "metanorma/standoc/converter"
|
3
3
|
require "isodoc/ietf/rfc_convert"
|
4
4
|
require_relative "./front"
|
5
5
|
require_relative "./blocks"
|
@@ -7,11 +7,11 @@ require_relative "./validate"
|
|
7
7
|
require_relative "./cleanup"
|
8
8
|
require_relative "./macros"
|
9
9
|
|
10
|
-
module
|
10
|
+
module Metanorma
|
11
11
|
module Ietf
|
12
|
-
class Converter < ::
|
12
|
+
class Converter < ::Metanorma::Standoc::Converter
|
13
13
|
Asciidoctor::Extensions.register do
|
14
|
-
inline_macro
|
14
|
+
inline_macro Metanorma::Ietf::InlineCrefMacro
|
15
15
|
end
|
16
16
|
|
17
17
|
XML_ROOT_TAG = "ietf-standard".freeze
|
@@ -32,6 +32,56 @@
|
|
32
32
|
<ref name="DocumentType"/>
|
33
33
|
</element>
|
34
34
|
</define>
|
35
|
+
<define name="index">
|
36
|
+
<element name="index">
|
37
|
+
<optional>
|
38
|
+
<attribute name="to">
|
39
|
+
<data type="IDREF"/>
|
40
|
+
</attribute>
|
41
|
+
</optional>
|
42
|
+
<element name="primary">
|
43
|
+
<oneOrMore>
|
44
|
+
<choice>
|
45
|
+
<ref name="PureTextElement"/>
|
46
|
+
<ref name="stem"/>
|
47
|
+
</choice>
|
48
|
+
</oneOrMore>
|
49
|
+
</element>
|
50
|
+
<optional>
|
51
|
+
<element name="secondary">
|
52
|
+
<oneOrMore>
|
53
|
+
<choice>
|
54
|
+
<ref name="PureTextElement"/>
|
55
|
+
<ref name="stem"/>
|
56
|
+
</choice>
|
57
|
+
</oneOrMore>
|
58
|
+
</element>
|
59
|
+
</optional>
|
60
|
+
<optional>
|
61
|
+
<element name="tertiary">
|
62
|
+
<oneOrMore>
|
63
|
+
<choice>
|
64
|
+
<ref name="PureTextElement"/>
|
65
|
+
<ref name="stem"/>
|
66
|
+
</choice>
|
67
|
+
</oneOrMore>
|
68
|
+
</element>
|
69
|
+
</optional>
|
70
|
+
</element>
|
71
|
+
</define>
|
72
|
+
<define name="bibitem">
|
73
|
+
<element name="bibitem">
|
74
|
+
<attribute name="id">
|
75
|
+
<data type="ID"/>
|
76
|
+
</attribute>
|
77
|
+
<optional>
|
78
|
+
<attribute name="hidden">
|
79
|
+
<data type="boolean"/>
|
80
|
+
</attribute>
|
81
|
+
</optional>
|
82
|
+
<ref name="BibliographicItem"/>
|
83
|
+
</element>
|
84
|
+
</define>
|
35
85
|
<define name="section-title">
|
36
86
|
<element name="title">
|
37
87
|
<zeroOrMore>
|
@@ -102,9 +152,7 @@
|
|
102
152
|
<data type="boolean"/>
|
103
153
|
</attribute>
|
104
154
|
</optional>
|
105
|
-
<
|
106
|
-
<ref name="PureTextElement"/>
|
107
|
-
</oneOrMore>
|
155
|
+
<ref name="XrefBody"/>
|
108
156
|
</element>
|
109
157
|
</define>
|
110
158
|
<define name="erefType">
|
@@ -138,6 +186,42 @@
|
|
138
186
|
<ref name="PureTextElement"/>
|
139
187
|
</oneOrMore>
|
140
188
|
</define>
|
189
|
+
<define name="localityStack">
|
190
|
+
<element name="localityStack">
|
191
|
+
<optional>
|
192
|
+
<attribute name="connective">
|
193
|
+
<choice>
|
194
|
+
<value>and</value>
|
195
|
+
<value>or</value>
|
196
|
+
<value>from</value>
|
197
|
+
<value>to</value>
|
198
|
+
<value/>
|
199
|
+
</choice>
|
200
|
+
</attribute>
|
201
|
+
</optional>
|
202
|
+
<zeroOrMore>
|
203
|
+
<ref name="locality"/>
|
204
|
+
</zeroOrMore>
|
205
|
+
</element>
|
206
|
+
</define>
|
207
|
+
<define name="sourceLocalityStack">
|
208
|
+
<element name="sourceLocalityStack">
|
209
|
+
<optional>
|
210
|
+
<attribute name="connective">
|
211
|
+
<choice>
|
212
|
+
<value>and</value>
|
213
|
+
<value>or</value>
|
214
|
+
<value>from</value>
|
215
|
+
<value>to</value>
|
216
|
+
<value/>
|
217
|
+
</choice>
|
218
|
+
</attribute>
|
219
|
+
</optional>
|
220
|
+
<zeroOrMore>
|
221
|
+
<ref name="sourceLocality"/>
|
222
|
+
</zeroOrMore>
|
223
|
+
</element>
|
224
|
+
</define>
|
141
225
|
<define name="ul">
|
142
226
|
<element name="ul">
|
143
227
|
<attribute name="id">
|
@@ -690,6 +774,7 @@
|
|
690
774
|
<ref name="terms"/>
|
691
775
|
<ref name="term-clause"/>
|
692
776
|
<ref name="definitions"/>
|
777
|
+
<ref name="floating-title"/>
|
693
778
|
</choice>
|
694
779
|
</oneOrMore>
|
695
780
|
</element>
|
@@ -1013,6 +1098,26 @@
|
|
1013
1098
|
</zeroOrMore>
|
1014
1099
|
</element>
|
1015
1100
|
</define>
|
1101
|
+
<define name="sub">
|
1102
|
+
<element name="sub">
|
1103
|
+
<zeroOrMore>
|
1104
|
+
<choice>
|
1105
|
+
<ref name="PureTextElement"/>
|
1106
|
+
<ref name="stem"/>
|
1107
|
+
</choice>
|
1108
|
+
</zeroOrMore>
|
1109
|
+
</element>
|
1110
|
+
</define>
|
1111
|
+
<define name="sup">
|
1112
|
+
<element name="sup">
|
1113
|
+
<zeroOrMore>
|
1114
|
+
<choice>
|
1115
|
+
<ref name="PureTextElement"/>
|
1116
|
+
<ref name="stem"/>
|
1117
|
+
</choice>
|
1118
|
+
</zeroOrMore>
|
1119
|
+
</element>
|
1120
|
+
</define>
|
1016
1121
|
<define name="pagebreak">
|
1017
1122
|
<element name="pagebreak">
|
1018
1123
|
<optional>
|
@@ -1027,6 +1132,16 @@
|
|
1027
1132
|
</define>
|
1028
1133
|
</include>
|
1029
1134
|
<!-- end overrides -->
|
1135
|
+
<define name="image" combine="choice">
|
1136
|
+
<element name="svg">
|
1137
|
+
<oneOrMore>
|
1138
|
+
<choice>
|
1139
|
+
<text/>
|
1140
|
+
<ref name="AnyElement"/>
|
1141
|
+
</choice>
|
1142
|
+
</oneOrMore>
|
1143
|
+
</element>
|
1144
|
+
</define>
|
1030
1145
|
<define name="MultilingualRenderingType">
|
1031
1146
|
<choice>
|
1032
1147
|
<value>common</value>
|
@@ -1680,6 +1795,7 @@
|
|
1680
1795
|
<ref name="clause-subsection"/>
|
1681
1796
|
<ref name="terms"/>
|
1682
1797
|
<ref name="definitions"/>
|
1798
|
+
<ref name="floating-title"/>
|
1683
1799
|
</choice>
|
1684
1800
|
</oneOrMore>
|
1685
1801
|
</choice>
|
@@ -1722,6 +1838,7 @@
|
|
1722
1838
|
<ref name="terms"/>
|
1723
1839
|
<ref name="definitions"/>
|
1724
1840
|
<ref name="references"/>
|
1841
|
+
<ref name="floating-title"/>
|
1725
1842
|
</choice>
|
1726
1843
|
</zeroOrMore>
|
1727
1844
|
</group>
|
@@ -1796,6 +1913,20 @@
|
|
1796
1913
|
<data type="ID"/>
|
1797
1914
|
</attribute>
|
1798
1915
|
</optional>
|
1916
|
+
<optional>
|
1917
|
+
<attribute name="language"/>
|
1918
|
+
</optional>
|
1919
|
+
<optional>
|
1920
|
+
<attribute name="script"/>
|
1921
|
+
</optional>
|
1922
|
+
<optional>
|
1923
|
+
<attribute name="tag"/>
|
1924
|
+
</optional>
|
1925
|
+
<optional>
|
1926
|
+
<attribute name="multilingual-rendering">
|
1927
|
+
<ref name="MultilingualRenderingType"/>
|
1928
|
+
</attribute>
|
1929
|
+
</optional>
|
1799
1930
|
<oneOrMore>
|
1800
1931
|
<ref name="preferred"/>
|
1801
1932
|
</oneOrMore>
|
@@ -1959,7 +2090,11 @@
|
|
1959
2090
|
</optional>
|
1960
2091
|
<element name="name">
|
1961
2092
|
<zeroOrMore>
|
1962
|
-
<
|
2093
|
+
<choice>
|
2094
|
+
<ref name="PureTextElement"/>
|
2095
|
+
<ref name="stem"/>
|
2096
|
+
<ref name="index"/>
|
2097
|
+
</choice>
|
1963
2098
|
</zeroOrMore>
|
1964
2099
|
</element>
|
1965
2100
|
<optional>
|
@@ -1973,7 +2108,7 @@
|
|
1973
2108
|
</element>
|
1974
2109
|
</optional>
|
1975
2110
|
<optional>
|
1976
|
-
<element name="grammar
|
2111
|
+
<element name="grammar">
|
1977
2112
|
<ref name="Grammar"/>
|
1978
2113
|
</element>
|
1979
2114
|
</optional>
|
@@ -2182,7 +2317,18 @@
|
|
2182
2317
|
<ref name="MultilingualRenderingType"/>
|
2183
2318
|
</attribute>
|
2184
2319
|
</optional>
|
2185
|
-
<
|
2320
|
+
<oneOrMore>
|
2321
|
+
<choice>
|
2322
|
+
<ref name="formula"/>
|
2323
|
+
<ref name="ul"/>
|
2324
|
+
<ref name="ol"/>
|
2325
|
+
<ref name="dl"/>
|
2326
|
+
<ref name="quote"/>
|
2327
|
+
<ref name="sourcecode"/>
|
2328
|
+
<ref name="paragraph"/>
|
2329
|
+
<ref name="figure"/>
|
2330
|
+
</choice>
|
2331
|
+
</oneOrMore>
|
2186
2332
|
</element>
|
2187
2333
|
</define>
|
2188
2334
|
<define name="termsource">
|
@@ -2516,4 +2662,43 @@
|
|
2516
2662
|
</oneOrMore>
|
2517
2663
|
</element>
|
2518
2664
|
</define>
|
2665
|
+
<define name="floating-title">
|
2666
|
+
<element name="floating-title">
|
2667
|
+
<attribute name="id">
|
2668
|
+
<data type="ID"/>
|
2669
|
+
</attribute>
|
2670
|
+
<attribute name="depth">
|
2671
|
+
<data type="int"/>
|
2672
|
+
</attribute>
|
2673
|
+
<zeroOrMore>
|
2674
|
+
<ref name="TextElement"/>
|
2675
|
+
</zeroOrMore>
|
2676
|
+
</element>
|
2677
|
+
</define>
|
2678
|
+
<define name="XrefBody">
|
2679
|
+
<zeroOrMore>
|
2680
|
+
<ref name="XrefTarget"/>
|
2681
|
+
</zeroOrMore>
|
2682
|
+
<oneOrMore>
|
2683
|
+
<ref name="PureTextElement"/>
|
2684
|
+
</oneOrMore>
|
2685
|
+
</define>
|
2686
|
+
<define name="XrefTarget">
|
2687
|
+
<element name="location">
|
2688
|
+
<attribute name="target">
|
2689
|
+
<data type="string">
|
2690
|
+
<param name="pattern">\i\c*|\c+#\c+</param>
|
2691
|
+
</data>
|
2692
|
+
</attribute>
|
2693
|
+
<attribute name="connective">
|
2694
|
+
<choice>
|
2695
|
+
<value>and</value>
|
2696
|
+
<value>or</value>
|
2697
|
+
<value>from</value>
|
2698
|
+
<value>to</value>
|
2699
|
+
<value/>
|
2700
|
+
</choice>
|
2701
|
+
</attribute>
|
2702
|
+
</element>
|
2703
|
+
</define>
|
2519
2704
|
</grammar>
|
File without changes
|
data/lib/metanorma-ietf.rb
CHANGED
@@ -2,7 +2,7 @@ require "asciidoctor" unless defined? Asciidoctor::Converter
|
|
2
2
|
require "metanorma"
|
3
3
|
|
4
4
|
require_relative "metanorma/ietf"
|
5
|
-
require_relative "
|
5
|
+
require_relative "metanorma/ietf/converter"
|
6
6
|
require_relative "isodoc/ietf/rfc_convert"
|
7
7
|
|
8
8
|
Metanorma::Registry.instance.register(Metanorma::Ietf::Processor)
|
data/metanorma-ietf.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.license = "BSD-2-Clause"
|
29
29
|
|
30
30
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
31
|
-
f.match(%r{^(test|spec|features)/})
|
31
|
+
f.match(%r{^(bin|test|spec|features)/})
|
32
32
|
end
|
33
33
|
spec.bindir = "exe"
|
34
34
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
|
38
38
|
spec.add_dependency "mathml2asciimath"
|
39
39
|
spec.add_dependency "metanorma-ietf-data"
|
40
|
-
spec.add_dependency "metanorma-standoc", "~>
|
40
|
+
spec.add_dependency "metanorma-standoc", "~> 2.0.0"
|
41
41
|
|
42
42
|
spec.add_development_dependency "debug"
|
43
43
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-ietf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mathml2asciimath
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 2.0.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: debug
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -235,26 +235,9 @@ files:
|
|
235
235
|
- LICENSE
|
236
236
|
- README.adoc
|
237
237
|
- Rakefile
|
238
|
-
- bin/asciidoctor-rfc2
|
239
|
-
- bin/asciidoctor-rfc2.bat
|
240
|
-
- bin/asciidoctor-rfc3
|
241
|
-
- bin/console
|
242
|
-
- bin/rspec
|
243
|
-
- bin/setup
|
244
238
|
- docs/installation.md
|
245
239
|
- docs/navigation.md
|
246
240
|
- docs/overview.md
|
247
|
-
- lib/asciidoctor/ietf/basicdoc.rng
|
248
|
-
- lib/asciidoctor/ietf/biblio.rng
|
249
|
-
- lib/asciidoctor/ietf/blocks.rb
|
250
|
-
- lib/asciidoctor/ietf/cleanup.rb
|
251
|
-
- lib/asciidoctor/ietf/converter.rb
|
252
|
-
- lib/asciidoctor/ietf/front.rb
|
253
|
-
- lib/asciidoctor/ietf/ietf.rng
|
254
|
-
- lib/asciidoctor/ietf/isodoc.rng
|
255
|
-
- lib/asciidoctor/ietf/macros.rb
|
256
|
-
- lib/asciidoctor/ietf/reqt.rng
|
257
|
-
- lib/asciidoctor/ietf/validate.rb
|
258
241
|
- lib/isodoc/ietf/SVG-1.2-RFC.rng
|
259
242
|
- lib/isodoc/ietf/blocks.rb
|
260
243
|
- lib/isodoc/ietf/cleanup.rb
|
@@ -277,7 +260,18 @@ files:
|
|
277
260
|
- lib/isodoc/ietf/xref.rb
|
278
261
|
- lib/metanorma-ietf.rb
|
279
262
|
- lib/metanorma/ietf.rb
|
263
|
+
- lib/metanorma/ietf/basicdoc.rng
|
264
|
+
- lib/metanorma/ietf/biblio.rng
|
265
|
+
- lib/metanorma/ietf/blocks.rb
|
266
|
+
- lib/metanorma/ietf/cleanup.rb
|
267
|
+
- lib/metanorma/ietf/converter.rb
|
268
|
+
- lib/metanorma/ietf/front.rb
|
269
|
+
- lib/metanorma/ietf/ietf.rng
|
270
|
+
- lib/metanorma/ietf/isodoc.rng
|
271
|
+
- lib/metanorma/ietf/macros.rb
|
280
272
|
- lib/metanorma/ietf/processor.rb
|
273
|
+
- lib/metanorma/ietf/reqt.rng
|
274
|
+
- lib/metanorma/ietf/validate.rb
|
281
275
|
- lib/metanorma/ietf/version.rb
|
282
276
|
- metanorma-ietf.gemspec
|
283
277
|
- rfc2629-other.ent
|
@@ -302,7 +296,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
302
296
|
- !ruby/object:Gem::Version
|
303
297
|
version: '0'
|
304
298
|
requirements: []
|
305
|
-
rubygems_version: 3.2.
|
299
|
+
rubygems_version: 3.2.32
|
306
300
|
signing_key:
|
307
301
|
specification_version: 4
|
308
302
|
summary: metanorma-ietf lets you write IETF documents, such as Internet-Drafts and
|
data/bin/asciidoctor-rfc2
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "metanorma-ietf"
|
4
|
-
require "asciidoctor/cli"
|
5
|
-
|
6
|
-
options = Asciidoctor::Cli::Options.new backend: "rfc2", header_footer: true
|
7
|
-
# FIXME This is a really bizarre API. Please make me simpler.
|
8
|
-
|
9
|
-
exit 0 if options.parse!(ARGV) == 0
|
10
|
-
|
11
|
-
invoker = Asciidoctor::Cli::Invoker.new options
|
12
|
-
GC.start
|
13
|
-
invoker.invoke!
|
14
|
-
exit invoker.code
|
data/bin/asciidoctor-rfc2.bat
DELETED
data/bin/asciidoctor-rfc3
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "metanorma-ietf"
|
4
|
-
require "asciidoctor/cli"
|
5
|
-
|
6
|
-
options = Asciidoctor::Cli::Options.new backend: "rfc3", header_footer: true
|
7
|
-
# FIXME This is a really bizarre API. Please make me simpler.
|
8
|
-
|
9
|
-
exit 0 if options.parse!(ARGV) == 0
|
10
|
-
|
11
|
-
invoker = Asciidoctor::Cli::Invoker.new options
|
12
|
-
GC.start
|
13
|
-
invoker.invoke!
|
14
|
-
exit invoker.code
|
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "metanorma-ietf"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
data/bin/rspec
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'rspec' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require "pathname"
|
10
|
-
ENV["BUNDLE_GEMFILE"] ||= File.expand_path(
|
11
|
-
"../../Gemfile", Pathname.new(__FILE__).realpath
|
12
|
-
)
|
13
|
-
|
14
|
-
require "rubygems"
|
15
|
-
require "bundler/setup"
|
16
|
-
|
17
|
-
load Gem.bin_path("rspec-core", "rspec")
|