kramdown-rfc2629 1.0.41 → 1.0.42
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/kramdown-rfc2629 +4 -0
- data/kramdown-rfc2629.gemspec +1 -1
- data/lib/kramdown-rfc2629.rb +20 -8
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75ac2b119d2630278f0db1cb169ca40a25dc8f55
|
4
|
+
data.tar.gz: 013e491c8bcd6bb1d0b694919dd87813b958df2f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f229ee5ceeed8ae1d926ffbe72fefa90a7d37902aad0b78220db53653e5d95ad4721c79a4a7a22edd87608746dbf7a2428175b1ab2d21744081e67dd313fbbd
|
7
|
+
data.tar.gz: b8bfa1df8e6d4679992bae4297940a789bca034553d55e52f2fcec07f6c25f06d6bb117e737ef8b4128064562714c70f4980f67e7f276377809262a28a78e483
|
data/bin/kramdown-rfc2629
CHANGED
@@ -199,6 +199,10 @@ if input[0] == "\uFEFF"
|
|
199
199
|
warn "*** There is a leading byte order mark. Ignored."
|
200
200
|
input[0..0] = ''
|
201
201
|
end
|
202
|
+
if input[-1] != "\n"
|
203
|
+
# warn "*** added missing newline at end"
|
204
|
+
input << "\n" # fix #26
|
205
|
+
end
|
202
206
|
input.gsub!(/^\{::include\s+(.*?)\}/) {
|
203
207
|
File.read($1).chomp
|
204
208
|
} unless ENV["KRAMDOWN_SAFE"]
|
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.0.
|
3
|
+
s.version = '1.0.42'
|
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
@@ -408,11 +408,15 @@ module Kramdown
|
|
408
408
|
end
|
409
409
|
|
410
410
|
REFCACHEDIR = ENV["KRAMDOWN_REFCACHEDIR"] || ".refcache"
|
411
|
-
|
411
|
+
|
412
|
+
KRAMDOWN_OFFLINE = ENV["KRAMDOWN_OFFLINE"]
|
413
|
+
KRAMDOWN_REFCACHE_REFETCH = ENV["KRAMDOWN_REFCACHE_REFETCH"]
|
414
|
+
|
415
|
+
def get_and_cache_resource(url, tvalid = 7200, tn = Time.now)
|
412
416
|
Dir.mkdir(REFCACHEDIR) unless Dir.exists?(REFCACHEDIR)
|
413
417
|
fn = "#{REFCACHEDIR}/#{File.basename(url)}"
|
414
|
-
f = File.stat(fn) rescue nil
|
415
|
-
if !f || tn - f.ctime >= tvalid
|
418
|
+
f = File.stat(fn) rescue nil unless KRAMDOWN_REFCACHE_REFETCH
|
419
|
+
if !KRAMDOWN_OFFLINE && (!f || tn - f.ctime >= tvalid)
|
416
420
|
if f
|
417
421
|
message = "renewing (stale by #{"%.1f" % ((tn-f.ctime)/86400)} days)"
|
418
422
|
fetch_timeout = 10 # seconds, give up quickly if just renewing
|
@@ -457,17 +461,22 @@ module Kramdown
|
|
457
461
|
end
|
458
462
|
|
459
463
|
XML_RESOURCE_ORG_MAP = {
|
460
|
-
"RFC" => "bibxml",
|
464
|
+
"RFC" => ["bibxml", 86400*7], # these should change rarely
|
465
|
+
"I-D" => "bibxml3",
|
466
|
+
"W3C" => "bibxml4",
|
467
|
+
"3GPP" => "bibxml5",
|
461
468
|
"ANSI" => "bibxml2",
|
462
469
|
"CCITT" => "bibxml2",
|
463
470
|
"FIPS" => "bibxml2",
|
464
|
-
"IANA" => "bibxml2",
|
465
|
-
"IEEE" => "bibxml2",
|
471
|
+
# "IANA" => "bibxml2", overtaken by bibxml8
|
472
|
+
"IEEE" => "bibxml2", # now, how about bibxml6?
|
466
473
|
"ISO" => "bibxml2",
|
467
474
|
"ITU" => "bibxml2",
|
468
475
|
"NIST" => "bibxml2",
|
469
476
|
"OASIS" => "bibxml2",
|
470
477
|
"PKCS" => "bibxml2",
|
478
|
+
"DOI" => ["bibxml7", 86400], # 24 h cache at source anyway
|
479
|
+
"IANA" => ["bibxml8", 86400], # ditto
|
471
480
|
}
|
472
481
|
|
473
482
|
# XML_RESOURCE_ORG_HOST = ENV["XML_RESOURCE_ORG_HOST"] || "xml.resource.org"
|
@@ -475,6 +484,8 @@ module Kramdown
|
|
475
484
|
XML_RESOURCE_ORG_PREFIX = ENV["XML_RESOURCE_ORG_PREFIX"] ||
|
476
485
|
"https://#{XML_RESOURCE_ORG_HOST}/public/rfc"
|
477
486
|
|
487
|
+
KRAMDOWN_REFCACHETTL = (e = ENV["KRAMDOWN_REFCACHETTL"]) ? e.to_i : 3600
|
488
|
+
|
478
489
|
def convert_img(el, indent, opts) # misuse the tag!
|
479
490
|
if a = el.attr
|
480
491
|
alt = a.delete('alt').strip
|
@@ -487,10 +498,11 @@ module Kramdown
|
|
487
498
|
to_insert = ""
|
488
499
|
anchor.scan(/(W3C|3GPP|[A-Z-]+)[.]?([A-Za-z0-9.-]+)/) do |t, n|
|
489
500
|
fn = "reference.#{t}.#{n}.xml"
|
490
|
-
sub = XML_RESOURCE_ORG_MAP[t]
|
501
|
+
sub, ttl = XML_RESOURCE_ORG_MAP[t]
|
502
|
+
ttl ||= KRAMDOWN_REFCACHETTL # everything but RFCs might change a lot
|
491
503
|
puts "Huh: ${fn}" unless sub
|
492
504
|
url = "#{XML_RESOURCE_ORG_PREFIX}/#{sub}/#{fn}"
|
493
|
-
to_insert = get_and_cache_resource(url)
|
505
|
+
to_insert = get_and_cache_resource(url, ttl)
|
494
506
|
to_insert.scrub! rescue nil # only do this for Ruby >= 2.1
|
495
507
|
end
|
496
508
|
to_insert.gsub(/<\?xml version=["']1.0["'] encoding=["']UTF-8["']\?>/, '').
|