kramdown-rfc2629 1.5.21 → 1.5.22

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a2f9b627799934e130561b80d0625ee127bb67e340742ab9df6f309f069d2487
4
- data.tar.gz: fd3bb7cbbe1a54316d809844f12070836e18c5eb38286a00fc322c915bebd363
3
+ metadata.gz: 90fd02030501ff7ce234af8b2f2412b5c1372c8e865b368db995ab0a32347dc0
4
+ data.tar.gz: 31d7f8eed4b7adc64e8ff4458368e1380351089aa44478faf2987a78239d5cae
5
5
  SHA512:
6
- metadata.gz: 1d588638f3ae60b71555a23236546f0639f612774e38d8325515d9304154038cbedba463fa2c3fe3dedf028ab1b44ee9386325215114ef9a8a5c11029d57d9a6
7
- data.tar.gz: 6307e13b08a45165813ceec0ea1cc5e5cc9e788fcdc0024fee168979e87803eac96dca878288b7eee628f5a167a35c1079dcc1c411b2ad88fda0fcf11757eaf7
6
+ metadata.gz: a39fa3bf7a2703f958dbc443d1d8d850a0a89ec9797f619218e921cdadd372e4466f628a1a3dbf13f178163a16f92141026ac34bfd52c82f1950fd3780d187aa
7
+ data.tar.gz: f02da291a9a611a4cb21097c2f31ee490a6327558cf1d66018279c89ef5f56f4ad87884046b19e44d347d5946346d0108a017e19aabb6b0db180f53a9847430a
data/bin/kramdown-rfc2629 CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'kramdown-rfc2629'
4
4
  require 'kramdown-rfc/parameterset'
5
5
  require 'kramdown-rfc/refxml'
6
+ require 'kramdown-rfc/rfc8792'
6
7
  require 'yaml'
7
8
  require 'kramdown-rfc/erb'
8
9
  require 'date'
@@ -24,8 +25,9 @@ def add_quote(s)
24
25
  l.map {|li| "> #{li}"}.join
25
26
  end
26
27
 
27
- def process_chunk(s, dedent, quote)
28
+ def process_chunk(s, dedent, fold, quote)
28
29
  s = remove_indentation(s) if dedent
30
+ s = fold8792_1(s) if fold
29
31
  s = add_quote(s) if quote
30
32
  s
31
33
  end
@@ -460,6 +462,7 @@ input.gsub!(/^\{::include((?:-[a-z]+)*)\s+(.*?)\}/) {
460
462
  fn = [$2]
461
463
  chunks = false
462
464
  dedent = false
465
+ fold = false
463
466
  quote = false
464
467
  include_flags.split("-") do |flag|
465
468
  case flag
@@ -468,11 +471,13 @@ input.gsub!(/^\{::include((?:-[a-z]+)*)\s+(.*?)\}/) {
468
471
  quote = true
469
472
  when "dedent"
470
473
  dedent = true
474
+ when "fold"
475
+ fold = true
471
476
  when "all", "last"
472
477
  fn = fn.flat_map{|n| Dir[n]}
473
478
  fn = [fn.last] if flag == "last"
474
479
  chunks = fn.map{ |f|
475
- ret = process_chunk(File.read(f), dedent, quote)
480
+ ret = process_chunk(File.read(f), dedent, fold, quote)
476
481
  dedent = false; quote = false
477
482
  ret
478
483
  }
@@ -481,7 +486,7 @@ input.gsub!(/^\{::include((?:-[a-z]+)*)\s+(.*?)\}/) {
481
486
  end
482
487
  end
483
488
  chunks = fn.map{|f| File.read(f)} unless chunks # no all/last
484
- chunks = chunks.map {|ch| process_chunk(ch, dedent, quote)}
489
+ chunks = chunks.map {|ch| process_chunk(ch, dedent, fold, quote)}
485
490
  chunks.join.chomp
486
491
  } unless ENV["KRAMDOWN_SAFE"]
487
492
  input.gsub!(/^\{::boilerplate\s+(.*?)\}/) {
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.5.21'
3
+ s.version = '1.5.22'
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.}
@@ -0,0 +1,59 @@
1
+ FOLD_COLUMNS = 69
2
+ RE_IDENT = /\A[A-Za-z0-9_]\z/
3
+
4
+ def fold8792_1(s, columns = FOLD_COLUMNS)
5
+ if s.index("\t")
6
+ warn "*** HT (\"TAB\") in text to be folded. Giving up."
7
+ return s
8
+ end
9
+
10
+ lines = s.lines.map(&:chomp)
11
+ did_fold = false
12
+ ix = 0
13
+ while li = lines[ix]
14
+ col = columns
15
+ if li[col].nil?
16
+ if li[-1] == "\\"
17
+ lines[ix..ix] = [li << "\\", ""]
18
+ ix += 1
19
+ end
20
+ ix += 1
21
+ else
22
+ did_fold = true
23
+ col -= 1 # space for "\\"
24
+ while li[col] == " " # can't start new line with " "
25
+ col -= 1
26
+ end
27
+ if col <= 0
28
+ warn "*** Cannot RFC8792-fold1 #{li.inspect}"
29
+ else
30
+ if RE_IDENT === li[col] # Don't split IDs
31
+ col2 = col
32
+ while col2 > 0 && RE_IDENT === li[col2-1]
33
+ col2 -= 1
34
+ end
35
+ if col2 > 0
36
+ col = col2
37
+ end
38
+ end
39
+ rest = li[col..-1]
40
+ indent = columns - rest.size
41
+ if li[-1] == "\\"
42
+ indent -= 1 # leave space for next round
43
+ end
44
+ if indent > 0
45
+ rest = " " * indent + rest
46
+ end
47
+ lines[ix..ix] = [li[0...col] << "\\", rest]
48
+ end
49
+ ix += 1
50
+ end
51
+ end
52
+
53
+ if did_fold
54
+ lines[0...0] = ["=== NOTE: '\\' line wrapping per RFC 8792 ===", ""]
55
+ lines.map{|x| x << "\n"}.join
56
+ else
57
+ s
58
+ end
59
+ 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.5.21
4
+ version: 1.5.22
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-12-01 00:00:00.000000000 Z
11
+ date: 2021-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -99,6 +99,7 @@ files:
99
99
  - lib/kramdown-rfc/kdrfc-processor.rb
100
100
  - lib/kramdown-rfc/parameterset.rb
101
101
  - lib/kramdown-rfc/refxml.rb
102
+ - lib/kramdown-rfc/rfc8792.rb
102
103
  - lib/kramdown-rfc2629.rb
103
104
  homepage: http://github.com/cabo/kramdown-rfc2629
104
105
  licenses:
@@ -119,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
120
  - !ruby/object:Gem::Version
120
121
  version: '0'
121
122
  requirements: []
122
- rubygems_version: 3.2.22
123
+ rubygems_version: 3.2.32
123
124
  signing_key:
124
125
  specification_version: 4
125
126
  summary: Kramdown extension for generating RFC 7749 XML.