kramdown-rfc2629 1.5.4 → 1.5.5

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