kramdown-rfc2629 1.7.38 → 1.7.40
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/README.md +13 -2
- data/kramdown-rfc2629.gemspec +1 -1
- data/lib/kramdown-rfc/command.rb +10 -5
- data/lib/kramdown-rfc/rfc8792.rb +24 -6
- data/lib/kramdown-rfc2629.rb +2 -4
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8169f0e77f49dec5dd3ebe8880bb1329ed159ea5553d76f68eb4ff3d9425f8e4
|
|
4
|
+
data.tar.gz: dbd77ffa24df6367900d97eb5835abfd0bc1fb3164865718e3e5b48b91251c09
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8fe768ffe85a62f7a2d15e976f5e00403d7aeaca282276d1ce4ddbe788c29b2fc6beb4edab9c93c817589b589ec1af68ebb2b50d1b9c6b05fa5bbc8d71090553
|
|
7
|
+
data.tar.gz: 862c708667b6cc2d62de66eec9254b16ba2395afd5d0e109e72e6baa1ac78c737c1ffe1c7d2e977f005ddd7d10de97706daf2e4448b46886061198bf918b3542
|
data/README.md
CHANGED
|
@@ -12,10 +12,11 @@ Who would care? Anybody who is writing Internet-Drafts and RFCs in
|
|
|
12
12
|
the [IETF][] and prefers (or has co-authors who prefer) to do part of
|
|
13
13
|
their work in markdown.
|
|
14
14
|
|
|
15
|
-
kramdown-rfc is documented on this page,
|
|
16
|
-
[the wiki][].
|
|
15
|
+
kramdown-rfc is documented on this page, as well as on
|
|
16
|
+
[the wiki][] and via a "[Rosetta Stone]" maintained by the RFC Production Center.
|
|
17
17
|
|
|
18
18
|
[the wiki]: https://github.com/cabo/kramdown-rfc/wiki
|
|
19
|
+
[Rosetta Stone]: https://authors.ietf.org/en/rfcxml-markdown-syntax-tables
|
|
19
20
|
|
|
20
21
|
# Usage
|
|
21
22
|
|
|
@@ -549,6 +550,16 @@ machine-generated:
|
|
|
549
550
|
{: #example2 title="A longer RPL example"}
|
|
550
551
|
```
|
|
551
552
|
|
|
553
|
+
Include flags can be combined and appended to the command name:
|
|
554
|
+
|
|
555
|
+
```markdown
|
|
556
|
+
{::include-dedent-lines3..8 generated.txt}
|
|
557
|
+
{::include-fold69hardleft4dry generated.json}
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
Details about include flags can be found in the kramdown-rfc wiki: https://github.com/cabo/kramdown-rfc/wiki/Syntax#file-inclusion
|
|
561
|
+
|
|
562
|
+
|
|
552
563
|
(0.x:) A page break can be forced by adding a horizontal rule (`----`,
|
|
553
564
|
note that this creates ugly blank space in some HTML converters).
|
|
554
565
|
|
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.40'
|
|
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/command.rb
CHANGED
|
@@ -65,13 +65,18 @@ def process_includes(input)
|
|
|
65
65
|
$2)
|
|
66
66
|
when "data"
|
|
67
67
|
data = true
|
|
68
|
-
when
|
|
69
|
-
fold =
|
|
70
|
-
($3.to_i if $2), # left 0 for '', nil if no "left"
|
|
71
|
-
$4] # dry
|
|
68
|
+
when ::FOLD8792_PROC_RE
|
|
69
|
+
fold = fold8792_options(Regexp.last_match)
|
|
72
70
|
when "all", "last"
|
|
71
|
+
fn_in = fn
|
|
73
72
|
fn = fn.flat_map{|n| Dir[n]}
|
|
74
|
-
|
|
73
|
+
if flag == "last"
|
|
74
|
+
if last = fn.last
|
|
75
|
+
fn = [last]
|
|
76
|
+
else
|
|
77
|
+
warn "** include-last: no file matches #{fn_in.inspect}"
|
|
78
|
+
end
|
|
79
|
+
end
|
|
75
80
|
chunks = fn.map{ |f|
|
|
76
81
|
ret = process_chunk(File.read(f), nested, dedent, range, fold, quote, xml, data)
|
|
77
82
|
nested = false; dedent = false; fold = false; quote = false
|
data/lib/kramdown-rfc/rfc8792.rb
CHANGED
|
@@ -22,6 +22,13 @@ end
|
|
|
22
22
|
|
|
23
23
|
FOLD_MSG = "NOTE: '\\' line wrapping per RFC 8792".freeze
|
|
24
24
|
UNFOLD_RE = /\A.*#{FOLD_MSG.sub("\\", "(\\\\\\\\\\\\\\\\?)")}.*\n\r?\n/
|
|
25
|
+
# use indent as preferred synonym over smart
|
|
26
|
+
FOLD8792_PROC_RE = /\Afold(?<columns>\d*)(?<hard>hard)?(?:(?<indent_type>left|smart|indent)(?<spaces>\d*))?(?<dry>dry)?\z/
|
|
27
|
+
|
|
28
|
+
def fold8792_options(md)
|
|
29
|
+
indent_type = md[:indent_type].to_sym if md[:indent_type]
|
|
30
|
+
[md[:columns].to_i, indent_type, (md[:spaces] || 0).to_i, md[:dry], md[:hard]]
|
|
31
|
+
end
|
|
25
32
|
|
|
26
33
|
def unfold8792(s)
|
|
27
34
|
if s =~ UNFOLD_RE
|
|
@@ -44,7 +51,7 @@ MIN_FOLD_COLUMNS = FOLD_MSG.size
|
|
|
44
51
|
FOLD_COLUMNS = 69
|
|
45
52
|
RE_IDENT = /\A[A-Za-z0-9_]\z/
|
|
46
53
|
|
|
47
|
-
def fold8792_1(s, columns = FOLD_COLUMNS,
|
|
54
|
+
def fold8792_1(s, columns = FOLD_COLUMNS, indent_type = nil, indent_spaces = 0, dry = false, hard = false)
|
|
48
55
|
if s.index("\t")
|
|
49
56
|
warn "*** HT (\"TAB\") in text to be folded. Giving up."
|
|
50
57
|
return s
|
|
@@ -61,6 +68,7 @@ def fold8792_1(s, columns = FOLD_COLUMNS, left = false, dry = false)
|
|
|
61
68
|
|
|
62
69
|
lines = s.lines.map(&:chomp)
|
|
63
70
|
did_fold = false
|
|
71
|
+
smart_indent = nil
|
|
64
72
|
ix = 0
|
|
65
73
|
while li = lines[ix]
|
|
66
74
|
col = columns
|
|
@@ -69,18 +77,28 @@ def fold8792_1(s, columns = FOLD_COLUMNS, left = false, dry = false)
|
|
|
69
77
|
lines[ix..ix] = [li << "\\", ""]
|
|
70
78
|
ix += 1
|
|
71
79
|
end
|
|
80
|
+
smart_indent = nil
|
|
72
81
|
ix += 1
|
|
73
82
|
else
|
|
74
83
|
did_fold = true
|
|
75
|
-
|
|
84
|
+
left_indent =
|
|
85
|
+
case indent_type
|
|
86
|
+
when :left
|
|
87
|
+
indent_spaces
|
|
88
|
+
when :smart, :indent
|
|
89
|
+
smart_indent ||= li[/\A */].size + indent_spaces
|
|
90
|
+
end
|
|
91
|
+
min_indent = left_indent || 0
|
|
76
92
|
col -= 1 # space for "\\"
|
|
77
93
|
while li[col] == " " # can't start new line with " "
|
|
78
94
|
col -= 1
|
|
79
95
|
end
|
|
80
96
|
if col <= min_indent
|
|
81
|
-
|
|
97
|
+
indent_msg = "with indent #{min_indent}" if indent_type
|
|
98
|
+
warn "*** Cannot RFC8792-fold1 to #{columns} cols #{indent_msg} |#{li.inspect}|"
|
|
99
|
+
smart_indent = nil
|
|
82
100
|
else
|
|
83
|
-
if RE_IDENT === li[col] # Don't split IDs
|
|
101
|
+
if !hard && RE_IDENT === li[col] # Don't split IDs
|
|
84
102
|
col2 = col
|
|
85
103
|
while col2 > min_indent && RE_IDENT === li[col2-1]
|
|
86
104
|
col2 -= 1
|
|
@@ -90,8 +108,8 @@ def fold8792_1(s, columns = FOLD_COLUMNS, left = false, dry = false)
|
|
|
90
108
|
end
|
|
91
109
|
end
|
|
92
110
|
rest = li[col..-1]
|
|
93
|
-
indent =
|
|
94
|
-
if !
|
|
111
|
+
indent = left_indent || columns - rest.size
|
|
112
|
+
if !left_indent && li[-1] == "\\"
|
|
95
113
|
indent -= 1 # leave space for next round
|
|
96
114
|
end
|
|
97
115
|
if indent > 0
|
data/lib/kramdown-rfc2629.rb
CHANGED
|
@@ -795,10 +795,8 @@ COLORS
|
|
|
795
795
|
case proc
|
|
796
796
|
when "dedent"
|
|
797
797
|
result = remove_indentation(result)
|
|
798
|
-
when
|
|
799
|
-
fold =
|
|
800
|
-
($3.to_i if $2), # left 0 for '', nil if no "left"
|
|
801
|
-
$4] # dry
|
|
798
|
+
when ::FOLD8792_PROC_RE
|
|
799
|
+
fold = fold8792_options(Regexp.last_match)
|
|
802
800
|
result = fix_unterminated_line(fold8792_1(trim_empty_lines_around(result), *fold)) # XXX
|
|
803
801
|
when /\Alines(\d*)\.\.(\.)?(\d*)\z/
|
|
804
802
|
range = Range.new($1.empty? ? nil : $1.to_i, # compensate for
|