kramdown-rfc2629 1.6.32 → 1.6.33

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: 06d7a5e3575eaa6044b71492725d0aec45cae30106b435d7053dc6003a4a8ae2
4
- data.tar.gz: 3f5aee93845187265047bb40decdfe9c24fa78acbf5f417c8609e04759ee882a
3
+ metadata.gz: d4c663bed0e8e2dc848a9e532ba201b9e9a26b4090368c0d83f8c518275df710
4
+ data.tar.gz: a2ac5d0be0615b41ecd65964ca7dfd61e3163fbb3aa612994fa5ac05ae1504ca
5
5
  SHA512:
6
- metadata.gz: c5b30e9a7de489ab05f1cea4ce856be9d5dd166a6989457da448b187963eccaefec4b92a76fa90e1c49e0e3016d11598e877f57f9f0a2c1ebd4003152818b58d
7
- data.tar.gz: c2c2b61afbf59ba47aa0a0fd21969e3326beb02ddf7bad048fd252081daf4351a387133b0223510215a2afdbd9456bc41d1f1dae34c67589046dcb1ae9ad8a4e
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
 
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.6.32'
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.}
@@ -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/
@@ -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
- # XXX check for 8792; undo if needed!
723
+ # check for 8792; undo if needed:
721
724
  begin
722
- JSON.load(result)
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("{" << result << "}")
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.32
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-28 00:00:00.000000000 Z
11
+ date: 2023-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown