kramdown-rfc2629 1.7.36 → 1.7.37

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: a9ff7213b94221a765a71330807020f096d5359482a00597494a7b7ac947a3ab
4
- data.tar.gz: c9950dd8e71d8dcd45d128a1ef505c10336ce66fba9a790e4db4db114902e02c
3
+ metadata.gz: a137034ca47a378411e22f6f1174a7e3bd38ec49602071dd1d1bdc9baae5dce7
4
+ data.tar.gz: 314a3eb7904262f07005244ad182557b60163e2dc60342ad50f82bc0d7e9c631
5
5
  SHA512:
6
- metadata.gz: df87cfdc51a33bdc89a67723a66f475671d29d71ace9796bd2698135ee4b99e3a62072a0412ec9c0773b202790beae1a8d8ad10d7c8c41dd43c0a57812973018
7
- data.tar.gz: 1c4de95e1f2dffdac9faff39ed32853cf36ae072ee6bdb447c8ce87f74203ca24165e391d1ee5fe92bc49ecc20ae6abf57a44d6cb26917e33096b9156528f7a1
6
+ metadata.gz: d2a53bae6614608fb60c8007d04a582d225ee45f846ae318b68111fa157ba81f9f96256b5729335083f55c4e823d3091af4ceb10e45f5af90d0b028894dcad1b
7
+ data.tar.gz: 52bbd44c2902ea00153d33668d4334d7206c413c6f45223ff1ce4006188868f22d78975918f5f1a8c56a78b079a7a8290c493826cead32c5439420a43fa5d6ac
@@ -1,6 +1,7 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.7.36'
3
+ s.version = '1.7.37'
4
+
4
5
  s.summary = "Kramdown extension for generating RFCXML (RFC 799x)."
5
6
  s.description = %{An RFCXML (RFC 799x) generating backend for Thomas Leitner's
6
7
  "kramdown" markdown parser. Mostly useful for RFC writers.}
@@ -25,10 +25,11 @@ def process_xml(s)
25
25
  d.to_s
26
26
  end
27
27
 
28
- def process_chunk(s, nested, dedent, fold, quote, xml, data)
28
+ def process_chunk(s, nested, dedent, range, fold, quote, xml, data)
29
29
  process_includes(s) if nested
30
30
  s = remove_indentation(s) if dedent
31
31
  s = process_xml(s) if xml
32
+ s = s.lines[range].join if range
32
33
  s = %{src="data:application/octet-stream;base64,#{[s].pack('m0')}"} if data
33
34
  s = fold8792_1(s, *fold) if fold
34
35
  s = add_quote(s) if quote
@@ -36,7 +37,7 @@ def process_chunk(s, nested, dedent, fold, quote, xml, data)
36
37
  end
37
38
 
38
39
  def process_includes(input)
39
- input.gsub!(/^\{::include((?:-[a-z0-9]+)*)\s+(.*?)\}/) {
40
+ input.gsub!(/^\{::include((?:-[a-z0-9.]+)*)\s+(.*?)\}/) {
40
41
  include_flags = $1
41
42
  fn = [$2]
42
43
  chunks = false
@@ -45,6 +46,7 @@ def process_includes(input)
45
46
  fold = false
46
47
  quote = false
47
48
  xml = false
49
+ range = false
48
50
  data = false
49
51
  include_flags.split("-") do |flag|
50
52
  case flag
@@ -57,6 +59,10 @@ def process_includes(input)
57
59
  dedent = true
58
60
  when "xml"
59
61
  xml = true
62
+ when /\Alines(\d*)\.\.(\.)?(\d*)\z/
63
+ range = Range.new($1.empty? ? nil : $1.to_i - 1, # compensate for
64
+ $3.empty? ? nil : $3.to_i - 1, # extra newline
65
+ $2)
60
66
  when "data"
61
67
  data = true
62
68
  when /\Afold(\d*)(left(\d*))?(dry)?\z/
@@ -67,7 +73,7 @@ def process_includes(input)
67
73
  fn = fn.flat_map{|n| Dir[n]}
68
74
  fn = [fn.last] if flag == "last"
69
75
  chunks = fn.map{ |f|
70
- ret = process_chunk(File.read(f), nested, dedent, fold, quote, xml, data)
76
+ ret = process_chunk(File.read(f), nested, dedent, range, fold, quote, xml, data)
71
77
  nested = false; dedent = false; fold = false; quote = false
72
78
  ret
73
79
  }
@@ -76,7 +82,7 @@ def process_includes(input)
76
82
  end
77
83
  end
78
84
  chunks = fn.map{|f| File.read(f)} unless chunks # no all/last
79
- chunks = chunks.map {|ch| process_chunk(ch, nested, dedent, fold, quote, xml, data)}
85
+ chunks = chunks.map {|ch| process_chunk(ch, nested, dedent, range, fold, quote, xml, data)}
80
86
  chunks.join.chomp
81
87
  }
82
88
  end
@@ -202,7 +208,7 @@ def yaml_load_compat(input, *args)
202
208
  begin
203
209
  YAML.safe_load(input, *args)
204
210
  rescue ArgumentError
205
- YAML.safe_load(input, permitted_classes: args[0], permitted_symbols: args[1], aliases: args[2])
211
+ YAML.safe_load(input, permitted_classes: args[0], permitted_symbols: args[1], aliases: args[2], filename: args[3])
206
212
  end
207
213
  else
208
214
  YAML.load(input)
@@ -301,7 +307,7 @@ def read_erbfile
301
307
  File.read(erbfilename, coding: "UTF-8")
302
308
  end
303
309
 
304
- def xml_from_sections(input)
310
+ def xml_from_sections(input, filename = "YAML header")
305
311
 
306
312
  unless ENV["KRAMDOWN_NO_SOURCE"]
307
313
  require 'kramdown-rfc/gzip-clone'
@@ -322,7 +328,7 @@ def xml_from_sections(input)
322
328
  # the first section is a YAML with front matter parameters (don't put a label here)
323
329
  # We put back the "---" plus gratuitous blank lines to hack the line number in errors
324
330
  yaml_in = input[/---\s*/] << sections.shift[2]
325
- ps = KramdownRFC::ParameterSet.new(yaml_load(yaml_in, [Date], [], true))
331
+ ps = KramdownRFC::ParameterSet.new(yaml_load(yaml_in, [Date], [], true, filename))
326
332
  begin
327
333
  require 'kramdown-rfc/yamlcheck'
328
334
  KramdownRFC::YAMLcheck.check_dup_keys(yaml_in)
@@ -647,6 +653,11 @@ end
647
653
 
648
654
  warn "*** v2 #{$options.v2.inspect} v3 #{$options.v3.inspect}" if $options.verbose
649
655
 
656
+ input_filename = ARGV.join(", ")
657
+ case input_filename
658
+ when "", "-"
659
+ input_filename = "<stdin>"
660
+ end
650
661
  input = ARGF.read
651
662
  input.scrub! do |c|
652
663
  warn "*** replaced invalid UTF-8 byte sequence #{c.inspect} by U+FFFD REPLACEMENT CHARACTER"
@@ -673,7 +684,7 @@ end
673
684
 
674
685
  if input =~ /\A---/ # this is a sectionized file
675
686
  do_the_tls_dance unless ENV["KRAMDOWN_DONT_VERIFY_HTTPS"]
676
- input, options, coding_override = xml_from_sections(input)
687
+ input, options, coding_override = xml_from_sections(input, input_filename)
677
688
  else
678
689
  options = process_kramdown_options # all default
679
690
  end
@@ -800,6 +800,11 @@ COLORS
800
800
  ($3.to_i if $2), # left 0 for '', nil if no "left"
801
801
  $4] # dry
802
802
  result = fix_unterminated_line(fold8792_1(trim_empty_lines_around(result), *fold)) # XXX
803
+ when /\Alines(\d*)\.\.(\.)?(\d*)\z/
804
+ range = Range.new($1.empty? ? nil : $1.to_i, # compensate for
805
+ $3.empty? ? nil : $3.to_i, # counting from 1
806
+ $2)
807
+ result = result.lines[range].join
803
808
  when "yaml2json"
804
809
  begin
805
810
  y = YAML.safe_load(result, aliases: true, filename: loc_str)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kramdown-rfc2629
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.36
4
+ version: 1.7.37
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann