bean-kramdown 0.13.5
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.
- data/AUTHORS +1 -0
- data/CONTRIBUTERS +11 -0
- data/COPYING +24 -0
- data/ChangeLog +6683 -0
- data/GPL +674 -0
- data/README +43 -0
- data/VERSION +1 -0
- data/bin/kramdown +78 -0
- data/lib/kramdown.rb +23 -0
- data/lib/kramdown/compatibility.rb +49 -0
- data/lib/kramdown/converter.rb +41 -0
- data/lib/kramdown/converter/base.rb +169 -0
- data/lib/kramdown/converter/bean_html.rb +71 -0
- data/lib/kramdown/converter/html.rb +411 -0
- data/lib/kramdown/converter/kramdown.rb +428 -0
- data/lib/kramdown/converter/latex.rb +607 -0
- data/lib/kramdown/converter/toc.rb +82 -0
- data/lib/kramdown/document.rb +119 -0
- data/lib/kramdown/element.rb +524 -0
- data/lib/kramdown/error.rb +30 -0
- data/lib/kramdown/options.rb +373 -0
- data/lib/kramdown/parser.rb +39 -0
- data/lib/kramdown/parser/base.rb +136 -0
- data/lib/kramdown/parser/bean_kramdown.rb +25 -0
- data/lib/kramdown/parser/bean_kramdown/info_box.rb +52 -0
- data/lib/kramdown/parser/bean_kramdown/oembed.rb +230 -0
- data/lib/kramdown/parser/html.rb +570 -0
- data/lib/kramdown/parser/kramdown.rb +339 -0
- data/lib/kramdown/parser/kramdown/abbreviation.rb +71 -0
- data/lib/kramdown/parser/kramdown/autolink.rb +53 -0
- data/lib/kramdown/parser/kramdown/blank_line.rb +43 -0
- data/lib/kramdown/parser/kramdown/block_boundary.rb +46 -0
- data/lib/kramdown/parser/kramdown/blockquote.rb +51 -0
- data/lib/kramdown/parser/kramdown/codeblock.rb +63 -0
- data/lib/kramdown/parser/kramdown/codespan.rb +56 -0
- data/lib/kramdown/parser/kramdown/emphasis.rb +70 -0
- data/lib/kramdown/parser/kramdown/eob.rb +39 -0
- data/lib/kramdown/parser/kramdown/escaped_chars.rb +38 -0
- data/lib/kramdown/parser/kramdown/extensions.rb +204 -0
- data/lib/kramdown/parser/kramdown/footnote.rb +74 -0
- data/lib/kramdown/parser/kramdown/header.rb +68 -0
- data/lib/kramdown/parser/kramdown/horizontal_rule.rb +39 -0
- data/lib/kramdown/parser/kramdown/html.rb +169 -0
- data/lib/kramdown/parser/kramdown/html_entity.rb +44 -0
- data/lib/kramdown/parser/kramdown/image.rb +157 -0
- data/lib/kramdown/parser/kramdown/line_break.rb +38 -0
- data/lib/kramdown/parser/kramdown/link.rb +154 -0
- data/lib/kramdown/parser/kramdown/list.rb +240 -0
- data/lib/kramdown/parser/kramdown/math.rb +65 -0
- data/lib/kramdown/parser/kramdown/paragraph.rb +63 -0
- data/lib/kramdown/parser/kramdown/smart_quotes.rb +214 -0
- data/lib/kramdown/parser/kramdown/table.rb +178 -0
- data/lib/kramdown/parser/kramdown/typographic_symbol.rb +52 -0
- data/lib/kramdown/parser/markdown.rb +69 -0
- data/lib/kramdown/utils.rb +42 -0
- data/lib/kramdown/utils/entities.rb +348 -0
- data/lib/kramdown/utils/html.rb +85 -0
- data/lib/kramdown/utils/ordered_hash.rb +100 -0
- data/lib/kramdown/version.rb +28 -0
- metadata +140 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
#--
|
4
|
+
# Copyright (C) 2009-2012 Thomas Leitner <t_leitner@gmx.at>
|
5
|
+
#
|
6
|
+
# This file is part of kramdown.
|
7
|
+
#
|
8
|
+
# kramdown is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
#++
|
21
|
+
#
|
22
|
+
|
23
|
+
module Kramdown
|
24
|
+
module Parser
|
25
|
+
class Kramdown
|
26
|
+
|
27
|
+
TYPOGRAPHIC_SYMS = [['---', :mdash], ['--', :ndash], ['...', :hellip],
|
28
|
+
['\\<<', '<<'], ['\\>>', '>>'],
|
29
|
+
['<< ', :laquo_space], [' >>', :raquo_space],
|
30
|
+
['<<', :laquo], ['>>', :raquo]]
|
31
|
+
TYPOGRAPHIC_SYMS_SUBST = Hash[*TYPOGRAPHIC_SYMS.flatten]
|
32
|
+
TYPOGRAPHIC_SYMS_RE = /#{TYPOGRAPHIC_SYMS.map {|k,v| Regexp.escape(k)}.join('|')}/
|
33
|
+
|
34
|
+
# Parse the typographic symbols at the current location.
|
35
|
+
def parse_typographic_syms
|
36
|
+
@src.pos += @src.matched_size
|
37
|
+
val = TYPOGRAPHIC_SYMS_SUBST[@src.matched]
|
38
|
+
if val.kind_of?(Symbol)
|
39
|
+
@tree.children << Element.new(:typographic_sym, val)
|
40
|
+
elsif @src.matched == '\\<<'
|
41
|
+
@tree.children << Element.new(:entity, ::Kramdown::Utils::Entities.entity('lt'))
|
42
|
+
@tree.children << Element.new(:entity, ::Kramdown::Utils::Entities.entity('lt'))
|
43
|
+
else
|
44
|
+
@tree.children << Element.new(:entity, ::Kramdown::Utils::Entities.entity('gt'))
|
45
|
+
@tree.children << Element.new(:entity, ::Kramdown::Utils::Entities.entity('gt'))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
define_parser(:typographic_syms, TYPOGRAPHIC_SYMS_RE, '--|\\.\\.\\.|(?:\\\\| )?(?:<<|>>)')
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
#--
|
4
|
+
# Copyright (C) 2009-2012 Thomas Leitner <t_leitner@gmx.at>
|
5
|
+
#
|
6
|
+
# This file is part of kramdown.
|
7
|
+
#
|
8
|
+
# kramdown is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
#++
|
21
|
+
#
|
22
|
+
|
23
|
+
require 'kramdown/parser/kramdown'
|
24
|
+
|
25
|
+
module Kramdown
|
26
|
+
|
27
|
+
module Parser
|
28
|
+
|
29
|
+
# Used for parsing a document in Markdown format.
|
30
|
+
#
|
31
|
+
# This parser is based on the kramdown parser and removes the parser methods for the additional
|
32
|
+
# non-Markdown features. However, since some things are handled differently by the kramdown
|
33
|
+
# parser methods (like deciding when a list item contains just text), this parser differs from
|
34
|
+
# real Markdown parsers in some respects.
|
35
|
+
#
|
36
|
+
# Note, though, that the parser basically fails just one of the Markdown test cases (some others
|
37
|
+
# also fail but those failures are negligible).
|
38
|
+
class Markdown < Kramdown
|
39
|
+
|
40
|
+
# Array with all the parsing methods that should be removed from the standard kramdown parser.
|
41
|
+
EXTENDED = [:codeblock_fenced, :table, :definition_list, :footnote_definition, :abbrev_definition, :block_math,
|
42
|
+
:block_extensions,
|
43
|
+
:footnote_marker, :smart_quotes, :inline_math, :span_extensions, :typographic_syms]
|
44
|
+
|
45
|
+
def initialize(source, options) # :nodoc:
|
46
|
+
super
|
47
|
+
@block_parsers.delete_if {|i| EXTENDED.include?(i)}
|
48
|
+
@span_parsers.delete_if {|i| EXTENDED.include?(i)}
|
49
|
+
end
|
50
|
+
|
51
|
+
# :stopdoc:
|
52
|
+
|
53
|
+
BLOCK_BOUNDARY = /#{BLANK_LINE}|#{EOB_MARKER}|\Z/
|
54
|
+
LAZY_END = /#{BLANK_LINE}|#{EOB_MARKER}|^#{OPT_SPACE}#{LAZY_END_HTML_STOP}|^#{OPT_SPACE}#{LAZY_END_HTML_START}|\Z/
|
55
|
+
CODEBLOCK_MATCH = /(?:#{BLANK_LINE}?(?:#{INDENT}[ \t]*\S.*\n)+)*/
|
56
|
+
PARAGRAPH_END = LAZY_END
|
57
|
+
|
58
|
+
IAL_RAND_CHARS = (('a'..'z').to_a + ('0'..'9').to_a)
|
59
|
+
IAL_RAND_STRING = (1..20).collect {|a| IAL_RAND_CHARS[rand(IAL_RAND_CHARS.size)]}.join
|
60
|
+
LIST_ITEM_IAL = /^\s*(#{IAL_RAND_STRING})?\s*\n/
|
61
|
+
IAL_SPAN_START = LIST_ITEM_IAL
|
62
|
+
|
63
|
+
# :startdoc:
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
#--
|
4
|
+
# Copyright (C) 2009-2012 Thomas Leitner <t_leitner@gmx.at>
|
5
|
+
#
|
6
|
+
# This file is part of kramdown.
|
7
|
+
#
|
8
|
+
# kramdown is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
#++
|
21
|
+
#
|
22
|
+
|
23
|
+
module Kramdown
|
24
|
+
|
25
|
+
# == \Utils Module
|
26
|
+
#
|
27
|
+
# This module contains utility class/modules/methods that can be used by both parsers and
|
28
|
+
# converters.
|
29
|
+
module Utils
|
30
|
+
|
31
|
+
autoload :Entities, 'kramdown/utils/entities'
|
32
|
+
autoload :Html, 'kramdown/utils/html'
|
33
|
+
autoload :OrderedHash, 'kramdown/utils/ordered_hash'
|
34
|
+
|
35
|
+
# Treat +name+ as if it were snake cased (e.g. snake_case) and camelize it (e.g. SnakeCase).
|
36
|
+
def self.camelize(name)
|
37
|
+
name.split('_').inject('') {|s,x| s << x[0..0].upcase + x[1..-1] }
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,348 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
#--
|
4
|
+
# Copyright (C) 2009-2012 Thomas Leitner <t_leitner@gmx.at>
|
5
|
+
#
|
6
|
+
# This file is part of kramdown.
|
7
|
+
#
|
8
|
+
# kramdown is free software: you can redistribute it and/or modify
|
9
|
+
# it under the terms of the GNU General Public License as published by
|
10
|
+
# the Free Software Foundation, either version 3 of the License, or
|
11
|
+
# (at your option) any later version.
|
12
|
+
#
|
13
|
+
# This program is distributed in the hope that it will be useful,
|
14
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
16
|
+
# GNU General Public License for more details.
|
17
|
+
#
|
18
|
+
# You should have received a copy of the GNU General Public License
|
19
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
20
|
+
#++
|
21
|
+
#
|
22
|
+
|
23
|
+
module Kramdown
|
24
|
+
|
25
|
+
module Utils
|
26
|
+
|
27
|
+
# Provides convenience methods for handling named and numeric entities.
|
28
|
+
module Entities
|
29
|
+
|
30
|
+
# Represents an entity that has a +code_point+ and +name+.
|
31
|
+
class Entity < Struct.new(:code_point, :name)
|
32
|
+
|
33
|
+
# Return the UTF8 representation of the entity.
|
34
|
+
def char
|
35
|
+
[code_point].pack('U*') rescue nil
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
# Array of arrays. Each sub-array specifies a code point and the associated name.
|
41
|
+
#
|
42
|
+
# This table is not used directly -- Entity objects are automatically created from it and put
|
43
|
+
# into a Hash map when this file is loaded.
|
44
|
+
ENTITY_TABLE = [
|
45
|
+
[913, 'Alpha'],
|
46
|
+
[914, 'Beta'],
|
47
|
+
[915, 'Gamma'],
|
48
|
+
[916, 'Delta'],
|
49
|
+
[917, 'Epsilon'],
|
50
|
+
[918, 'Zeta'],
|
51
|
+
[919, 'Eta'],
|
52
|
+
[920, 'Theta'],
|
53
|
+
[921, 'Iota'],
|
54
|
+
[922, 'Kappa'],
|
55
|
+
[923, 'Lambda'],
|
56
|
+
[924, 'Mu'],
|
57
|
+
[925, 'Nu'],
|
58
|
+
[926, 'Xi'],
|
59
|
+
[927, 'Omicron'],
|
60
|
+
[928, 'Pi'],
|
61
|
+
[929, 'Rho'],
|
62
|
+
[931, 'Sigma'],
|
63
|
+
[932, 'Tau'],
|
64
|
+
[933, 'Upsilon'],
|
65
|
+
[934, 'Phi'],
|
66
|
+
[935, 'Chi'],
|
67
|
+
[936, 'Psi'],
|
68
|
+
[937, 'Omega'],
|
69
|
+
[945, 'alpha'],
|
70
|
+
[946, 'beta'],
|
71
|
+
[947, 'gamma'],
|
72
|
+
[948, 'delta'],
|
73
|
+
[949, 'epsilon'],
|
74
|
+
[950, 'zeta'],
|
75
|
+
[951, 'eta'],
|
76
|
+
[952, 'theta'],
|
77
|
+
[953, 'iota'],
|
78
|
+
[954, 'kappa'],
|
79
|
+
[955, 'lambda'],
|
80
|
+
[956, 'mu'],
|
81
|
+
[957, 'nu'],
|
82
|
+
[958, 'xi'],
|
83
|
+
[959, 'omicron'],
|
84
|
+
[960, 'pi'],
|
85
|
+
[961, 'rho'],
|
86
|
+
[963, 'sigma'],
|
87
|
+
[964, 'tau'],
|
88
|
+
[965, 'upsilon'],
|
89
|
+
[966, 'phi'],
|
90
|
+
[967, 'chi'],
|
91
|
+
[968, 'psi'],
|
92
|
+
[969, 'omega'],
|
93
|
+
[962, 'sigmaf'],
|
94
|
+
[977, 'thetasym'],
|
95
|
+
[982, 'piv'],
|
96
|
+
[8230, 'hellip'],
|
97
|
+
[8242, 'prime'],
|
98
|
+
[8254, 'oline'],
|
99
|
+
[8260, 'frasl'],
|
100
|
+
[8472, 'weierp'],
|
101
|
+
[8465, 'image'],
|
102
|
+
[8476, 'real'],
|
103
|
+
[8501, 'alefsym'],
|
104
|
+
[8226, 'bull'],
|
105
|
+
[8482, 'trade'],
|
106
|
+
[8592, 'larr'],
|
107
|
+
[8594, 'rarr'],
|
108
|
+
[8593, 'uarr'],
|
109
|
+
[8595, 'darr'],
|
110
|
+
[8596, 'harr'],
|
111
|
+
[8629, 'crarr'],
|
112
|
+
[8657, 'uArr'],
|
113
|
+
[8659, 'dArr'],
|
114
|
+
[8656, 'lArr'],
|
115
|
+
[8658, 'rArr'],
|
116
|
+
[8660, 'hArr'],
|
117
|
+
[8704, 'forall'],
|
118
|
+
[8706, 'part'],
|
119
|
+
[8707, 'exist'],
|
120
|
+
[8709, 'empty'],
|
121
|
+
[8711, 'nabla'],
|
122
|
+
[8712, 'isin'],
|
123
|
+
[8715, 'ni'],
|
124
|
+
[8713, 'notin'],
|
125
|
+
[8721, 'sum'],
|
126
|
+
[8719, 'prod'],
|
127
|
+
[8722, 'minus'],
|
128
|
+
[8727, 'lowast'],
|
129
|
+
[8730, 'radic'],
|
130
|
+
[8733, 'prop'],
|
131
|
+
[8734, 'infin'],
|
132
|
+
[8736, 'ang'],
|
133
|
+
[8743, 'and'],
|
134
|
+
[8744, 'or'],
|
135
|
+
[8745, 'cup'],
|
136
|
+
[8746, 'cap'],
|
137
|
+
[8747, 'int'],
|
138
|
+
[8756, 'there4'],
|
139
|
+
[8764, 'sim'],
|
140
|
+
[8776, 'asymp'],
|
141
|
+
[8773, 'cong'],
|
142
|
+
[8800, 'ne'],
|
143
|
+
[8801, 'equiv'],
|
144
|
+
[8804, 'le'],
|
145
|
+
[8805, 'ge'],
|
146
|
+
[8834, 'sub'],
|
147
|
+
[8835, 'sup'],
|
148
|
+
[8838, 'sube'],
|
149
|
+
[8839, 'supe'],
|
150
|
+
[8836, 'nsub'],
|
151
|
+
[8853, 'oplus'],
|
152
|
+
[8855, 'otimes'],
|
153
|
+
[8869, 'perp'],
|
154
|
+
[8901, 'sdot'],
|
155
|
+
[8968, 'rceil'],
|
156
|
+
[8969, 'lceil'],
|
157
|
+
[8970, 'lfloor'],
|
158
|
+
[8971, 'rfloor'],
|
159
|
+
[9001, 'rang'],
|
160
|
+
[9002, 'lang'],
|
161
|
+
[9674, 'loz'],
|
162
|
+
[9824, 'spades'],
|
163
|
+
[9827, 'clubs'],
|
164
|
+
[9829, 'hearts'],
|
165
|
+
[9830, 'diams'],
|
166
|
+
[38, 'amp'],
|
167
|
+
[34, 'quot'],
|
168
|
+
[39, 'apos'],
|
169
|
+
[169, 'copy'],
|
170
|
+
[60, 'lt'],
|
171
|
+
[62, 'gt'],
|
172
|
+
[338, 'OElig'],
|
173
|
+
[339, 'oelig'],
|
174
|
+
[352, 'Scaron'],
|
175
|
+
[353, 'scaron'],
|
176
|
+
[376, 'Yuml'],
|
177
|
+
[710, 'circ'],
|
178
|
+
[732, 'tilde'],
|
179
|
+
[8211, 'ndash'],
|
180
|
+
[8212, 'mdash'],
|
181
|
+
[8216, 'lsquo'],
|
182
|
+
[8217, 'rsquo'],
|
183
|
+
[8220, 'ldquo'],
|
184
|
+
[8221, 'rdquo'],
|
185
|
+
[8224, 'dagger'],
|
186
|
+
[8225, 'Dagger'],
|
187
|
+
[8240, 'permil'],
|
188
|
+
[8364, 'euro'],
|
189
|
+
[8249, 'lsaquo'],
|
190
|
+
[8250, 'rsaquo'],
|
191
|
+
[160, 'nbsp'],
|
192
|
+
[161, 'iexcl'],
|
193
|
+
[163, 'pound'],
|
194
|
+
[164, 'curren'],
|
195
|
+
[165, 'yen'],
|
196
|
+
[166, 'brvbar'],
|
197
|
+
[167, 'sect'],
|
198
|
+
[171, 'laquo'],
|
199
|
+
[187, 'raquo'],
|
200
|
+
[174, 'reg'],
|
201
|
+
[170, 'ordf'],
|
202
|
+
[172, 'not'],
|
203
|
+
[176, 'deg'],
|
204
|
+
[177, 'plusmn'],
|
205
|
+
[180, 'acute'],
|
206
|
+
[181, 'micro'],
|
207
|
+
[182, 'para'],
|
208
|
+
[183, 'middot'],
|
209
|
+
[186, 'ordm'],
|
210
|
+
[162, 'cent'],
|
211
|
+
[185, 'sup1'],
|
212
|
+
[178, 'sup2'],
|
213
|
+
[179, 'sup3'],
|
214
|
+
[189, 'frac12'],
|
215
|
+
[188, 'frac14'],
|
216
|
+
[190, 'frac34'],
|
217
|
+
[192, 'Agrave'],
|
218
|
+
[193, 'Aacute'],
|
219
|
+
[194, 'Acirc'],
|
220
|
+
[195, 'Atilde'],
|
221
|
+
[196, 'Auml'],
|
222
|
+
[197, 'Aring'],
|
223
|
+
[198, 'AElig'],
|
224
|
+
[199, 'Ccedil'],
|
225
|
+
[200, 'Egrave'],
|
226
|
+
[201, 'Eacute'],
|
227
|
+
[202, 'Ecirc'],
|
228
|
+
[203, 'Euml'],
|
229
|
+
[204, 'Igrave'],
|
230
|
+
[205, 'Iacute'],
|
231
|
+
[206, 'Icirc'],
|
232
|
+
[207, 'Iuml'],
|
233
|
+
[208, 'ETH'],
|
234
|
+
[209, 'Ntilde'],
|
235
|
+
[210, 'Ograve'],
|
236
|
+
[211, 'Oacute'],
|
237
|
+
[212, 'Ocirc'],
|
238
|
+
[213, 'Otilde'],
|
239
|
+
[214, 'Ouml'],
|
240
|
+
[215, 'times'],
|
241
|
+
[216, 'Oslash'],
|
242
|
+
[217, 'Ugrave'],
|
243
|
+
[218, 'Uacute'],
|
244
|
+
[219, 'Ucirc'],
|
245
|
+
[220, 'Uuml'],
|
246
|
+
[221, 'Yacute'],
|
247
|
+
[222, 'THORN'],
|
248
|
+
[223, 'szlig'],
|
249
|
+
[224, 'agrave'],
|
250
|
+
[225, 'aacute'],
|
251
|
+
[226, 'acirc'],
|
252
|
+
[227, 'atilde'],
|
253
|
+
[228, 'auml'],
|
254
|
+
[229, 'aring'],
|
255
|
+
[230, 'aelig'],
|
256
|
+
[231, 'ccedil'],
|
257
|
+
[232, 'egrave'],
|
258
|
+
[233, 'eacute'],
|
259
|
+
[234, 'ecirc'],
|
260
|
+
[235, 'euml'],
|
261
|
+
[236, 'igrave'],
|
262
|
+
[237, 'iacute'],
|
263
|
+
[238, 'icirc'],
|
264
|
+
[239, 'iuml'],
|
265
|
+
[240, 'eth'],
|
266
|
+
[241, 'ntilde'],
|
267
|
+
[242, 'ograve'],
|
268
|
+
[243, 'oacute'],
|
269
|
+
[244, 'ocirc'],
|
270
|
+
[245, 'otilde'],
|
271
|
+
[246, 'ouml'],
|
272
|
+
[247, 'divide'],
|
273
|
+
[248, 'oslash'],
|
274
|
+
[249, 'ugrave'],
|
275
|
+
[250, 'uacute'],
|
276
|
+
[251, 'ucirc'],
|
277
|
+
[252, 'uuml'],
|
278
|
+
[253, 'yacute'],
|
279
|
+
[254, 'thorn'],
|
280
|
+
[255, 'yuml'],
|
281
|
+
|
282
|
+
[8218, 'sbquo'],
|
283
|
+
[402, 'fnof'],
|
284
|
+
[8222, 'bdquo'],
|
285
|
+
|
286
|
+
[128, 8364],
|
287
|
+
[130, 8218],
|
288
|
+
[131, 402],
|
289
|
+
[132, 8222],
|
290
|
+
[133, 8230],
|
291
|
+
[134, 8224],
|
292
|
+
[135, 8225],
|
293
|
+
[136, 710],
|
294
|
+
[137, 8240],
|
295
|
+
[138, 352],
|
296
|
+
[139, 8249],
|
297
|
+
[140, 338],
|
298
|
+
[142, 381],
|
299
|
+
[145, 8216],
|
300
|
+
[146, 8217],
|
301
|
+
[147, 8220],
|
302
|
+
[148, 8221],
|
303
|
+
[149, 8226],
|
304
|
+
[150, 8211],
|
305
|
+
[151, 8212],
|
306
|
+
[152, 732],
|
307
|
+
[153, 8482],
|
308
|
+
[154, 353],
|
309
|
+
[155, 8250],
|
310
|
+
[156, 339],
|
311
|
+
[158, 382],
|
312
|
+
[159, 376],
|
313
|
+
|
314
|
+
[8194, 'ensp'],
|
315
|
+
[8195, 'emsp'],
|
316
|
+
[8201, 'thinsp'],
|
317
|
+
]
|
318
|
+
|
319
|
+
# Contains the mapping of code point (or name) to the actual Entity object.
|
320
|
+
ENTITY_MAP = Hash.new do |h,k|
|
321
|
+
if k.kind_of?(Integer)
|
322
|
+
h[k] = Entity.new(k, nil)
|
323
|
+
else
|
324
|
+
raise Kramdown::Error, "Can't handle generic non-integer character reference '#{k}'"
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
ENTITY_TABLE.each do |code_point, data|
|
329
|
+
if data.kind_of?(String)
|
330
|
+
ENTITY_MAP[code_point] = ENTITY_MAP[data] = Entity.new(code_point, data)
|
331
|
+
else
|
332
|
+
ENTITY_MAP[code_point] = ENTITY_MAP[data]
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
336
|
+
# Return the entity for the given code point or name +point_or_name+.
|
337
|
+
def entity(point_or_name)
|
338
|
+
ENTITY_MAP[point_or_name]
|
339
|
+
end
|
340
|
+
|
341
|
+
module_function :entity
|
342
|
+
|
343
|
+
end
|
344
|
+
|
345
|
+
end
|
346
|
+
|
347
|
+
end
|
348
|
+
|