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 +4 -4
- data/bin/de-gfm +38 -0
- data/bin/kramdown-rfc2629 +46 -2
- data/data/kramdown-rfc2629.erb +11 -0
- data/kramdown-rfc2629.gemspec +4 -3
- data/lib/kramdown-rfc2629.rb +29 -3
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b97d607db8f40ef48b49955a4bfdb558d77a7d3be7772e5ae3a0249fc47009b
|
4
|
+
data.tar.gz: 3b7902b944cb0b6fc145ddc47de10395600f3f9c4666066d55277e5f78450625
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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)
|
data/data/kramdown-rfc2629.erb
CHANGED
@@ -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>
|
data/kramdown-rfc2629.gemspec
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'kramdown-rfc2629'
|
3
|
-
s.version = '1.5.
|
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
|
data/lib/kramdown-rfc2629.rb
CHANGED
@@ -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
|
132
|
-
href = $
|
133
|
-
|
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.
|
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-
|
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
|