kramdown-rfc2629 1.4.11 → 1.4.15
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/bin/kdrfc +1 -1
- data/bin/kramdown-rfc2629 +86 -60
- data/kramdown-rfc2629.gemspec +1 -1
- data/lib/kramdown-rfc2629.rb +5 -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: 3ec3a8a34552f96ed3950ba50d5473659fb48beeb11235828390613734647be4
|
4
|
+
data.tar.gz: 77c1681732519cffe53f44f2039b8d5fd3ffa93fc68bfa508546089ecc98e53d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca15e2ae0b6e0136e7e337dd51829534e0f668cd10c2997a017c4d38181c3fbb2f5f8d180f48b31523f5a4a3947ab8224f189e3e6d48b61aade39f8ba4aff858
|
7
|
+
data.tar.gz: 8ebd377def30fe512a0a715d3690049b56e0eb4ea12cd16fadd449132519acee841e8f57bd9e152ef528355f983c4635cb8b141e9cc7cb3472601acd24633e86
|
data/bin/kdrfc
CHANGED
@@ -127,7 +127,7 @@ BANNER
|
|
127
127
|
opts.on("-p", "--[no-]prep", "Convert xml to prepped xml") do |v|
|
128
128
|
$options.prep = v
|
129
129
|
end
|
130
|
-
opts.on("-P", "--[no-]pdf", "Convert xml to PDF") do |v|
|
130
|
+
opts.on("-P", "-f", "--[no-]pdf", "Convert xml to PDF") do |v|
|
131
131
|
$options.pdf = v
|
132
132
|
end
|
133
133
|
opts.on("-c", "--[no-]convert", "Convert xml to v3 xml") do |v|
|
data/bin/kramdown-rfc2629
CHANGED
@@ -14,21 +14,29 @@ Encoding.default_external = "UTF-8" # wake up, smell the coffee
|
|
14
14
|
|
15
15
|
def boilerplate(key)
|
16
16
|
case key.downcase
|
17
|
-
when /\Abcp14(\+)?(-tagged)?\z/i
|
18
|
-
ret =
|
17
|
+
when /\Abcp14(info)?(\+)?(-tagged)?\z/i
|
18
|
+
ret = ''
|
19
|
+
if $1
|
20
|
+
ret << <<RFC8174ise
|
21
|
+
Although this document is not an IETF Standards Track publication, it
|
22
|
+
adopts the conventions for normative language to provide clarity of
|
23
|
+
instructions to the implementer.
|
24
|
+
RFC8174ise
|
25
|
+
end
|
26
|
+
ret << <<RFC8174
|
19
27
|
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
|
20
28
|
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
|
21
29
|
"MAY", and "OPTIONAL" in this document are to be interpreted as
|
22
30
|
described in BCP 14 {{!RFC2119}} {{!RFC8174}} when, and only when, they
|
23
31
|
appear in all capitals, as shown here.
|
24
32
|
RFC8174
|
25
|
-
if $
|
33
|
+
if $2
|
26
34
|
ret << <<PLUS
|
27
35
|
These words may also appear in this document in
|
28
36
|
lower case as plain English words, absent their normative meanings.
|
29
37
|
PLUS
|
30
38
|
end
|
31
|
-
if $
|
39
|
+
if $3
|
32
40
|
if $options.v3
|
33
41
|
ret << <<TAGGED
|
34
42
|
|
@@ -83,10 +91,68 @@ NORMINFORM = { "!" => :normative, "?" => :informative }
|
|
83
91
|
|
84
92
|
def yaml_load(input, *args)
|
85
93
|
if YAML.respond_to?(:safe_load)
|
86
|
-
|
94
|
+
begin
|
95
|
+
YAML.safe_load(input, *args)
|
96
|
+
rescue ArgumentError
|
97
|
+
YAML.safe_load(input, permitted_classes: args[0], permitted_symbols: args[1], aliases: args[2])
|
98
|
+
end
|
87
99
|
else
|
88
100
|
YAML.load(input)
|
89
|
-
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def process_kramdown_options(coding_override = nil,
|
105
|
+
smart_quotes = nil, typographic_symbols = nil,
|
106
|
+
header_kramdown_options = nil)
|
107
|
+
|
108
|
+
ascii_target = coding_override && coding_override =~ /ascii/
|
109
|
+
suppress_typography = ascii_target || $options.v3
|
110
|
+
entity_output = ascii_target ? :numeric : :as_char;
|
111
|
+
|
112
|
+
options = {input: 'RFC2629Kramdown', entity_output: entity_output, link_defs: {}}
|
113
|
+
|
114
|
+
if smart_quotes.nil? && suppress_typography
|
115
|
+
smart_quotes = false
|
116
|
+
end
|
117
|
+
if smart_quotes == false
|
118
|
+
smart_quotes = ["'".ord, "'".ord, '"'.ord, '"'.ord]
|
119
|
+
end
|
120
|
+
case smart_quotes
|
121
|
+
when Array
|
122
|
+
options[:smart_quotes] = smart_quotes
|
123
|
+
when nil, true
|
124
|
+
# nothin
|
125
|
+
else
|
126
|
+
warn "*** Can't deal with smart_quotes value #{smart_quotes.inspect}"
|
127
|
+
end
|
128
|
+
|
129
|
+
if typographic_symbols.nil? && suppress_typography
|
130
|
+
typographic_symbols = false
|
131
|
+
end
|
132
|
+
if typographic_symbols == false
|
133
|
+
typographic_symbols = Hash[::Kramdown::Parser::Kramdown::TYPOGRAPHIC_SYMS.map { |k, v|
|
134
|
+
if Symbol === v
|
135
|
+
[v.intern, k]
|
136
|
+
end
|
137
|
+
}.compact]
|
138
|
+
end
|
139
|
+
# warn [:TYPOGRAPHIC_SYMBOLS, typographic_symbols].to_yaml
|
140
|
+
case typographic_symbols
|
141
|
+
when Hash
|
142
|
+
options[:typographic_symbols] = typographic_symbols
|
143
|
+
when nil, true
|
144
|
+
# nothin
|
145
|
+
else
|
146
|
+
warn "*** Can't deal with typographic_symbols value #{typographic_symbols.inspect}"
|
147
|
+
end
|
148
|
+
|
149
|
+
if header_kramdown_options
|
150
|
+
options.merge! header_kramdown_options
|
151
|
+
end
|
152
|
+
|
153
|
+
$global_markdown_options = options # For nested calls in bibref annotation processing and xref text
|
154
|
+
|
155
|
+
options
|
90
156
|
end
|
91
157
|
|
92
158
|
XREF_SECTIONS_RE = ::Kramdown::Parser::RFC2629Kramdown::SECTIONS_RE
|
@@ -115,10 +181,15 @@ def xml_from_sections(input)
|
|
115
181
|
# We put back the "---" plus gratuitous blank lines to hack the line number in errors
|
116
182
|
yaml_in = input[/---\s*/] << sections.shift[2]
|
117
183
|
ps = KramdownRFC::ParameterSet.new(yaml_load(yaml_in, [Date], [], true))
|
184
|
+
|
118
185
|
coding_override = ps.has(:coding)
|
119
186
|
smart_quotes = ps[:smart_quotes]
|
120
187
|
typographic_symbols = ps[:typographic_symbols]
|
121
|
-
|
188
|
+
header_kramdown_options = ps[:kramdown_options]
|
189
|
+
|
190
|
+
kramdown_options = process_kramdown_options(coding_override,
|
191
|
+
smart_quotes, typographic_symbols,
|
192
|
+
header_kramdown_options)
|
122
193
|
|
123
194
|
# all the other sections are put in a Hash, possibly concatenated from parts there
|
124
195
|
sechash = Hash.new{ |h,k| h[k] = ""}
|
@@ -231,13 +302,12 @@ def xml_from_sections(input)
|
|
231
302
|
end
|
232
303
|
|
233
304
|
stand_alone = ps[:stand_alone]
|
234
|
-
link_defs = {}
|
235
305
|
|
236
306
|
[:normative, :informative].each do |sn|
|
237
307
|
if refs = ps[sn]
|
238
308
|
refs.each do |k, v|
|
239
309
|
href = k.gsub(/\A[0-9]/) { "_#{$&}" } # can't start an IDREF with a number
|
240
|
-
link_defs[k] = ["##{href}", nil]
|
310
|
+
kramdown_options[:link_defs][k] = ["##{href}", nil] # allow [RFC2119] in addition to {{RFC2119}}
|
241
311
|
|
242
312
|
bibref = anchor_to_bibref[k] || k
|
243
313
|
bts, url = bibtagsys(bibref, k, stand_alone)
|
@@ -258,9 +328,7 @@ def xml_from_sections(input)
|
|
258
328
|
if bts && !v.delete("override")
|
259
329
|
warn "*** warning: explicit settings completely override canned bibxml in reference #{k}"
|
260
330
|
end
|
261
|
-
|
262
|
-
$global_markdown_options = options # For recursive calls in bibref annotation processing.
|
263
|
-
sechash[sn.to_s] << KramdownRFC::ref_to_xml(k, v)
|
331
|
+
sechash[sn.to_s] << KramdownRFC::ref_to_xml(href, v)
|
264
332
|
end
|
265
333
|
end
|
266
334
|
end
|
@@ -277,7 +345,7 @@ def xml_from_sections(input)
|
|
277
345
|
warn "*** sections left #{sechash.keys.inspect}!"
|
278
346
|
end
|
279
347
|
|
280
|
-
[input,
|
348
|
+
[input, kramdown_options, coding_override]
|
281
349
|
end
|
282
350
|
|
283
351
|
XML_RESOURCE_ORG_PREFIX = Kramdown::Converter::Rfc2629::XML_RESOURCE_ORG_PREFIX
|
@@ -359,7 +427,6 @@ if $options.verbose && $options.v3
|
|
359
427
|
warn "*** not much RFCXMLv3 stuff implemented yet"
|
360
428
|
end
|
361
429
|
|
362
|
-
coding_override = :as_char
|
363
430
|
input = ARGF.read
|
364
431
|
if input[0] == "\uFEFF"
|
365
432
|
warn "*** There is a leading byte order mark. Ignored."
|
@@ -380,59 +447,18 @@ if input =~ /[\t]/
|
|
380
447
|
input = expand_tabs(input)
|
381
448
|
end
|
382
449
|
|
383
|
-
link_defs = {}
|
384
450
|
if input =~ /\A---/ # this is a sectionized file
|
385
451
|
do_the_tls_dance unless ENV["KRAMDOWN_DONT_VERIFY_HTTPS"]
|
386
|
-
input,
|
452
|
+
input, options, coding_override = xml_from_sections(input)
|
453
|
+
else
|
454
|
+
options = process_kramdown_options # all default
|
387
455
|
end
|
388
456
|
if input =~ /\A<\?xml/ # if this is a whole XML file, protect it
|
389
457
|
input = "{::nomarkdown}\n#{input}\n{:/nomarkdown}\n"
|
390
458
|
end
|
391
|
-
options = {input: 'RFC2629Kramdown', entity_output: coding_override, link_defs: link_defs}
|
392
|
-
if smart_quotes.nil?
|
393
|
-
if (target_coding && target_coding =~ /ascii/) || $options.v3
|
394
|
-
smart_quotes = false
|
395
|
-
end
|
396
|
-
end
|
397
|
-
if smart_quotes == false
|
398
|
-
smart_quotes = ["'".ord, "'".ord, '"'.ord, '"'.ord]
|
399
|
-
end
|
400
|
-
case smart_quotes
|
401
|
-
when Array
|
402
|
-
options[:smart_quotes] = smart_quotes
|
403
|
-
when nil, true
|
404
|
-
# nothin
|
405
|
-
else
|
406
|
-
warn "*** Can't deal with smart_quotes value #{smart_quotes.inspect}"
|
407
|
-
end
|
408
|
-
if typographic_symbols.nil?
|
409
|
-
if (target_coding && target_coding =~ /ascii/) || $options.v3
|
410
|
-
typographic_symbols = false
|
411
|
-
end
|
412
|
-
end
|
413
|
-
if typographic_symbols == false
|
414
|
-
typographic_symbols = Hash[::Kramdown::Parser::Kramdown::TYPOGRAPHIC_SYMS.map { |k, v|
|
415
|
-
if Symbol === v
|
416
|
-
[v.intern, k]
|
417
|
-
end
|
418
|
-
}.compact]
|
419
|
-
end
|
420
|
-
# warn [:TYPOGRAPHIC_SYMBOLS, typographic_symbols].to_yaml
|
421
|
-
case typographic_symbols
|
422
|
-
when Hash
|
423
|
-
options[:typographic_symbols] = typographic_symbols
|
424
|
-
when nil, true
|
425
|
-
# nothin
|
426
|
-
else
|
427
|
-
warn "*** Can't deal with typographic_symbols value #{typographic_symbols.inspect}"
|
428
|
-
end
|
429
|
-
|
430
|
-
if kramdown_options
|
431
|
-
options.merge! kramdown_options
|
432
|
-
end
|
433
459
|
|
434
|
-
if
|
435
|
-
input = input.encode(Encoding.find(
|
460
|
+
if coding_override
|
461
|
+
input = input.encode(Encoding.find(coding_override), fallback: FALLBACK)
|
436
462
|
end
|
437
463
|
|
438
464
|
# warn "options: #{options.inspect}"
|
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.4.
|
3
|
+
s.version = '1.4.15'
|
4
4
|
s.summary = "Kramdown extension for generating RFC 7749 XML."
|
5
5
|
s.description = %{An RFC7749 (XML2RFC) generating backend for Thomas Leitner's
|
6
6
|
"kramdown" markdown parser. Mostly useful for RFC writers.}
|
data/lib/kramdown-rfc2629.rb
CHANGED
@@ -251,7 +251,10 @@ module Kramdown
|
|
251
251
|
require 'net/http/persistent'
|
252
252
|
$http = Net::HTTP::Persistent.new name: 'kramdown-rfc'
|
253
253
|
rescue Exception => e
|
254
|
-
warn "**
|
254
|
+
warn "** Not using persistent HTTP -- #{e}"
|
255
|
+
warn "** To silence this message and get full speed, try:"
|
256
|
+
warn "** gem install net-http-persistent"
|
257
|
+
warn "** If this doesn't work, you can ignore this warning."
|
255
258
|
end
|
256
259
|
end
|
257
260
|
|
@@ -917,6 +920,7 @@ COLORS
|
|
917
920
|
],
|
918
921
|
"W3C" => "bibxml4",
|
919
922
|
"3GPP" => "bibxml5",
|
923
|
+
"SDO-3GPP" => "bibxml5",
|
920
924
|
"ANSI" => "bibxml2",
|
921
925
|
"CCITT" => "bibxml2",
|
922
926
|
"FIPS" => "bibxml2",
|
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.4.
|
4
|
+
version: 1.4.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|