kramdown-rfc2629 1.5.2 → 1.5.6

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: a4b5c45b8847c6578542b8920d23c017bd22ef3bf35fe005d871c8a305738219
4
- data.tar.gz: 2f2ff22d21077a464373dfe592af271457e1f2cfec8c4f353da92e0ffd559e01
3
+ metadata.gz: 5b97d607db8f40ef48b49955a4bfdb558d77a7d3be7772e5ae3a0249fc47009b
4
+ data.tar.gz: 3b7902b944cb0b6fc145ddc47de10395600f3f9c4666066d55277e5f78450625
5
5
  SHA512:
6
- metadata.gz: b9f8b2a133cfc9e511804df4bd7be41ed0b59203a2997d277fb888f2b7b3ac494988f8bb7a9ba084c4ebe7253a141daef4aa8f9c4147329d9a19ba1bdc62a649
7
- data.tar.gz: 562538aacef3d53eed6fc976d08e78d72838c8c28ea29a9a47fa65652ebaed34d05fff26bbba1570161740431aa9e9bef487083216ab7833db8ad1e93c0045a3
6
+ metadata.gz: 48a464f90773790e23dba198a34b4cd192f7595afa56060522480d0d9c667c0ba2dbd47801681f8ee87752045ced2f2266daab44c6fa14326642646098012170
7
+ data.tar.gz: 5abbd7f58367330c04aaa8849995e72eb06eda9bd5796bbc63fa214b91be5d171ef073c07a418433719ff03b02ea4c23abfe2d7c9af4f5281925498ff5286c65
data/bin/de-gfm ADDED
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'kramdown'
4
+ require 'kramdown-parser-gfm'
5
+
6
+ if ARGV[0] == '-k' # kramdown
7
+ MARKDOWN_BR = "\\\\\n"
8
+ ARGV.shift
9
+ end
10
+
11
+ if ARGV[0] == '-c' # commonmark
12
+ MARKDOWN_BR = "\\\n"
13
+ ARGV.shift
14
+ end
15
+
16
+ if ARGV[0] == '-b' # universal HTML
17
+ MARKDOWN_BR = "<br/>\n"
18
+ ARGV.shift
19
+ end
20
+
21
+ MARKDOWN_BR ||= " \n" # original Gruber
22
+
23
+ module Kramdown
24
+
25
+ module Converter
26
+
27
+ # Converts an element tree to the kramdown format.
28
+ class Kramdown < Base
29
+
30
+ # Argh
31
+ def convert_br(_el, _opts)
32
+ MARKDOWN_BR
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ puts Kramdown::Document.new(ARGF.read, input: 'GFM', gfm_quirks: 'paragraph_end').to_kramdown
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)
@@ -69,6 +69,17 @@
69
69
 
70
70
  <middle>
71
71
 
72
+ {:/nomarkdown}
73
+ {:quote: gi="blockquote"}
74
+ {:aside: gi="aside"}
75
+ {:markers: sourcecode-markers="true"}
76
+ {:unnumbered: numbered="false"}
77
+ {:vspace: vspace="0"}
78
+ {:removeinrfc: removeinrfc="true"}
79
+ {:notoc: toc="exclude"}
80
+ {:compact: spacing="compact"}
81
+ {::nomarkdown}
82
+
72
83
  <%= sechash.delete("middle") %>
73
84
 
74
85
  </middle>
@@ -1,17 +1,18 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.5.2'
3
+ s.version = '1.5.6'
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.}
7
7
  s.add_dependency('kramdown', '~> 2.3.0')
8
+ s.add_dependency('kramdown-parser-gfm', '~> 1.1')
8
9
  s.add_dependency('certified', '~> 1.0')
9
10
  s.add_dependency('json_pure', '~> 2.0')
10
- s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kdrfc bin/kramdown-rfc2629 bin/doilit bin/kramdown-rfc-extract-markdown data/kramdown-rfc2629.erb data/encoding-fallbacks.txt data/math.json)
11
+ s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kdrfc bin/kramdown-rfc2629 bin/doilit bin/kramdown-rfc-extract-markdown data/kramdown-rfc2629.erb data/encoding-fallbacks.txt data/math.json bin/kramdown-rfc-cache-subseries-bibxml bin/de-gfm)
11
12
  s.require_path = 'lib'
12
13
  s.executables = ['kramdown-rfc2629', 'doilit', 'kramdown-rfc-extract-markdown',
13
14
  'kdrfc', 'kramdown-rfc-cache-i-d-bibxml',
14
- 'kramdown-rfc-cache-subseries-bibxml']
15
+ 'kramdown-rfc-cache-subseries-bibxml', 'de-gfm']
15
16
  s.required_ruby_version = '>= 2.3.0'
16
17
  # s.requirements = 'wget'
17
18
  # s.has_rdoc = true
@@ -128,9 +128,14 @@ module Kramdown
128
128
  when /\A(.*) \((#{SECTIONS_RE})\)\z/
129
129
  href = $1
130
130
  handle_bares($2, attr, "parens", href)
131
- when /\A(#{XREF_BASE})<(.+)\z/
132
- href = $2
133
- attr['section'] = $1
131
+ when /#{XREF_RE_M}<(.+)\z/
132
+ href = $3
133
+ if $2
134
+ attr['section'] = $2
135
+ attr['relative'] = "#" << $1
136
+ else
137
+ attr['section'] = $1
138
+ end
134
139
  attr['sectionFormat'] = 'bare'
135
140
  when /\A<<(.+)\z/
136
141
  href = $1
@@ -374,8 +379,20 @@ COLORS
374
379
  end
375
380
  end
376
381
 
382
+ SVG_NAMESPACES = {"xmlns"=>"http://www.w3.org/2000/svg",
383
+ "xlink"=>"http://www.w3.org/1999/xlink"}
384
+
377
385
  def svg_clean_kgt(s)
378
386
  d = REXML::Document.new(s)
387
+ REXML::XPath.each(d.root, "/xmlns:svg", SVG_NAMESPACES) do |x|
388
+ if (w = x.attributes["width"]) && (h = x.attributes["height"])
389
+ x.attributes["viewBox"] = "0 0 %d %d" % [w, h]
390
+ end
391
+ if x.attributes["viewBox"]
392
+ x.attributes["width"] = nil
393
+ x.attributes["height"] = nil
394
+ end
395
+ end
379
396
  REXML::XPath.each(d.root, "//rect|//line|//path") do |x|
380
397
  x.attributes["fill"] = "none"
381
398
  x.attributes["stroke"] = "black"
@@ -548,8 +565,17 @@ COLORS
548
565
 
549
566
  def convert_blockquote(el, indent, opts)
550
567
  text = inner(el, indent, opts)
568
+ if $options.v3
569
+ gi = el.attr.delete('gi')
570
+ if gi && gi != 'ul'
571
+ "#{' '*indent}<#{gi}#{el_html_attributes(el)}>\n#{text}#{' '*indent}</#{gi}>\n"
572
+ else
573
+ "#{' '*indent}<ul#{el_html_attributes_with(el, {"empty" => 'true'})}><li>\n#{text}#{' '*indent}</li></ul>\n"
574
+ end
575
+ else
551
576
  text = "<t></t>" unless text =~ /</ # empty block quote
552
577
  "#{' '*indent}<t><list style='empty'#{el_html_attributes(el)}>\n#{text}#{' '*indent}</list></t>\n"
578
+ end
553
579
  end
554
580
 
555
581
  def end_sections(to_level, indent)
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.5.2
4
+ version: 1.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-18 00:00:00.000000000 Z
11
+ date: 2021-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.3.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: kramdown-parser-gfm
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: certified
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -63,11 +77,13 @@ executables:
63
77
  - kdrfc
64
78
  - kramdown-rfc-cache-i-d-bibxml
65
79
  - kramdown-rfc-cache-subseries-bibxml
80
+ - de-gfm
66
81
  extensions: []
67
82
  extra_rdoc_files: []
68
83
  files:
69
84
  - LICENSE
70
85
  - README.md
86
+ - bin/de-gfm
71
87
  - bin/doilit
72
88
  - bin/kdrfc
73
89
  - bin/kramdown-rfc-cache-i-d-bibxml