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 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