kramdown-rfc2629 1.7.1 → 1.7.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/kramdown-rfc2629.gemspec +1 -1
- data/lib/kramdown-rfc/command.rb +9 -8
- data/lib/kramdown-rfc2629.rb +24 -3
- 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: 6fd72c01ed7024958d451c3342f16b8985dc145ef09a6e4d33ba2f3d290d81e4
|
4
|
+
data.tar.gz: 7ada0cb08e8481cfef450606bcfdaab0303a49b0306fdf5be7041121b57a1143
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c525300de7bf414755c50476de45b9842ab011965a2dcfa82206d9e614a12b482b958707021dc3fff51a6c66f98b39b55d3dd6556d001ec255b50fde926a82e9
|
7
|
+
data.tar.gz: 200cb7e1760cc81b628354dc2343eaee5595294d1334b16d17b1e47ed3bc2f83174ee588d9e5d50289aebf0b0f579b4ad635124779cc66e5578bd600f4e17b9f
|
data/kramdown-rfc2629.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'kramdown-rfc2629'
|
3
|
-
s.version = '1.7.
|
3
|
+
s.version = '1.7.2'
|
4
4
|
s.summary = "Kramdown extension for generating RFCXML (RFC 799x)."
|
5
5
|
s.description = %{An RFCXML (RFC 799x) generating backend for Thomas Leitner's
|
6
6
|
"kramdown" markdown parser. Mostly useful for RFC writers.}
|
data/lib/kramdown-rfc/command.rb
CHANGED
@@ -360,18 +360,19 @@ def xml_from_sections(input)
|
|
360
360
|
next if k == "fluff"
|
361
361
|
v.gsub!(/{{(#{
|
362
362
|
spacify_re(XSR_PREFIX)
|
363
|
-
})?(?:([?!])(-)?|(-))([\w._\-]+)(?:=([\w.\/_\-]+))?(#{
|
363
|
+
})?([\w.\/_\-]+@)?(?:([?!])(-)?|(-))([\w._\-]+)(?:=([\w.\/_\-]+))?(#{
|
364
364
|
XREF_TXT_SUFFIX
|
365
365
|
})?(#{
|
366
366
|
spacify_re(XSR_SUFFIX)
|
367
367
|
})?}}/) do |match|
|
368
368
|
xsr_prefix = $1
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
369
|
+
subref = $2
|
370
|
+
norminform = $3
|
371
|
+
replacing = $4 || $5
|
372
|
+
word = $6
|
373
|
+
bibref = $7
|
374
|
+
xrt_suffix = $8
|
375
|
+
xsr_suffix = $9
|
375
376
|
if replacing
|
376
377
|
if new = ref_replacements[word]
|
377
378
|
word = new
|
@@ -395,7 +396,7 @@ def xml_from_sections(input)
|
|
395
396
|
if norminform
|
396
397
|
norm_ref[word] ||= norminform == '!' # one normative ref is enough
|
397
398
|
end
|
398
|
-
"{{#{xsr_prefix}#{word}#{xrt_suffix}#{xsr_suffix}}}"
|
399
|
+
"{{#{xsr_prefix}#{subref}#{word}#{xrt_suffix}#{xsr_suffix}}}"
|
399
400
|
end
|
400
401
|
end
|
401
402
|
|
data/lib/kramdown-rfc2629.rb
CHANGED
@@ -78,6 +78,11 @@ module Kramdown
|
|
78
78
|
href.gsub(/\A(?:[0-9]|section-|u-|figure-|table-|iref-)/) { "_#{$&}" }
|
79
79
|
end
|
80
80
|
|
81
|
+
def rfc_mention(target1) # only works for RFCnnnn
|
82
|
+
target1 =~ /\A([A-Z]*)(.*)\z/
|
83
|
+
"#$1 #$2 "
|
84
|
+
end
|
85
|
+
|
81
86
|
def handle_bares(s, attr, format, href, last_join = nil)
|
82
87
|
if s.match(/\A(#{XREF_ANY}) and (#{XREF_ANY})\z/)
|
83
88
|
handle_bares($1, {}, nil, href, " and ")
|
@@ -86,13 +91,14 @@ module Kramdown
|
|
86
91
|
end
|
87
92
|
|
88
93
|
href = href.split(' ')[0] # Remove any trailing (...)
|
94
|
+
target1, target2 = href.split("@", 2)
|
89
95
|
multi = last_join != nil
|
90
96
|
(sn, s) = s.split(' ', 2)
|
91
97
|
loop do
|
92
98
|
m = s.match(/\A#{XREF_RE_M}(, (?:and )?| and )?/)
|
93
99
|
break if not m
|
94
100
|
|
95
|
-
if not multi and not m[2] and not m[3]
|
101
|
+
if not multi and not m[2] and not m[3] and not target2
|
96
102
|
# Modify |attr| if there is a single reference. This can only be
|
97
103
|
# used if there is only one section reference and the section part
|
98
104
|
# has no title.
|
@@ -110,9 +116,13 @@ module Kramdown
|
|
110
116
|
multi = true
|
111
117
|
s[m[0]] = ''
|
112
118
|
|
113
|
-
attr1 = { 'target' =>
|
119
|
+
attr1 = { 'target' => target1, 'section' => m[1], 'sectionFormat' => 'bare', 'text' => m[2] }
|
114
120
|
@tree.children << Element.new(:xref, nil, attr1)
|
115
|
-
|
121
|
+
andof = m[3] || last_join || " of "
|
122
|
+
if andof == " of " && target2
|
123
|
+
andof += rfc_mention(target1)
|
124
|
+
end
|
125
|
+
@tree.children << Element.new(:text, andof, {})
|
116
126
|
end
|
117
127
|
end
|
118
128
|
|
@@ -135,18 +145,22 @@ module Kramdown
|
|
135
145
|
else
|
136
146
|
href = @src[3]
|
137
147
|
attr = {}
|
148
|
+
handled_subref = false
|
138
149
|
if $options.v3
|
139
150
|
# match Section ... of ...; set section, sectionFormat
|
140
151
|
case href.gsub(/[\u00A0\s]+/, ' ') # may need nbsp and/or newlines
|
141
152
|
when /\A(#{SECTIONS_RE}) of (.*)\z/
|
142
153
|
href = $2
|
143
154
|
handle_bares($1, attr, "of", href)
|
155
|
+
handled_subref = true
|
144
156
|
when /\A(.*), (#{SECTIONS_RE})\z/
|
145
157
|
href = $1
|
146
158
|
handle_bares($2, attr, "comma", href)
|
159
|
+
handled_subref = true
|
147
160
|
when /\A(.*) \((#{SECTIONS_RE})\)\z/
|
148
161
|
href = $1
|
149
162
|
handle_bares($2, attr, "parens", href)
|
163
|
+
handled_subref = true
|
150
164
|
when /#{XREF_RE_M}<(.+)\z/
|
151
165
|
href = $3
|
152
166
|
if $2
|
@@ -168,6 +182,13 @@ module Kramdown
|
|
168
182
|
href = $1
|
169
183
|
attr['text'] = $2
|
170
184
|
end
|
185
|
+
target1, target2 = href.split("@", 2) # should do this only for sectionref...
|
186
|
+
if target2
|
187
|
+
href = target2
|
188
|
+
unless handled_subref
|
189
|
+
@tree.children << Element.new(:text, rfc_mention(target1), {})
|
190
|
+
end
|
191
|
+
end
|
171
192
|
href = self.class.idref_cleanup(href)
|
172
193
|
attr['target'] = href
|
173
194
|
el = Element.new(:xref, nil, attr)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kramdown-rfc2629
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.7.
|
4
|
+
version: 1.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-10-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|