kramdown-rfc2629 1.6.32 → 1.6.33
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/kramdown-rfc-extract-sourcecode +6 -1
- data/kramdown-rfc2629.gemspec +1 -1
- data/lib/kramdown-rfc/rfc8792.rb +32 -0
- data/lib/kramdown-rfc2629.rb +7 -4
- 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: d4c663bed0e8e2dc848a9e532ba201b9e9a26b4090368c0d83f8c518275df710
|
4
|
+
data.tar.gz: a2ac5d0be0615b41ecd65964ca7dfd61e3163fbb3aa612994fa5ac05ae1504ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90ef1269825ef2b9484fc358cf92fa7ffa1ce255ea6e0b520cf99e98ed9f463551bf060d9af84de1ef87f0bd2e8a12442c4b9dc866858e1ed18bf23d4084829a
|
7
|
+
data.tar.gz: 840c014bc4efcabb1491e81126f577541bb237b0fa92a06fdaa293556eed480997829a357728da96caadc480347d32ddfb3be76a8e7027c986c775adff9babc7
|
@@ -3,6 +3,7 @@ require 'rexml/document' # for SVG and bibxml acrobatics
|
|
3
3
|
require 'yaml'
|
4
4
|
require 'shellwords'
|
5
5
|
require 'fileutils'
|
6
|
+
require_relative '../lib/kramdown-rfc/rfc8792'
|
6
7
|
|
7
8
|
def clean(s)
|
8
9
|
s.gsub!(/\//, ":")
|
@@ -12,6 +13,7 @@ end
|
|
12
13
|
|
13
14
|
target = nil
|
14
15
|
dir = nil
|
16
|
+
unfold = true
|
15
17
|
targets = [:list, :files, :zip, :yaml]
|
16
18
|
require 'optparse'
|
17
19
|
begin
|
@@ -23,6 +25,9 @@ begin
|
|
23
25
|
opts.on("-dDIR", "--dir=DIR", "Target directory (default: sourcecode)") do |v|
|
24
26
|
dir = v
|
25
27
|
end
|
28
|
+
opts.on("-f", "--[no-]unfold", "RFC8972-unfold (default: yes)") do |v|
|
29
|
+
unfold = v
|
30
|
+
end
|
26
31
|
end
|
27
32
|
op.parse!
|
28
33
|
rescue Exception => e
|
@@ -56,7 +61,7 @@ REXML::XPath.each(d.root, "//sourcecode|//artwork") do |x|
|
|
56
61
|
else
|
57
62
|
taken[ty][name] = ''
|
58
63
|
end
|
59
|
-
taken[ty][name] << x.text
|
64
|
+
taken[ty][name] << handle_artwork_sourcecode(x.text, unfold)
|
60
65
|
end
|
61
66
|
end
|
62
67
|
|
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.6.
|
3
|
+
s.version = '1.6.33'
|
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/rfc8792.rb
CHANGED
@@ -6,8 +6,40 @@ def remove_indentation(s)
|
|
6
6
|
l.map {|li| li.sub(/^ {0,#{indent}}/, "")}.join
|
7
7
|
end
|
8
8
|
|
9
|
+
def trim_empty_lines_around(s) # this deletes the trailing newline, which may need to be reconstructed
|
10
|
+
s.sub(/\A(\r?\n)*/, '').sub(/(\r?\n)*\z/, '')
|
11
|
+
end
|
12
|
+
|
13
|
+
def fix_unterminated_line(s)
|
14
|
+
s.sub(/[^\n]\z/) { "#$&\n" } # XXX
|
15
|
+
end
|
16
|
+
|
17
|
+
def handle_artwork_sourcecode(s, unfold = true)
|
18
|
+
s = trim_empty_lines_around(s)
|
19
|
+
s = unfold8792(s) if unfold
|
20
|
+
fix_unterminated_line(s)
|
21
|
+
end
|
9
22
|
|
10
23
|
FOLD_MSG = "NOTE: '\\' line wrapping per RFC 8792".freeze
|
24
|
+
UNFOLD_RE = /\A.*#{FOLD_MSG.sub("\\", "(\\\\\\\\\\\\\\\\?)")}.*\n\r?\n/
|
25
|
+
|
26
|
+
def unfold8792(s)
|
27
|
+
if s =~ UNFOLD_RE
|
28
|
+
indicator = $1
|
29
|
+
s = $'
|
30
|
+
sub = case indicator
|
31
|
+
when "\\"
|
32
|
+
s.gsub!(/\\\n[ \t]*/, '')
|
33
|
+
when "\\\\"
|
34
|
+
s.gsub!(/\\\n[ \t]*\\/, '')
|
35
|
+
else
|
36
|
+
fail "indicator" # Cannot happen
|
37
|
+
end
|
38
|
+
warn "** encountered RFC 8792 header without folded lines" unless sub
|
39
|
+
end
|
40
|
+
s
|
41
|
+
end
|
42
|
+
|
11
43
|
MIN_FOLD_COLUMNS = FOLD_MSG.size
|
12
44
|
FOLD_COLUMNS = 69
|
13
45
|
RE_IDENT = /\A[A-Za-z0-9_]\z/
|
data/lib/kramdown-rfc2629.rb
CHANGED
@@ -696,7 +696,7 @@ COLORS
|
|
696
696
|
fold = [$1.to_i, # col 0 for ''
|
697
697
|
($3.to_i if $2), # left 0 for '', nil if no "left"
|
698
698
|
$4] # dry
|
699
|
-
result = fold8792_1(result, *fold)
|
699
|
+
result = fix_unterminated_line(fold8792_1(trim_empty_lines_around(result), *fold)) # XXX
|
700
700
|
when "yaml2json"
|
701
701
|
begin
|
702
702
|
y = YAML.safe_load(result, aliases: true, filename: loc_str)
|
@@ -714,16 +714,19 @@ COLORS
|
|
714
714
|
preprocs.each do |proc|
|
715
715
|
result = sourcecode_proc(proc, loc_str, result)
|
716
716
|
end if preprocs
|
717
|
+
check_input = result
|
717
718
|
checks.each do |check|
|
718
719
|
case check
|
720
|
+
when "skipheader"
|
721
|
+
check_input = handle_artwork_sourcecode(check_input).sub(/.*?\n\n/m, '')
|
719
722
|
when "json"
|
720
|
-
#
|
723
|
+
# check for 8792; undo if needed:
|
721
724
|
begin
|
722
|
-
JSON.load(
|
725
|
+
JSON.load(handle_artwork_sourcecode(check_input))
|
723
726
|
rescue => e
|
724
727
|
err1 = "*** #{loc_str}: JSON isn't: #{JSON.dump(e.message[0..40])}\n"
|
725
728
|
begin
|
726
|
-
JSON.load("{" <<
|
729
|
+
JSON.load("{" << check_input << "}")
|
727
730
|
rescue => e
|
728
731
|
warn err1 << "*** not even with braces added around: #{JSON.dump(e.message[0..40])}"
|
729
732
|
end
|
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.6.
|
4
|
+
version: 1.6.33
|
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-04-
|
11
|
+
date: 2023-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|