kramdown-rfc2629 1.5.19 → 1.5.24

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: 4a589f2a63da88b17cc5b56af63afe5a0faa9e7aae446f99b0a14aed7876e22d
4
- data.tar.gz: 693ce583c48dbe4768727d684f3aa303436ad46bf824f291a9f0b3d63063d62c
3
+ metadata.gz: d7c7ac571f000360c4b8aca5450e5439c2d50b71fb85872ad2890e575c986c9b
4
+ data.tar.gz: 1af9f4b9d49c2176143a61b7c24f3bc9f13302a2bbef6a5cc90a379596b5ff04
5
5
  SHA512:
6
- metadata.gz: 965e4be16c1a7b5f372a911d861d5bfca8fdca3ebc999b1e61feb1aaabb003b3504f882f28224185ec497777eba1c4e6aa1be98890cf9f05ae0493b9b5d146a5
7
- data.tar.gz: 4b9a3ec95bc29455192af45e0dac1701b2e76f934816746edea7b57ffca1001f23ed11df91b710398a60356297e955807d9e5d912298eb320ebb62daab17302c
6
+ metadata.gz: 58d5ed0d4e9ec45f285a2230055a5cdbc4393a0eec6fe5722c170a965a4d24a6f5a73bf16e14e83b38fa6029a6942edacf88f5621f2e2c5c0aabd2223f73bc9f
7
+ data.tar.gz: 748fbf3adced720c4cdb48c346174d4660a17b670ee5f12fc315fd252d3353c7e8c8569bba1d4526f2c8016c85d524160e9bfac5749f3e1f40b7932c048d3a01
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,12 +25,53 @@ 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, nested, dedent, fold, quote)
29
+ process_includes(s) if nested
28
30
  s = remove_indentation(s) if dedent
31
+ s = fold8792_1(s) if fold
29
32
  s = add_quote(s) if quote
30
33
  s
31
34
  end
32
35
 
36
+ def process_includes(input)
37
+ input.gsub!(/^\{::include((?:-[a-z]+)*)\s+(.*?)\}/) {
38
+ include_flags = $1
39
+ fn = [$2]
40
+ chunks = false
41
+ nested = false
42
+ dedent = false
43
+ fold = false
44
+ quote = false
45
+ include_flags.split("-") do |flag|
46
+ case flag
47
+ when ""
48
+ when "nested"
49
+ nested = true
50
+ when "quote"
51
+ quote = true
52
+ when "dedent"
53
+ dedent = true
54
+ when "fold"
55
+ fold = true
56
+ when "all", "last"
57
+ fn = fn.flat_map{|n| Dir[n]}
58
+ fn = [fn.last] if flag == "last"
59
+ chunks = fn.map{ |f|
60
+ ret = process_chunk(File.read(f), nested, dedent, fold, quote)
61
+ nested = false; dedent = false; fold = false; quote = false
62
+ ret
63
+ }
64
+ else
65
+ warn "** unknown include flag #{flag}"
66
+ end
67
+ end
68
+ chunks = fn.map{|f| File.read(f)} unless chunks # no all/last
69
+ chunks = chunks.map {|ch| process_chunk(ch, nested, dedent, fold, quote)}
70
+ chunks.join.chomp
71
+ }
72
+ end
73
+
74
+
33
75
  def boilerplate(key)
34
76
  case key.downcase
35
77
  when /\Abcp14(info)?(\+)?(-tagged)?\z/i
@@ -455,35 +497,7 @@ if input[-1] != "\n"
455
497
  # warn "*** added missing newline at end"
456
498
  input << "\n" # fix #26
457
499
  end
458
- input.gsub!(/^\{::include((?:-[a-z]+)*)\s+(.*?)\}/) {
459
- include_flags = $1
460
- fn = [$2]
461
- chunks = false
462
- dedent = false
463
- quote = false
464
- include_flags.split("-") do |flag|
465
- case flag
466
- when ""
467
- when "quote"
468
- quote = true
469
- when "dedent"
470
- dedent = true
471
- when "all", "last"
472
- fn = fn.flat_map{|n| Dir[n]}
473
- fn = [fn.last] if flag == "last"
474
- chunks = fn.map{ |f|
475
- ret = process_chunk(File.read(f), dedent, quote)
476
- dedent = false; quote = false
477
- ret
478
- }
479
- else
480
- warn "** unknown include flag #{flag}"
481
- end
482
- end
483
- chunks = fn.map{|f| File.read(f)} unless chunks # no all/last
484
- chunks = chunks.map {|ch| process_chunk(ch, dedent, quote)}
485
- chunks.join.chomp
486
- } unless ENV["KRAMDOWN_SAFE"]
500
+ process_includes(input) unless ENV["KRAMDOWN_SAFE"]
487
501
  input.gsub!(/^\{::boilerplate\s+(.*?)\}/) {
488
502
  boilerplate($1)
489
503
  }
@@ -22,7 +22,8 @@
22
22
  rfcattrs = ps.attrs("ipr", "docName=docname", "category=cat",
23
23
  "consensus", "submissionType=submissiontype", "xml:lang=lang",
24
24
  "number", "obsoletes", "updates", "seriesNo=seriesno")
25
- TRUE_FALSE = {nil => "true", false => "false", true => "true"}
25
+ TRUE_FALSE = {nil => "true", false => "false", true => "true",
26
+ "yes" => "true", "no" => "false"}
26
27
  YES_NO = {"true" => "yes", "false" => "no"}
27
28
  pis = KramdownRFC::ParameterSet.new({})
28
29
  ps.arr("pi", false) do |pi, val|
@@ -36,7 +37,7 @@
36
37
  end
37
38
  end
38
39
  pis.rest.each do |pi, val|
39
- v = YES_NO[val] || escape_html(val.to_s, :attribute)
40
+ v = YES_NO[val] || pis.escattr(val)
40
41
  -%>
41
42
  <?rfc <%=pi%>="<%=v%>"?>
42
43
  <% end -%>
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.5.19'
3
+ s.version = '1.5.24'
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.}
@@ -33,7 +33,7 @@ module KramdownRFC
33
33
  %{#{an}="#{escattr(val)}"} if val
34
34
  end
35
35
  def attrs(*pns)
36
- pns.map{ |pn| attr(pn) }.compact.join(" ")
36
+ pns.map{ |pn| attr(pn) if pn }.compact.join(" ")
37
37
  end
38
38
  def ele(pn, attr=nil, defcontent=nil, markdown=false)
39
39
  val, an = van(pn)
@@ -65,5 +65,4 @@ module KramdownRFC
65
65
  end
66
66
  end
67
67
 
68
-
69
68
  end
@@ -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
@@ -1323,7 +1323,7 @@ COLORS
1323
1323
  if target == "#"
1324
1324
  target = value
1325
1325
  else
1326
- target = target[1..]
1326
+ target = target[1..-1]
1327
1327
  end
1328
1328
  else
1329
1329
  target = nil
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.19
4
+ version: 1.5.24
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-11-29 00:00:00.000000000 Z
11
+ date: 2021-12-16 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.