kramdown-rfc2629 1.3.34 → 1.4.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/bin/kdrfc +4 -0
- data/bin/kramdown-rfc-cache-i-d-bibxml +102 -0
- data/data/kramdown-rfc2629.erb +7 -0
- data/kramdown-rfc2629.gemspec +4 -3
- data/lib/kramdown-rfc2629.rb +45 -5
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fec107f9381d395a6a6000d553ed820c673ed113d4d7f652f16dfef98aebda64
|
4
|
+
data.tar.gz: 01ccac9bef6597540b689ae5a31600509d18adb489d56dc833940626397df7b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d926cdd5b45667c0e70bf6c00485795e97993b64f022199443a03c48ad3edca2078657274302dd93ed657bff0fd1d703dfe951981bfdb3d81ac4c86c033ef759
|
7
|
+
data.tar.gz: 21c2a803dd8203d23f0633e0ac9d254b857c4e84af378f63ae1160d48612d58b556b425c26f83e6fe211315d1e2ee3e9b520bab33fa5ecb3bfcdd33e10dddd1f
|
data/bin/kdrfc
CHANGED
@@ -127,6 +127,9 @@ 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|
|
131
|
+
$options.pdf = v
|
132
|
+
end
|
130
133
|
opts.on("-c", "--[no-]convert", "Convert xml to v3 xml") do |v|
|
131
134
|
$options.v2v3 = v
|
132
135
|
end
|
@@ -150,6 +153,7 @@ def process_the_xml(fn, base)
|
|
150
153
|
process_xml(fn, "#{base}.v2v3.xml", "--v2v3") if $options.v2v3
|
151
154
|
process_xml(fn, "#{base}.txt") if $options.txt || $options.idnits
|
152
155
|
process_xml(fn, "#{base}.html", "--html") if $options.html
|
156
|
+
process_xml(fn, "#{base}.pdf", "--pdf") if $options.pdf
|
153
157
|
run_idnits("#{base}.txt") if $options.idnits
|
154
158
|
end
|
155
159
|
|
@@ -0,0 +1,102 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# prerequisite:
|
3
|
+
# gem install net-http-persistent
|
4
|
+
#
|
5
|
+
# dumps all bibxml for current, "Active" I-Ds in cache
|
6
|
+
# reasonably efficient after initial call if the output is retained
|
7
|
+
#
|
8
|
+
# requires Ruby 2.4 or above because of "liberal_parsing" option
|
9
|
+
#
|
10
|
+
# uses ENV["KRAMDOWN_REFCACHEDIR"] for where you want to have your bibxml3 data
|
11
|
+
#
|
12
|
+
|
13
|
+
require 'csv'
|
14
|
+
require 'fileutils'
|
15
|
+
|
16
|
+
begin
|
17
|
+
require 'net/http/persistent'
|
18
|
+
rescue
|
19
|
+
warn "*** please install net-http-persistent:"
|
20
|
+
warn " gem install net-http-persistent"
|
21
|
+
warn "(prefix by sudo only if required)."
|
22
|
+
exit 72 # EX_OSFILE
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
TARGET_DIR = ENV["KRAMDOWN_REFCACHEDIR"] || (
|
27
|
+
path = File.expand_path("~/.cache/xml2rfc")
|
28
|
+
warn "*** set environment variable KRAMDOWN_REFCACHEDIR to #{path} to actually use the cache"
|
29
|
+
path
|
30
|
+
)
|
31
|
+
|
32
|
+
FileUtils.mkdir_p(TARGET_DIR)
|
33
|
+
FileUtils.chdir(TARGET_DIR)
|
34
|
+
|
35
|
+
$http = Net::HTTP::Persistent.new name: 'allid'
|
36
|
+
|
37
|
+
KRAMDOWN_PERSISTENT_VERBOSE = true
|
38
|
+
|
39
|
+
def get_and_write_resource_persistently(url, fn, age_verbose=false)
|
40
|
+
t1 = Time.now
|
41
|
+
response = $http.request(URI(url))
|
42
|
+
if response.code != "200"
|
43
|
+
raise "*** Status code #{response.code} while fetching #{url}"
|
44
|
+
else
|
45
|
+
File.write(fn, response.body)
|
46
|
+
end
|
47
|
+
t2 = Time.now
|
48
|
+
warn "#{url} -> #{fn} (#{"%.3f" % (t2 - t1)} s)" if KRAMDOWN_PERSISTENT_VERBOSE
|
49
|
+
if age_verbose
|
50
|
+
if age = response.get_fields("age")
|
51
|
+
warn "(working from a web cache, index is #{age.first} seconds stale)"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
CLEAR_RET = "\e[K\r" # XXX all the world is ECMA-48 (ISO 6429), no?
|
57
|
+
|
58
|
+
def noisy(name)
|
59
|
+
print "#{name}...#{CLEAR_RET}"
|
60
|
+
end
|
61
|
+
def clear_noise
|
62
|
+
print CLEAR_RET
|
63
|
+
end
|
64
|
+
|
65
|
+
ALL_ID2_SOURCE = "https://www.ietf.org/id/all_id2.txt"
|
66
|
+
ALL_ID2_COPY = ".all_id2.txt"
|
67
|
+
|
68
|
+
get_and_write_resource_persistently(ALL_ID2_SOURCE, ALL_ID2_COPY, true) unless ENV["KRAMDOWN_DONT_REFRESH_ALL_ID2"]
|
69
|
+
ix = File.read(ALL_ID2_COPY).lines.grep_v(/^#/).join
|
70
|
+
|
71
|
+
csv = CSV.new(ix, col_sep: "\t", liberal_parsing: true)
|
72
|
+
|
73
|
+
drafts = csv.read
|
74
|
+
active = drafts.select { |d| d[2] == "Active" }
|
75
|
+
active_names = active.map { |a| a[0] }
|
76
|
+
puts "#{active_names.size} active drafts"
|
77
|
+
|
78
|
+
active_names.each do |name|
|
79
|
+
if name =~ /\Adraft-(.*)-(\d\d)\z/
|
80
|
+
namepart = $1
|
81
|
+
version = $2
|
82
|
+
name0 = "reference.I-D.#{namepart}.xml"
|
83
|
+
noisy(name0) if File.exists?(name0)
|
84
|
+
name1 = "reference.I-D.draft-#{namepart}-#{version}.xml"
|
85
|
+
if File.exists?(name1)
|
86
|
+
noisy(name1)
|
87
|
+
FileUtils.touch(name0) # because name1 already exists, we believe name0 is fresh
|
88
|
+
else
|
89
|
+
begin
|
90
|
+
url0 = "https://datatracker.ietf.org/doc/bibxml3/draft-#{namepart}/xml"
|
91
|
+
get_and_write_resource_persistently(url0, name0) # get name0 first
|
92
|
+
url1 = "https://datatracker.ietf.org/doc/bibxml3/draft-#{namepart}-#{version}/xml"
|
93
|
+
get_and_write_resource_persistently(url1, name1) # then name1 to mark this as updated
|
94
|
+
rescue => e
|
95
|
+
warn "*** #{name0}: #{e}"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
else
|
99
|
+
warn "*** Malformed draft name: #{name}"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
clear_noise
|
data/data/kramdown-rfc2629.erb
CHANGED
@@ -108,6 +108,13 @@
|
|
108
108
|
aups = KramdownRFC::authorps_from_hash(au)
|
109
109
|
-%>
|
110
110
|
<%= KramdownRFC::person_element_from_aups("contact", aups) -%>
|
111
|
+
<%= if contrib = aups["contribution"]
|
112
|
+
<<CONTRIBUTION
|
113
|
+
{:/nomarkdown}
|
114
|
+
#{contrib}
|
115
|
+
{::nomarkdown}
|
116
|
+
CONTRIBUTION
|
117
|
+
end -%>
|
111
118
|
<% aups.warn_if_leftovers -%>
|
112
119
|
<% end -%>
|
113
120
|
<% end -%>
|
data/kramdown-rfc2629.gemspec
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'kramdown-rfc2629'
|
3
|
-
s.version = '1.
|
3
|
+
s.version = '1.4.2'
|
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.}
|
7
|
-
s.add_dependency('kramdown', '~>
|
7
|
+
s.add_dependency('kramdown', '~> 2.3.0')
|
8
8
|
s.add_dependency('certified', '~> 1.0')
|
9
9
|
s.add_dependency('json_pure', '~> 2.0')
|
10
10
|
s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kdrfc bin/kramdown-rfc2629 bin/doilit bin/kramdown-rfc-extract-markdown data/kramdown-rfc2629.erb data/encoding-fallbacks.txt data/math.json)
|
11
11
|
s.require_path = 'lib'
|
12
|
-
s.executables = ['kramdown-rfc2629', 'doilit', 'kramdown-rfc-extract-markdown',
|
12
|
+
s.executables = ['kramdown-rfc2629', 'doilit', 'kramdown-rfc-extract-markdown',
|
13
|
+
'kdrfc', 'kramdown-rfc-cache-i-d-bibxml']
|
13
14
|
s.required_ruby_version = '>= 2.3.0'
|
14
15
|
# s.requirements = 'wget'
|
15
16
|
# s.has_rdoc = true
|
data/lib/kramdown-rfc2629.rb
CHANGED
@@ -12,7 +12,7 @@ require 'shellwords'
|
|
12
12
|
|
13
13
|
raise "sorry, 1.8 was last decade" unless RUBY_VERSION >= '1.9'
|
14
14
|
|
15
|
-
gem 'kramdown', '~>
|
15
|
+
gem 'kramdown', '~> 2.3.0'
|
16
16
|
require 'kramdown'
|
17
17
|
my_span_elements = %w{list figure xref eref iref cref spanx vspace}
|
18
18
|
Kramdown::Parser::Html::Constants::HTML_SPAN_ELEMENTS.concat my_span_elements
|
@@ -38,6 +38,8 @@ module Kramdown
|
|
38
38
|
super
|
39
39
|
@span_parsers.unshift(:xref)
|
40
40
|
@span_parsers.unshift(:iref)
|
41
|
+
@span_parsers.unshift(:span_pi)
|
42
|
+
@block_parsers.unshift(:block_pi)
|
41
43
|
end
|
42
44
|
|
43
45
|
SECTIONS_RE = /Section(?:s (?:[\w.]+, )*[\w.]+,? and)? [\w.]+/
|
@@ -112,7 +114,7 @@ module Kramdown
|
|
112
114
|
end
|
113
115
|
@tree.children << el
|
114
116
|
end
|
115
|
-
define_parser(:xref, XREF_START, '{{')
|
117
|
+
define_parser(:xref, XREF_START, '\{\{')
|
116
118
|
|
117
119
|
IREF_START = /\(\(\((.*?)\)\)\)/u
|
118
120
|
|
@@ -125,6 +127,40 @@ module Kramdown
|
|
125
127
|
end
|
126
128
|
define_parser(:iref, IREF_START, '\(\(\(')
|
127
129
|
|
130
|
+
# HTML_INSTRUCTION_RE = /<\?(.*?)\?>/m # still defined!
|
131
|
+
|
132
|
+
# warn [:OPT_SPACE, OPT_SPACE, HTML_INSTRUCTION_RE].inspect
|
133
|
+
|
134
|
+
PI_BLOCK_START = /^#{OPT_SPACE}<\?/u
|
135
|
+
|
136
|
+
def parse_block_pi
|
137
|
+
# warn [:BLOCK].inspect
|
138
|
+
line = @src.current_line_number
|
139
|
+
if (result = @src.scan(HTML_INSTRUCTION_RE))
|
140
|
+
@tree.children << Element.new(:xml_pi, result, nil, category: :block, location: line)
|
141
|
+
@src.scan(TRAILING_WHITESPACE)
|
142
|
+
true
|
143
|
+
else
|
144
|
+
false
|
145
|
+
end
|
146
|
+
end
|
147
|
+
define_parser(:block_pi, PI_BLOCK_START)
|
148
|
+
|
149
|
+
PI_SPAN_START = /<\?/u
|
150
|
+
|
151
|
+
def parse_span_pi
|
152
|
+
# warn [:SPAN].inspect
|
153
|
+
line = @src.current_line_number
|
154
|
+
if (result = @src.scan(HTML_INSTRUCTION_RE))
|
155
|
+
@tree.children << Element.new(:xml_pi, result, nil, category: :span, location: line)
|
156
|
+
else
|
157
|
+
add_text(@src.getch)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
define_parser(:span_pi, PI_SPAN_START, '<\?')
|
161
|
+
|
162
|
+
# warn [:HERE, @@parsers.keys].inspect
|
163
|
+
|
128
164
|
end
|
129
165
|
end
|
130
166
|
|
@@ -363,7 +399,7 @@ COLORS
|
|
363
399
|
# warn ["goat:", result1.inspect]
|
364
400
|
file.unlink
|
365
401
|
result1 = svg_clean(result1) unless t == "goat"
|
366
|
-
result1, err, _s = Open3.capture3("svgcheck -
|
402
|
+
result1, err, _s = Open3.capture3("svgcheck -NXqa", stdin_data: result1);
|
367
403
|
capture_croak("svgcheck", err)
|
368
404
|
# warn ["svgcheck:", result1.inspect]
|
369
405
|
if result1 == ''
|
@@ -428,7 +464,7 @@ COLORS
|
|
428
464
|
"#{' '*indent}<figure#{el_html_attributes(el)}><artset><artwork #{html_attributes(artwork_attr.merge("type"=> "svg"))}>#{result1.sub(/.*?<svg/m, "<svg")}</artwork><artwork #{html_attributes(artwork_attr.merge("type"=> "ascii-art"))}><![CDATA[#{result}#{result =~ /\n\Z/ ? '' : "\n"}]]></artwork></artset></figure>\n"
|
429
465
|
else
|
430
466
|
gi ||= (
|
431
|
-
if !$options.v3 || !t || ARTWORK_TYPES.include?(t)
|
467
|
+
if !$options.v3 || !t || ARTWORK_TYPES.include?(t) || artwork_attr["align"]
|
432
468
|
"artwork"
|
433
469
|
else
|
434
470
|
"sourcecode"
|
@@ -662,7 +698,11 @@ COLORS
|
|
662
698
|
end
|
663
699
|
|
664
700
|
def convert_br(el, indent, opts)
|
665
|
-
|
701
|
+
if $options.v3
|
702
|
+
"<br />"
|
703
|
+
else
|
704
|
+
"<vspace />"
|
705
|
+
end
|
666
706
|
end
|
667
707
|
|
668
708
|
def convert_a(el, indent, opts)
|
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
|
+
version: 1.4.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: 2021-
|
11
|
+
date: 2021-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.3.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.3.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: certified
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,6 +61,7 @@ executables:
|
|
61
61
|
- doilit
|
62
62
|
- kramdown-rfc-extract-markdown
|
63
63
|
- kdrfc
|
64
|
+
- kramdown-rfc-cache-i-d-bibxml
|
64
65
|
extensions: []
|
65
66
|
extra_rdoc_files: []
|
66
67
|
files:
|
@@ -68,6 +69,7 @@ files:
|
|
68
69
|
- README.md
|
69
70
|
- bin/doilit
|
70
71
|
- bin/kdrfc
|
72
|
+
- bin/kramdown-rfc-cache-i-d-bibxml
|
71
73
|
- bin/kramdown-rfc-extract-markdown
|
72
74
|
- bin/kramdown-rfc2629
|
73
75
|
- data/encoding-fallbacks.txt
|