kramdown-rfc2629 1.7.3 → 1.7.4
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-rfc-extract-sourcecode +68 -6
- data/kramdown-rfc2629.gemspec +1 -1
- data/lib/kramdown-rfc2629.rb +4 -0
- 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: 6c60909608ac8c84853d39c03fdf0da2cdfd179601a63a5b07a52099925a8ce9
|
4
|
+
data.tar.gz: ce8fcfe62f77fc23a8a5514e329ade31864ac099f5a45c6bbce976e3a8210a1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b11fe08773c3e5c80aaaaeff16bf6728ab8656ee95ce0186bf786b2da2b99832b65b36fa32e7801e36b3f9c32b4e90830fa4c14f5136d0f7945c2c342ba17d1
|
7
|
+
data.tar.gz: 35a372c29219550c56a2335a497b3117621ac7b998792d596272fad84725a6f464a89bb931c9472a0ef4320eee40b69088e3f595ef8e6a028e7ba0a57e58436f
|
@@ -9,10 +9,35 @@ require_relative '../lib/kramdown-rfc/rexml-all-text.rb'
|
|
9
9
|
def clean(s)
|
10
10
|
s.gsub!(/\//, ":")
|
11
11
|
s.gsub!(/\A([-.]+)/) {"_" * $1.size }
|
12
|
-
s.gsub!(/[^-.:\w]
|
12
|
+
s.gsub!(/[^-.:\w]+/, "-")
|
13
13
|
s
|
14
14
|
end
|
15
15
|
|
16
|
+
$seen_slugs = {}
|
17
|
+
|
18
|
+
def slugify_like_xml2rfc(s, delta = 0)
|
19
|
+
s = s.unicode_normalize(:nfkd).force_encoding(Encoding::ASCII).scrub('').downcase
|
20
|
+
s.gsub!(/[^-\w\s\/]/, '')
|
21
|
+
s = s.strip
|
22
|
+
s.gsub!(/[-\s\/]/, '-')
|
23
|
+
n = 32 - delta
|
24
|
+
nmax = [s.size, 40 - delta].min
|
25
|
+
while $seen_slugs[slugex = s[0...n]] && n < nmax
|
26
|
+
n += 1
|
27
|
+
end
|
28
|
+
if $seen_slugs[slugex]
|
29
|
+
m = 2
|
30
|
+
while $seen_slugs[slugex = "#{s[0...n]}-#{m}"]
|
31
|
+
m += 1
|
32
|
+
if m == 1000
|
33
|
+
raise ArgumentError, "Can't build distinguishable slug for '#{s}'"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
$seen_slugs[slugex] = s
|
38
|
+
slugex
|
39
|
+
end
|
40
|
+
|
16
41
|
target = nil
|
17
42
|
dir = nil
|
18
43
|
unfold = true
|
@@ -52,17 +77,54 @@ warned = Hash.new { |h, k| h[k] = Hash.new }
|
|
52
77
|
d = REXML::Document.new(ARGF)
|
53
78
|
REXML::XPath.each(d.root, "//sourcecode|//artwork") do |x|
|
54
79
|
if ty = x[:type]
|
80
|
+
is_svg = false
|
81
|
+
REXML::XPath.each(x, "svg") do is_svg = true end
|
55
82
|
ty = clean(ty)
|
83
|
+
if is_svg && ty != "svg"
|
84
|
+
warn "** replacing SVG type '#{ty}' by type 'svg'"
|
85
|
+
ty = "svg"
|
86
|
+
end
|
87
|
+
ext = ty
|
88
|
+
if ty.empty?
|
89
|
+
ty = "=txt"
|
90
|
+
ext = "txt"
|
91
|
+
end
|
56
92
|
name = x[:name]
|
93
|
+
name_is_from_slug = false
|
57
94
|
if !name || name.empty?
|
58
|
-
name =
|
59
|
-
|
95
|
+
REXML::XPath.each(x, "ancestor::*/name[position() = 1]") do |nameel|
|
96
|
+
unless sname = nameel['slugifiedName']
|
97
|
+
alltext = nameel.all_text
|
98
|
+
nameel.add_attribute('slugifiedName',
|
99
|
+
sname = clean("name-" << slugify_like_xml2rfc(alltext, 5)))
|
100
|
+
end
|
101
|
+
name = clean(sname.to_s.sub(/^name-/, ''))
|
102
|
+
name_is_from_slug = true
|
103
|
+
end
|
104
|
+
if !name || name.empty?
|
105
|
+
name = gensym.succ!.dup
|
106
|
+
end
|
107
|
+
name = "#{name}.#{ext}"
|
60
108
|
end
|
61
109
|
name = clean(name)
|
62
110
|
if taken[ty][name]
|
63
|
-
|
64
|
-
|
65
|
-
|
111
|
+
if name_is_from_slug || is_svg
|
112
|
+
# rename old entry as well if it was from slug?
|
113
|
+
nameparts = name.split(".")
|
114
|
+
if is_svg && nameparts[-1] != "svg"
|
115
|
+
nameparts << "svg"
|
116
|
+
end
|
117
|
+
ext1 = nameparts.pop || "txt"
|
118
|
+
suffix = "b"
|
119
|
+
while taken[ty][name = [*nameparts[0...-1], "#{nameparts[-1]}-#{suffix}", ext1].join(".")]
|
120
|
+
suffix.succ!
|
121
|
+
end
|
122
|
+
taken[ty][name] = ''
|
123
|
+
else
|
124
|
+
unless warned[ty][name]
|
125
|
+
warn "Concatenating to #{ty}/#{name}."
|
126
|
+
warned[ty][name] = true
|
127
|
+
end
|
66
128
|
end
|
67
129
|
else
|
68
130
|
taken[ty][name] = ''
|
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.4'
|
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-rfc2629.rb
CHANGED
@@ -702,6 +702,10 @@ COLORS
|
|
702
702
|
checks = el.attr.delete("check")
|
703
703
|
postprocs = el.attr.delete("post")
|
704
704
|
case t
|
705
|
+
when "cbor"
|
706
|
+
warn "** There is no sourcecode-type “cbor”."
|
707
|
+
warn "** Do you mean “cbor-diag” (diagnostic notation)"
|
708
|
+
warn "** or “cbor-pretty” (annotated hex-dump)?"
|
705
709
|
when "json"
|
706
710
|
checks ||= "json"
|
707
711
|
when /\A(.*)-from-yaml\z/
|
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.4
|
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-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|