kramdown-rfc2629 1.3.20 → 1.3.21

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: 7f5ee9d2385757e8121af0b12406be16995f0a221fbc2d7feca3e0b778168c2f
4
- data.tar.gz: 2a76e6613d01eef256c192728dfe71e327c73656a4fc74547da51e60290bcca6
3
+ metadata.gz: 34bc0c22021d827ebe3c42abda25c3255a6f9902fb8ab94cb7b758c29119016b
4
+ data.tar.gz: 5e457122aa29c8f2ffac9db511ebc50c036b56d170879e8f9cbd46477099f81d
5
5
  SHA512:
6
- metadata.gz: a1e75e8d942f4d068dce0be7cc1ccf79a5add0b31a0bd3e211737c0ffa0a3dd9cb03b7ca2e66324ceb14ba36d335a71a671d3e4b529ca8308507f7c96dde0c7a
7
- data.tar.gz: '0937c152d0f6032072a53c442e9f6404b05f1c5aad1df9e91a62f93b2390abba9666ad70f7d99c7c238a4832dac1699e842c591b9ab5dfe03da25176e7caaaa0'
6
+ metadata.gz: c9a397ece10c7c210ea7231e35ea0f949146db5fce32799a1b4bbb91fa59f3bfe7fda9d7b8e3a40127c426cecdd8b304a1370e5f60934ab8bc7af1c94e466518
7
+ data.tar.gz: 0b22b30f1ca35a27b27d671b2b081c2881d10388f50abffb079c8af506e0ac706f6bf47f3d19d7c20c52029d1654fe854fc3c1098fb0e80aba8edd9cdfac5ede
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = 'kramdown-rfc2629'
3
- s.version = '1.3.20'
3
+ s.version = '1.3.21'
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.}
@@ -39,7 +39,36 @@ module Kramdown
39
39
  @span_parsers.unshift(:iref)
40
40
  end
41
41
 
42
- XREF_START = /\{\{(?:(?:\{(.*?)\}(?:\{(.*?)\})?)|(.*?))((?:\}\})|\})/u
42
+ SECTIONS_RE = /Section(?:s (?:[\w.]+, )*[\w.]+,? and)? [\w.]+/
43
+
44
+ def handle_bares(s, attr, format, href)
45
+ sa = s.sub(/\A\S+\s/, '').split(/,? and /)
46
+ sa[0..0] = *sa[0].split(', ')
47
+ sz = sa.size
48
+ if sz != 1 # we have to redo xml2rfc's work here
49
+ @tree.children << Element.new(:text, "Sections ", {}) # XXX needs to split into Section/Appendix
50
+ sa.each_with_index do |sec, i|
51
+ attr1 = {"target" => href, "section" => sec, "sectionFormat" => "bare"}
52
+ @tree.children << Element.new(:xref, nil, attr1)
53
+ text = if i == 0 && sz == 2
54
+ " and "
55
+ elsif i == sz-1
56
+ " of "
57
+ elsif i == sz-2
58
+ ", and "
59
+ else
60
+ ", "
61
+ end
62
+ @tree.children << Element.new(:text, text, {})
63
+ end
64
+ # attr stays unchanged, no section added
65
+ else
66
+ attr['section'] = sa[-1]
67
+ attr['sectionFormat'] = format
68
+ end
69
+ end
70
+
71
+ XREF_START = /\{\{(?:(?:\{(.*?)\}(?:\{(.*?)\})?)|(\X*?))((?:\}\})|\})/u
43
72
 
44
73
  # Introduce new {{target}} syntax for empty xrefs, which would
45
74
  # otherwise be an ugly ![!](target) or ![ ](target)
@@ -57,8 +86,28 @@ module Kramdown
57
86
  el = Element.new(:contact, nil, attr)
58
87
  else
59
88
  href = @src[3]
89
+ attr = {}
90
+ if $options.v3
91
+ # match Section ... of ...; set section, sectionFormat
92
+ case href.gsub(/[\u00A0\s]+/, ' ') # may need nbsp and/or newlines
93
+ when /\A(#{SECTIONS_RE}) of (.*)\z/
94
+ href = $2
95
+ handle_bares($1, attr, "of", href)
96
+ when /\A(.*), (#{SECTIONS_RE})\z/
97
+ href = $1
98
+ handle_bares($2, attr, "comma", href)
99
+ when /\A(.*) \((#{SECTIONS_RE})\)\z/
100
+ href = $1
101
+ handle_bares($2, attr, "parens", href)
102
+ when /\A([\w.]+)<(.*)\z/
103
+ href = $2
104
+ attr['section'] = $1
105
+ attr['sectionFormat'] = 'bare'
106
+ end
107
+ end
60
108
  href = href.gsub(/\A[0-9]/) { "_#{$&}" } # can't start an IDREF with a number
61
- el = Element.new(:xref, nil, {'target' => href})
109
+ attr['target'] = href
110
+ el = Element.new(:xref, nil, attr)
62
111
  end
63
112
  @tree.children << el
64
113
  end
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.3.20
4
+ version: 1.3.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-16 00:00:00.000000000 Z
11
+ date: 2020-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: kramdown