kramdown-rfc2629 1.5.4 → 1.5.5

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: 49968f621678e46d7ecde1451347a63f8a9dd93d0c7dc1f822ee7314f1c7c3fc
4
- data.tar.gz: d94a74186a8be6c9880c8e15d73b7961df19ab566a55b5a3a643a34aaa1f3c5a
3
+ metadata.gz: 241fa7d714b5ba3a4bc0060d59d9ae2e2241b4777a60023126570e6f48bdf26f
4
+ data.tar.gz: b51688aab8adba3ad3b351ecb7d15f52ab71acf70d0c4d27ab72f8ec4d377995
5
5
  SHA512:
6
- metadata.gz: 424d084703c00e29cad08da0ee6f4568ac6861772eef79fadf26c6f39a4747d6ec192f04abf262d3f26579d4e7fb8493d00c34f9cf01183cabec1b3ccbe1bf4a
7
- data.tar.gz: f5d6cf7487ce6601bf2cb3198c9d12727d5c4cc0752c5c9b11f6f29a43304874dca36653e047812486888889bc07e0999fad89d3847b0cb1122f0c020f9f33a1
6
+ metadata.gz: fdde5cb2f7a8288476259eaa03216c12f1ed231c10275bd3a5b7679d64cbb23b65e00afa3e06dc497a028ffc0997c039f3e909c6ad661d0244208f3fa08c1f03
7
+ data.tar.gz: 16e3c5e17dd0d7b383c0cd875ea55572ccf8b6c6c1875436873cbbd93d9ab64171e9b93561b5a7f1d8c5ceb301adde38132a2ff10e8e70f66f783a7aade16d37
data/bin/kramdown-rfc2629 CHANGED
@@ -12,6 +12,24 @@ KDRFC_VERSION=Gem.loaded_specs["kramdown-rfc2629"].version rescue "unknown-versi
12
12
 
13
13
  Encoding.default_external = "UTF-8" # wake up, smell the coffee
14
14
 
15
+ # Note that this doesn't attempt to handle HT characters
16
+ def remove_indentation(s)
17
+ l = s.lines
18
+ indent = l.grep(/\S/).map {|l| l[/^\s*/].size}.min
19
+ l.map {|li| li.sub(/^ {0,#{indent}}/, "")}.join
20
+ end
21
+
22
+ def add_quote(s)
23
+ l = s.lines
24
+ l.map {|li| "> #{li}"}.join
25
+ end
26
+
27
+ def process_chunk(s, dedent, quote)
28
+ s = remove_indentation(s) if dedent
29
+ s = add_quote(s) if quote
30
+ s
31
+ end
32
+
15
33
  def boilerplate(key)
16
34
  case key.downcase
17
35
  when /\Abcp14(info)?(\+)?(-tagged)?\z/i
@@ -437,8 +455,34 @@ if input[-1] != "\n"
437
455
  # warn "*** added missing newline at end"
438
456
  input << "\n" # fix #26
439
457
  end
440
- input.gsub!(/^\{::include\s+(.*?)\}/) {
441
- File.read($1).chomp
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
442
486
  } unless ENV["KRAMDOWN_SAFE"]
443
487
  input.gsub!(/^\{::boilerplate\s+(.*?)\}/) {
444
488
  boilerplate($1)
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.5.4'
3
+ s.version = '1.5.5'
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.}
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.5.4
4
+ version: 1.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann