kramdown-rfc2629 1.0.30 → 1.0.31
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +16 -0
- data/bin/kramdown-rfc2629 +43 -6
- data/data/encoding-fallbacks.txt +161 -0
- data/kramdown-rfc2629.gemspec +3 -3
- data/lib/kramdown-rfc2629.rb +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcc80ff8452a6c29a365f184426a4a9d2d346e92
|
4
|
+
data.tar.gz: ffc0f0ba4f64bd1e51c33f5c8b1756c6dada5277
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58829e34c29a6834597576892379a486996833fda2ca5ed61be70aa1adf9e1acc924a2fba4de4f76ec282a55d3997581def245c005dbf1e3f763d3b23a92258b
|
7
|
+
data.tar.gz: d59d551ce80cc1b38a14ff13064cf25a751b01e2a96de052341d3ec2c7e5e68a1f21d4278533e7e2e0a494013c86b247abeef91ef978177febef525a2f68cda0
|
data/README.md
CHANGED
@@ -234,6 +234,22 @@ special support in XML2RFC), and HTML syntax of course.
|
|
234
234
|
A number of more esoteric features have recently been added.
|
235
235
|
(The minimum required version for each full feature is indicated.)
|
236
236
|
|
237
|
+
(1.0.31:)
|
238
|
+
The kramdown `smart_quotes` feature can be controlled better.
|
239
|
+
By default, it is on (with default kramdown settings), unless `coding:
|
240
|
+
us-ascii` is in effect, when it is off by default.
|
241
|
+
It also can be explicitly set on (`true`) or off (`false`) in the YAML
|
242
|
+
header, or to a specific value (an array of four kramdown entity names
|
243
|
+
or character numbers). E.g., for a German text (that is not intended
|
244
|
+
to become an Internet-Draft), one might write:
|
245
|
+
|
246
|
+
```yaml
|
247
|
+
smart_quotes: [sbquo, lsquo, bdquo, ldquo]
|
248
|
+
pi:
|
249
|
+
topblock: no
|
250
|
+
private: yes
|
251
|
+
```
|
252
|
+
|
237
253
|
(1.0.30:)
|
238
254
|
kramdown-rfc now uses kramdown 1.10, which leads to two notable updates:
|
239
255
|
|
data/bin/kramdown-rfc2629
CHANGED
@@ -22,7 +22,8 @@ def xml_from_sections(input)
|
|
22
22
|
# We put back the "---" plus gratuitous blank lines to hack the line number in errors
|
23
23
|
yaml_in = input[/---\s*/] << sections.shift[2]
|
24
24
|
ps = ParameterSet.new(YAML.load(yaml_in))
|
25
|
-
coding_override =
|
25
|
+
coding_override = ps.has(:coding)
|
26
|
+
smart_quotes = ps[:smart_quotes]
|
26
27
|
|
27
28
|
# all the other sections are put in a Hash, possibly concatenated from parts there
|
28
29
|
sechash = Hash.new{ |h,k| h[k] = ""}
|
@@ -173,7 +174,7 @@ def xml_from_sections(input)
|
|
173
174
|
warn "*** sections left #{sechash.keys.inspect}!"
|
174
175
|
end
|
175
176
|
|
176
|
-
[input, coding_override, link_defs]
|
177
|
+
[input, coding_override, link_defs, smart_quotes]
|
177
178
|
end
|
178
179
|
|
179
180
|
class ParameterSet
|
@@ -277,6 +278,23 @@ def dateattrs(date)
|
|
277
278
|
end
|
278
279
|
end
|
279
280
|
|
281
|
+
def read_encodings
|
282
|
+
encfilename = File.expand_path '../../data/encoding-fallbacks.txt', __FILE__
|
283
|
+
encfile = File.read(encfilename, coding: "UTF-8")
|
284
|
+
Hash[encfile.lines.map{|l|
|
285
|
+
l.chomp!;
|
286
|
+
x, s = l.split(" ", 2)
|
287
|
+
[x.hex.chr(Encoding::UTF_8), s || " "]}]
|
288
|
+
end
|
289
|
+
|
290
|
+
FALLBACK = read_encodings
|
291
|
+
|
292
|
+
def expand_tabs(s, tab_stops = 8)
|
293
|
+
s.gsub(/([^\t\n]*)\t/) do
|
294
|
+
$1 + " " * (tab_stops - ($1.size % tab_stops))
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
280
298
|
coding_override = :as_char
|
281
299
|
input = ARGF.read
|
282
300
|
if input[0] == "\uFEFF"
|
@@ -286,18 +304,37 @@ end
|
|
286
304
|
input.gsub!(/^\{::include\s+(.*?)\}/) {
|
287
305
|
File.read($1).chomp
|
288
306
|
} unless ENV["KRAMDOWN_SAFE"]
|
307
|
+
if input =~ /[\t]/
|
308
|
+
warn "*** Input contains HT (\"tab\") characters. Undefined behavior will ensue."
|
309
|
+
input = expand_tabs(input)
|
310
|
+
end
|
289
311
|
link_defs = {}
|
290
312
|
if input =~ /\A---/ # this is a sectionized file
|
291
|
-
input,
|
313
|
+
input, target_coding, link_defs, smart_quotes = xml_from_sections(input)
|
292
314
|
end
|
293
315
|
if input =~ /\A<\?xml/ # if this is a whole XML file, protect it
|
294
316
|
input = "{::nomarkdown}\n#{input}\n{:/nomarkdown}\n"
|
295
317
|
end
|
296
318
|
options = {input: 'RFC2629Kramdown', entity_output: coding_override, link_defs: link_defs}
|
297
|
-
|
298
|
-
|
299
|
-
|
319
|
+
if target_coding && target_coding =~ /ascii/ && smart_quotes.nil?
|
320
|
+
smart_quotes = false
|
321
|
+
end
|
322
|
+
if smart_quotes == false
|
323
|
+
smart_quotes = ["'".ord, "'".ord, '"'.ord, '"'.ord]
|
324
|
+
end
|
325
|
+
case smart_quotes
|
326
|
+
when Array
|
327
|
+
options[:smart_quotes] = smart_quotes
|
328
|
+
when nil, true
|
329
|
+
# nothin
|
330
|
+
else
|
331
|
+
warn "*** Can't deal with smart_quotes value #{smart_quotes.inspect}"
|
300
332
|
end
|
333
|
+
|
334
|
+
if target_coding
|
335
|
+
input = input.encode(Encoding.find(target_coding), fallback: FALLBACK)
|
336
|
+
end
|
337
|
+
|
301
338
|
# warn "options: #{options.inspect}"
|
302
339
|
doc = Kramdown::Document.new(input, options)
|
303
340
|
$stderr.puts doc.warnings.to_yaml unless doc.warnings.empty?
|
@@ -0,0 +1,161 @@
|
|
1
|
+
00a1 !
|
2
|
+
00a2 [cents]
|
3
|
+
00a3 GBP
|
4
|
+
00a4 [currency units]
|
5
|
+
00a5 JPY
|
6
|
+
00a6 |
|
7
|
+
00a7 S.
|
8
|
+
00a9 (C)
|
9
|
+
00aa a
|
10
|
+
00ab <<
|
11
|
+
00ac [not]
|
12
|
+
00ae (R)
|
13
|
+
00af _
|
14
|
+
00b0 o
|
15
|
+
00b1 +/-
|
16
|
+
00b2 ^2
|
17
|
+
00b3 ^3
|
18
|
+
00b4 '
|
19
|
+
00b5 [micro]
|
20
|
+
00b6 P.
|
21
|
+
00b7 .
|
22
|
+
00b8 ,
|
23
|
+
00b9 ^1
|
24
|
+
00ba o
|
25
|
+
00bb >>
|
26
|
+
00bc 1/4
|
27
|
+
00bd 1/2
|
28
|
+
00be 3/4
|
29
|
+
00bf ?
|
30
|
+
00c0 A
|
31
|
+
00c1 A
|
32
|
+
00c2 A
|
33
|
+
00c3 A
|
34
|
+
00c4 Ae
|
35
|
+
00c5 Ae
|
36
|
+
00c6 AE
|
37
|
+
00c7 C
|
38
|
+
00c8 E
|
39
|
+
00c9 E
|
40
|
+
00ca E
|
41
|
+
00cb E
|
42
|
+
00cc I
|
43
|
+
00cd I
|
44
|
+
00ce I
|
45
|
+
00cf I
|
46
|
+
00d0 [ETH]
|
47
|
+
00d1 N
|
48
|
+
00d2 O
|
49
|
+
00d3 O
|
50
|
+
00d4 O
|
51
|
+
00d5 O
|
52
|
+
00d6 Oe
|
53
|
+
00d7 x
|
54
|
+
00d8 Oe
|
55
|
+
00d9 U
|
56
|
+
00da U
|
57
|
+
00db U
|
58
|
+
00dc Ue
|
59
|
+
00dd Y
|
60
|
+
00de [THORN]
|
61
|
+
00df ss
|
62
|
+
00e0 a
|
63
|
+
00e1 a
|
64
|
+
00e2 a
|
65
|
+
00e3 a
|
66
|
+
00e4 ae
|
67
|
+
00e5 ae
|
68
|
+
00e6 ae
|
69
|
+
00e7 c
|
70
|
+
00e8 e
|
71
|
+
00e9 e
|
72
|
+
00ea e
|
73
|
+
00eb e
|
74
|
+
00ec i
|
75
|
+
00ed i
|
76
|
+
00ee i
|
77
|
+
00ef i
|
78
|
+
00f0 [eth]
|
79
|
+
00f1 n
|
80
|
+
00f2 o
|
81
|
+
00f3 o
|
82
|
+
00f4 o
|
83
|
+
00f5 o
|
84
|
+
00f6 oe
|
85
|
+
00f7 /
|
86
|
+
00f8 oe
|
87
|
+
00f9 u
|
88
|
+
00fa u
|
89
|
+
00fb u
|
90
|
+
00fc ue
|
91
|
+
00fd y
|
92
|
+
00fe [thorn]
|
93
|
+
00ff y
|
94
|
+
0152 OE
|
95
|
+
0153 oe
|
96
|
+
0161 s
|
97
|
+
0178 Y
|
98
|
+
0192 f
|
99
|
+
02dc ~
|
100
|
+
2002
|
101
|
+
2003
|
102
|
+
2009
|
103
|
+
2013 --
|
104
|
+
2014 ---
|
105
|
+
2018 '
|
106
|
+
2019 '
|
107
|
+
201a '
|
108
|
+
201c "
|
109
|
+
201d "
|
110
|
+
201e "
|
111
|
+
2020 *!*
|
112
|
+
2021 *!!*
|
113
|
+
2022 o
|
114
|
+
2026 ...
|
115
|
+
2030 [/1000]
|
116
|
+
2032 '
|
117
|
+
2039 <
|
118
|
+
203a >
|
119
|
+
2044 /
|
120
|
+
20ac EUR
|
121
|
+
2122 [TM]
|
122
|
+
2190 <--
|
123
|
+
2192 -->
|
124
|
+
2194 <->
|
125
|
+
21d0 <==
|
126
|
+
21d2 ==>
|
127
|
+
21d4 <=>
|
128
|
+
2212 -
|
129
|
+
2217 *
|
130
|
+
2264 <=
|
131
|
+
2265 >=
|
132
|
+
2329 <
|
133
|
+
232a >
|
134
|
+
0021 !
|
135
|
+
0023 #
|
136
|
+
0024 $
|
137
|
+
0025 %
|
138
|
+
0028 (
|
139
|
+
0029 )
|
140
|
+
002a *
|
141
|
+
002b +
|
142
|
+
002c ,
|
143
|
+
002d -
|
144
|
+
002e .
|
145
|
+
002f /
|
146
|
+
003a :
|
147
|
+
003b ;
|
148
|
+
003d =
|
149
|
+
003f ?
|
150
|
+
0040 @
|
151
|
+
005b [
|
152
|
+
005d ]
|
153
|
+
005e ^
|
154
|
+
005f _
|
155
|
+
0060 `
|
156
|
+
007b {
|
157
|
+
007c |
|
158
|
+
007d }
|
159
|
+
017d Z
|
160
|
+
017e z
|
161
|
+
2010 -
|
data/kramdown-rfc2629.gemspec
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
spec = Gem::Specification.new do |s|
|
2
2
|
s.name = 'kramdown-rfc2629'
|
3
|
-
s.version = '1.0.
|
3
|
+
s.version = '1.0.31'
|
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
|
-
s.add_dependency('kramdown', '~> 1.
|
8
|
-
s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kramdown-rfc2629 data/kramdown-rfc2629.erb)
|
7
|
+
s.add_dependency('kramdown', '~> 1.11.0')
|
8
|
+
s.files = Dir['lib/**/*.rb'] + %w(README.md LICENSE kramdown-rfc2629.gemspec bin/kramdown-rfc2629 data/kramdown-rfc2629.erb data/encoding-fallbacks.txt)
|
9
9
|
s.require_path = 'lib'
|
10
10
|
s.executables = ['kramdown-rfc2629']
|
11
11
|
s.default_executable = 'kramdown-rfc2629'
|
data/lib/kramdown-rfc2629.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
raise "sorry, 1.8 was last decade" unless RUBY_VERSION >= '1.9'
|
13
13
|
|
14
|
-
gem 'kramdown', '~> 1.
|
14
|
+
gem 'kramdown', '~> 1.11.0'
|
15
15
|
require 'kramdown'
|
16
16
|
my_span_elements = %w{list figure xref eref iref cref spanx vspace}
|
17
17
|
Kramdown::Parser::Html::Constants::HTML_SPAN_ELEMENTS.concat my_span_elements
|
@@ -549,7 +549,7 @@ module Kramdown
|
|
549
549
|
end
|
550
550
|
|
551
551
|
def convert_smart_quote(el, indent, opts)
|
552
|
-
entity_to_str(
|
552
|
+
entity_to_str(smart_quote_entity(el))
|
553
553
|
end
|
554
554
|
|
555
555
|
def convert_math(el, indent, opts) # XXX: This is wrong
|
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.0.
|
4
|
+
version: 1.0.31
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kramdown
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.11.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.11.0
|
27
27
|
description: |-
|
28
28
|
An RFC7749 (XML2RFC) generating backend for Thomas Leitner's
|
29
29
|
"kramdown" markdown parser. Mostly useful for RFC writers.
|
@@ -36,6 +36,7 @@ files:
|
|
36
36
|
- LICENSE
|
37
37
|
- README.md
|
38
38
|
- bin/kramdown-rfc2629
|
39
|
+
- data/encoding-fallbacks.txt
|
39
40
|
- data/kramdown-rfc2629.erb
|
40
41
|
- kramdown-rfc2629.gemspec
|
41
42
|
- lib/kramdown-rfc2629.rb
|
@@ -59,9 +60,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
60
|
version: '0'
|
60
61
|
requirements: []
|
61
62
|
rubyforge_project:
|
62
|
-
rubygems_version: 2.
|
63
|
+
rubygems_version: 2.5.1
|
63
64
|
signing_key:
|
64
65
|
specification_version: 4
|
65
66
|
summary: Kramdown extension for generating RFC 7749 XML.
|
66
67
|
test_files: []
|
67
|
-
has_rdoc:
|