org-ruby 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +8 -0
- data/lib/org-ruby.rb +1 -1
- data/lib/org-ruby/headline.rb +4 -0
- data/lib/org-ruby/html_output_buffer.rb +7 -2
- data/lib/org-ruby/html_symbol_replace.rb +343 -343
- data/lib/org-ruby/line.rb +31 -1
- data/lib/org-ruby/output_buffer.rb +6 -1
- data/lib/org-ruby/parser.rb +97 -4
- data/lib/org-ruby/textile_output_buffer.rb +1 -2
- data/lib/org-ruby/textile_symbol_replace.rb +343 -343
- metadata +6 -5
data/lib/org-ruby/line.rb
CHANGED
@@ -66,13 +66,19 @@ module Orgmode
|
|
66
66
|
@line =~ PropertyDrawerItemRegexp
|
67
67
|
end
|
68
68
|
|
69
|
+
def property_drawer_item
|
70
|
+
@line =~ PropertyDrawerItemRegexp
|
71
|
+
|
72
|
+
[$1, $2]
|
73
|
+
end
|
74
|
+
|
69
75
|
# Tests if a line contains metadata instead of actual content.
|
70
76
|
def metadata?
|
71
77
|
check_assignment_or_regexp(:metadata, /^\s*(CLOCK|DEADLINE|START|CLOSED|SCHEDULED):/)
|
72
78
|
end
|
73
79
|
|
74
80
|
def nonprinting?
|
75
|
-
comment? || metadata? || begin_block? || end_block?
|
81
|
+
comment? || metadata? || begin_block? || end_block? || include_file?
|
76
82
|
end
|
77
83
|
|
78
84
|
def blank?
|
@@ -218,6 +224,30 @@ module Orgmode
|
|
218
224
|
end
|
219
225
|
end
|
220
226
|
|
227
|
+
LinkAbbrevRegexp = /^\s*#\+LINK:\s*(\w+)\s+(.+)$/i
|
228
|
+
|
229
|
+
def link_abbrev?
|
230
|
+
@line =~ LinkAbbrevRegexp
|
231
|
+
end
|
232
|
+
|
233
|
+
def link_abbrev_data
|
234
|
+
[$1, $2] if @line =~ LinkAbbrevRegexp
|
235
|
+
end
|
236
|
+
|
237
|
+
IncludeFileRegexp = /^\s*#\+INCLUDE:\s*"([^"]+)"(\s+([^\s]+)\s+(.*))?$/i
|
238
|
+
|
239
|
+
def include_file?
|
240
|
+
@line =~ IncludeFileRegexp
|
241
|
+
end
|
242
|
+
|
243
|
+
def include_file_path
|
244
|
+
File.expand_path $1 if @line =~ IncludeFileRegexp
|
245
|
+
end
|
246
|
+
|
247
|
+
def include_file_options
|
248
|
+
[$3, $4] if @line =~ IncludeFileRegexp and !$2.nil?
|
249
|
+
end
|
250
|
+
|
221
251
|
# Determines the paragraph type of the current line.
|
222
252
|
def determine_paragraph_type
|
223
253
|
@paragraph_type = \
|
@@ -46,8 +46,9 @@ module Orgmode
|
|
46
46
|
@mode_stack.last
|
47
47
|
end
|
48
48
|
|
49
|
-
def push_mode(mode)
|
49
|
+
def push_mode(mode, indent)
|
50
50
|
@mode_stack.push(mode)
|
51
|
+
@list_indent_stack.push(indent)
|
51
52
|
end
|
52
53
|
|
53
54
|
def pop_mode(mode = nil)
|
@@ -200,6 +201,10 @@ module Orgmode
|
|
200
201
|
end
|
201
202
|
end
|
202
203
|
|
204
|
+
def add_line_attributes headline
|
205
|
+
# Implemented by specific output buffers
|
206
|
+
end
|
207
|
+
|
203
208
|
def output_footnotes!
|
204
209
|
return false
|
205
210
|
end
|
data/lib/org-ruby/parser.rb
CHANGED
@@ -96,11 +96,56 @@ module Orgmode
|
|
96
96
|
@header_lines = []
|
97
97
|
@in_buffer_settings = { }
|
98
98
|
@options = { }
|
99
|
+
@link_abbrevs = { }
|
100
|
+
|
101
|
+
parse_lines @lines, offset
|
102
|
+
end
|
103
|
+
|
104
|
+
# Check include file availability and permissions
|
105
|
+
def check_include_file(file_path)
|
106
|
+
can_be_included = File.exists? file_path
|
107
|
+
|
108
|
+
if not ENV['ORG_RUBY_INCLUDE_ROOT'].nil?
|
109
|
+
# Ensure we have full paths
|
110
|
+
root_path = File.expand_path ENV['ORG_RUBY_INCLUDE_ROOT']
|
111
|
+
file_path = File.expand_path file_path
|
112
|
+
|
113
|
+
# Check if file is in the defined root path and really exists
|
114
|
+
if file_path.slice(0, root_path.length) != root_path
|
115
|
+
can_be_included = false
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
can_be_included
|
120
|
+
end
|
121
|
+
|
122
|
+
# Parse lines
|
123
|
+
def parse_lines(lines, offset)
|
99
124
|
mode = :normal
|
100
125
|
previous_line = nil
|
101
126
|
table_header_set = false
|
102
|
-
|
127
|
+
lines.each do |text|
|
103
128
|
line = Line.new text, self
|
129
|
+
|
130
|
+
# Disable file include feature by default since it would be dangerous in some environments
|
131
|
+
# It can be activated either by setting a ORG_RUBY_ENABLE_INCLUDE_FILES environment variable
|
132
|
+
# or by setting a root path for included file via the ORG_RUBY_INCLUDE_ROOT environment variable
|
133
|
+
if ENV['ORG_RUBY_ENABLE_INCLUDE_FILES'] == 'true' \
|
134
|
+
or not ENV['ORG_RUBY_INCLUDE_ROOT'].nil?
|
135
|
+
if line.include_file? and not line.include_file_path.nil?
|
136
|
+
next if not check_include_file line.include_file_path
|
137
|
+
include_data = get_include_data line
|
138
|
+
include_lines = Orgmode::Parser.new(include_data).lines
|
139
|
+
parse_lines include_lines, offset
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
# Store link abbreviations
|
144
|
+
if line.link_abbrev?
|
145
|
+
link_abbrev_data = line.link_abbrev_data
|
146
|
+
@link_abbrevs[link_abbrev_data[0]] = link_abbrev_data[1]
|
147
|
+
end
|
148
|
+
|
104
149
|
mode = :normal if line.end_block? and mode == line.paragraph_type
|
105
150
|
mode = :normal if line.property_drawer_end_block? and mode == :property_drawer
|
106
151
|
|
@@ -130,7 +175,11 @@ module Orgmode
|
|
130
175
|
end
|
131
176
|
|
132
177
|
mode = line.paragraph_type if line.begin_block?
|
133
|
-
mode = :property_drawer if
|
178
|
+
mode = :property_drawer if previous_line and previous_line.property_drawer_begin_block?
|
179
|
+
end
|
180
|
+
|
181
|
+
if mode == :property_drawer and @current_headline
|
182
|
+
@current_headline.property_drawer[line.property_drawer_item.first] = line.property_drawer_item.last
|
134
183
|
end
|
135
184
|
|
136
185
|
unless mode == :comment
|
@@ -142,9 +191,52 @@ module Orgmode
|
|
142
191
|
end
|
143
192
|
|
144
193
|
previous_line = line
|
145
|
-
end #
|
194
|
+
end # lines.each
|
146
195
|
end # initialize
|
147
196
|
|
197
|
+
# Get include data, when #+INCLUDE tag is used
|
198
|
+
# @link http://orgmode.org/manual/Include-files.html
|
199
|
+
def get_include_data(line)
|
200
|
+
return IO.read(line.include_file_path) if line.include_file_options.nil?
|
201
|
+
|
202
|
+
case line.include_file_options[0]
|
203
|
+
when ':lines'
|
204
|
+
# Get options
|
205
|
+
include_file_lines = line.include_file_options[1].gsub('"', '').split('-')
|
206
|
+
include_file_lines[0] = include_file_lines[0].empty? ? 1 : include_file_lines[0].to_i
|
207
|
+
include_file_lines[1] = include_file_lines[1].to_i if !include_file_lines[1].nil?
|
208
|
+
|
209
|
+
# Extract request lines. Note that the second index is excluded, according to the doc
|
210
|
+
line_index = 1
|
211
|
+
include_data = []
|
212
|
+
File.open(line.include_file_path, "r") do |fd|
|
213
|
+
while line_data = fd.gets
|
214
|
+
if (line_index >= include_file_lines[0] and (include_file_lines[1].nil? or line_index < include_file_lines[1]))
|
215
|
+
include_data << line_data.chomp
|
216
|
+
end
|
217
|
+
line_index += 1
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
when 'src', 'example', 'quote'
|
222
|
+
# Prepare tags
|
223
|
+
begin_tag = '#+BEGIN_%s' % [line.include_file_options[0].upcase]
|
224
|
+
if line.include_file_options[0] == 'src' and !line.include_file_options[1].nil?
|
225
|
+
begin_tag += ' ' + line.include_file_options[1]
|
226
|
+
end
|
227
|
+
end_tag = '#+END_%s' % [line.include_file_options[0].upcase]
|
228
|
+
|
229
|
+
# Get lines. Will be transformed into an array at processing
|
230
|
+
include_data = "%s\n%s\n%s" % [begin_tag, IO.read(line.include_file_path), end_tag]
|
231
|
+
|
232
|
+
else
|
233
|
+
include_data = []
|
234
|
+
end
|
235
|
+
# @todo: support ":minlevel"
|
236
|
+
|
237
|
+
include_data
|
238
|
+
end
|
239
|
+
|
148
240
|
# Creates a new parser from the data in a given file
|
149
241
|
def self.load(fname)
|
150
242
|
lines = IO.readlines(fname)
|
@@ -171,7 +263,8 @@ module Orgmode
|
|
171
263
|
:export_heading_number => export_heading_number?,
|
172
264
|
:export_todo => export_todo?,
|
173
265
|
:use_sub_superscripts => use_sub_superscripts?,
|
174
|
-
:export_footnotes => export_footnotes
|
266
|
+
:export_footnotes => export_footnotes?,
|
267
|
+
:link_abbrevs => @link_abbrevs
|
175
268
|
}
|
176
269
|
export_options[:skip_tables] = true if not export_tables?
|
177
270
|
output = ""
|
@@ -3,351 +3,351 @@
|
|
3
3
|
|
4
4
|
module Orgmode
|
5
5
|
TextileEntities = {
|
6
|
-
"Agrave"
|
7
|
-
"agrave"
|
8
|
-
"Aacute"
|
9
|
-
"aacute"
|
10
|
-
"Acirc"
|
11
|
-
"acirc"
|
12
|
-
"Atilde"
|
13
|
-
"atilde"
|
14
|
-
"Auml"
|
15
|
-
"auml"
|
16
|
-
"Aring"
|
17
|
-
"AA"
|
18
|
-
"aring"
|
19
|
-
"AElig"
|
20
|
-
"aelig"
|
21
|
-
"Ccedil"
|
22
|
-
"ccedil"
|
23
|
-
"Egrave"
|
24
|
-
"egrave"
|
25
|
-
"Eacute"
|
26
|
-
"eacute"
|
27
|
-
"Ecirc"
|
28
|
-
"ecirc"
|
29
|
-
"Euml"
|
30
|
-
"euml"
|
31
|
-
"Igrave"
|
32
|
-
"igrave"
|
33
|
-
"Iacute"
|
34
|
-
"iacute"
|
35
|
-
"Icirc"
|
36
|
-
"icirc"
|
37
|
-
"Iuml"
|
38
|
-
"iuml"
|
39
|
-
"Ntilde"
|
40
|
-
"ntilde"
|
41
|
-
"Ograve"
|
42
|
-
"ograve"
|
43
|
-
"Oacute"
|
44
|
-
"oacute"
|
45
|
-
"Ocirc"
|
46
|
-
"ocirc"
|
47
|
-
"Otilde"
|
48
|
-
"otilde"
|
49
|
-
"Ouml"
|
50
|
-
"ouml"
|
51
|
-
"Oslash"
|
52
|
-
"oslash"
|
53
|
-
"OElig"
|
54
|
-
"oelig"
|
55
|
-
"Scaron"
|
56
|
-
"scaron"
|
57
|
-
"szlig"
|
58
|
-
"Ugrave"
|
59
|
-
"ugrave"
|
60
|
-
"Uacute"
|
61
|
-
"uacute"
|
62
|
-
"Ucirc"
|
63
|
-
"ucirc"
|
64
|
-
"Uuml"
|
65
|
-
"uuml"
|
66
|
-
"Yacute"
|
67
|
-
"yacute"
|
68
|
-
"Yuml"
|
69
|
-
"yuml"
|
70
|
-
"fnof"
|
71
|
-
"real"
|
72
|
-
"image"
|
73
|
-
"weierp"
|
74
|
-
"Alpha"
|
75
|
-
"alpha"
|
76
|
-
"Beta"
|
77
|
-
"beta"
|
78
|
-
"Gamma"
|
79
|
-
"gamma"
|
80
|
-
"Delta"
|
81
|
-
"delta"
|
82
|
-
"Epsilon"
|
83
|
-
"epsilon"
|
84
|
-
"varepsilon"
|
85
|
-
"Zeta"
|
86
|
-
"zeta"
|
87
|
-
"Eta"
|
88
|
-
"eta"
|
89
|
-
"Theta"
|
90
|
-
"theta"
|
91
|
-
"thetasym"
|
92
|
-
"vartheta"
|
93
|
-
"Iota"
|
94
|
-
"iota"
|
95
|
-
"Kappa"
|
96
|
-
"kappa"
|
97
|
-
"Lambda"
|
98
|
-
"lambda"
|
99
|
-
"Mu"
|
100
|
-
"mu"
|
101
|
-
"nu"
|
102
|
-
"Nu"
|
103
|
-
"Xi"
|
104
|
-
"xi"
|
105
|
-
"Omicron"
|
106
|
-
"omicron"
|
107
|
-
"Pi"
|
108
|
-
"pi"
|
109
|
-
"Rho"
|
110
|
-
"rho"
|
111
|
-
"Sigma"
|
112
|
-
"sigma"
|
113
|
-
"sigmaf"
|
114
|
-
"varsigma"
|
115
|
-
"Tau"
|
116
|
-
"Upsilon"
|
117
|
-
"upsih"
|
118
|
-
"upsilon"
|
119
|
-
"Phi"
|
120
|
-
"phi"
|
121
|
-
"Chi"
|
122
|
-
"chi"
|
123
|
-
"acutex"
|
124
|
-
"Psi"
|
125
|
-
"psi"
|
126
|
-
"tau"
|
127
|
-
"Omega"
|
128
|
-
"omega"
|
129
|
-
"piv"
|
130
|
-
"partial"
|
131
|
-
"alefsym"
|
132
|
-
"ETH"
|
133
|
-
"eth"
|
134
|
-
"THORN"
|
135
|
-
"thorn"
|
136
|
-
"dots"
|
137
|
-
"hellip"
|
138
|
-
"middot"
|
139
|
-
"iexcl"
|
140
|
-
"iquest"
|
141
|
-
"shy"
|
142
|
-
"ndash"
|
143
|
-
"mdash"
|
144
|
-
"quot"
|
145
|
-
"acute"
|
146
|
-
"ldquo"
|
147
|
-
"rdquo"
|
148
|
-
"bdquo"
|
149
|
-
"lsquo"
|
150
|
-
"rsquo"
|
151
|
-
"sbquo"
|
152
|
-
"laquo"
|
153
|
-
"raquo"
|
154
|
-
"lsaquo"
|
155
|
-
"rsaquo"
|
156
|
-
"circ"
|
157
|
-
"vert"
|
158
|
-
"brvbar"
|
159
|
-
"sect"
|
160
|
-
"amp"
|
161
|
-
"lt"
|
162
|
-
"gt"
|
163
|
-
"tilde"
|
164
|
-
"slash"
|
165
|
-
"plus"
|
166
|
-
"under"
|
167
|
-
"equal"
|
168
|
-
"asciicirc"
|
169
|
-
"dagger"
|
170
|
-
"Dagger"
|
171
|
-
"nbsp"
|
172
|
-
"ensp"
|
173
|
-
"emsp"
|
174
|
-
"thinsp"
|
175
|
-
"curren"
|
176
|
-
"cent"
|
177
|
-
"pound"
|
178
|
-
"yen"
|
179
|
-
"euro"
|
180
|
-
"EUR"
|
181
|
-
"EURdig"
|
182
|
-
"EURhv"
|
183
|
-
"EURcr"
|
184
|
-
"EURtm"
|
185
|
-
"copy"
|
186
|
-
"reg"
|
187
|
-
"trade"
|
188
|
-
"minus"
|
189
|
-
"pm"
|
190
|
-
"plusmn"
|
191
|
-
"times"
|
192
|
-
"frasl"
|
193
|
-
"div"
|
194
|
-
"frac12"
|
195
|
-
"frac14"
|
196
|
-
"frac34"
|
197
|
-
"permil"
|
198
|
-
"sup1"
|
199
|
-
"sup2"
|
200
|
-
"sup3"
|
201
|
-
"radic"
|
202
|
-
"sum"
|
203
|
-
"prod"
|
204
|
-
"micro"
|
205
|
-
"macr"
|
206
|
-
"deg"
|
207
|
-
"prime"
|
208
|
-
"Prime"
|
209
|
-
"infin"
|
210
|
-
"infty"
|
211
|
-
"prop"
|
212
|
-
"proptp"
|
213
|
-
"not"
|
214
|
-
"neg"
|
215
|
-
"land"
|
216
|
-
"wedge"
|
217
|
-
"lor"
|
218
|
-
"vee"
|
219
|
-
"cap"
|
220
|
-
"cup"
|
221
|
-
"int"
|
222
|
-
"there4"
|
223
|
-
"sim"
|
224
|
-
"cong"
|
225
|
-
"simeq"
|
226
|
-
"asymp"
|
227
|
-
"approx"
|
228
|
-
"ne"
|
229
|
-
"neq"
|
230
|
-
"equiv"
|
231
|
-
"le"
|
232
|
-
"ge"
|
233
|
-
"sub"
|
234
|
-
"subset"
|
235
|
-
"sup"
|
236
|
-
"supset"
|
237
|
-
"nsub"
|
238
|
-
"sube"
|
239
|
-
"nsup"
|
240
|
-
"supe"
|
241
|
-
"forall"
|
242
|
-
"exist"
|
243
|
-
"exists"
|
244
|
-
"empty"
|
245
|
-
"emptyset"
|
246
|
-
"isin"
|
247
|
-
"in"
|
248
|
-
"notin"
|
249
|
-
"ni"
|
250
|
-
"nabla"
|
251
|
-
"ang"
|
252
|
-
"angle"
|
253
|
-
"perp"
|
254
|
-
"sdot"
|
255
|
-
"cdot"
|
256
|
-
"lceil"
|
257
|
-
"rceil"
|
258
|
-
"lfloor"
|
259
|
-
"rfloor"
|
260
|
-
"lang"
|
261
|
-
"rang"
|
262
|
-
"larr"
|
263
|
-
"leftarrow"
|
264
|
-
"gets"
|
265
|
-
"lArr"
|
266
|
-
"Leftarrow"
|
267
|
-
"uarr"
|
268
|
-
"uparrow"
|
269
|
-
"uArr"
|
270
|
-
"Uparrow"
|
271
|
-
"rarr"
|
272
|
-
"to"
|
273
|
-
"rightarrow"
|
274
|
-
"rArr"
|
275
|
-
"Rightarrow"
|
276
|
-
"darr"
|
277
|
-
"downarrow"
|
278
|
-
"dArr"
|
279
|
-
"Downarrow"
|
280
|
-
"harr"
|
6
|
+
"Agrave" => "À",
|
7
|
+
"agrave" => "à",
|
8
|
+
"Aacute" => "Á",
|
9
|
+
"aacute" => "á",
|
10
|
+
"Acirc" => "Â",
|
11
|
+
"acirc" => "â",
|
12
|
+
"Atilde" => "Ã",
|
13
|
+
"atilde" => "ã",
|
14
|
+
"Auml" => "Ä",
|
15
|
+
"auml" => "ä",
|
16
|
+
"Aring" => "Å",
|
17
|
+
"AA" => "Å",
|
18
|
+
"aring" => "å",
|
19
|
+
"AElig" => "Æ",
|
20
|
+
"aelig" => "æ",
|
21
|
+
"Ccedil" => "Ç",
|
22
|
+
"ccedil" => "ç",
|
23
|
+
"Egrave" => "È",
|
24
|
+
"egrave" => "è",
|
25
|
+
"Eacute" => "É",
|
26
|
+
"eacute" => "é",
|
27
|
+
"Ecirc" => "Ê",
|
28
|
+
"ecirc" => "ê",
|
29
|
+
"Euml" => "Ë",
|
30
|
+
"euml" => "ë",
|
31
|
+
"Igrave" => "Ì",
|
32
|
+
"igrave" => "ì",
|
33
|
+
"Iacute" => "Í",
|
34
|
+
"iacute" => "í",
|
35
|
+
"Icirc" => "Î",
|
36
|
+
"icirc" => "î",
|
37
|
+
"Iuml" => "Ï",
|
38
|
+
"iuml" => "ï",
|
39
|
+
"Ntilde" => "Ñ",
|
40
|
+
"ntilde" => "ñ",
|
41
|
+
"Ograve" => "Ò",
|
42
|
+
"ograve" => "ò",
|
43
|
+
"Oacute" => "Ó",
|
44
|
+
"oacute" => "ó",
|
45
|
+
"Ocirc" => "Ô",
|
46
|
+
"ocirc" => "ô",
|
47
|
+
"Otilde" => "Õ",
|
48
|
+
"otilde" => "õ",
|
49
|
+
"Ouml" => "Ö",
|
50
|
+
"ouml" => "ö",
|
51
|
+
"Oslash" => "Ø",
|
52
|
+
"oslash" => "ø",
|
53
|
+
"OElig" => "Œ",
|
54
|
+
"oelig" => "œ",
|
55
|
+
"Scaron" => "Š",
|
56
|
+
"scaron" => "š",
|
57
|
+
"szlig" => "ß",
|
58
|
+
"Ugrave" => "Ù",
|
59
|
+
"ugrave" => "ù",
|
60
|
+
"Uacute" => "Ú",
|
61
|
+
"uacute" => "ú",
|
62
|
+
"Ucirc" => "Û",
|
63
|
+
"ucirc" => "û",
|
64
|
+
"Uuml" => "Ü",
|
65
|
+
"uuml" => "ü",
|
66
|
+
"Yacute" => "Ý",
|
67
|
+
"yacute" => "ý",
|
68
|
+
"Yuml" => "Ÿ",
|
69
|
+
"yuml" => "ÿ",
|
70
|
+
"fnof" => "ƒ",
|
71
|
+
"real" => "ℜ",
|
72
|
+
"image" => "ℑ",
|
73
|
+
"weierp" => "℘",
|
74
|
+
"Alpha" => "Α",
|
75
|
+
"alpha" => "α",
|
76
|
+
"Beta" => "Β",
|
77
|
+
"beta" => "β",
|
78
|
+
"Gamma" => "Γ",
|
79
|
+
"gamma" => "γ",
|
80
|
+
"Delta" => "Δ",
|
81
|
+
"delta" => "δ",
|
82
|
+
"Epsilon" => "Ε",
|
83
|
+
"epsilon" => "ε",
|
84
|
+
"varepsilon" => "ε",
|
85
|
+
"Zeta" => "Ζ",
|
86
|
+
"zeta" => "ζ",
|
87
|
+
"Eta" => "Η",
|
88
|
+
"eta" => "η",
|
89
|
+
"Theta" => "Θ",
|
90
|
+
"theta" => "θ",
|
91
|
+
"thetasym" => "ϑ",
|
92
|
+
"vartheta" => "ϑ",
|
93
|
+
"Iota" => "Ι",
|
94
|
+
"iota" => "ι",
|
95
|
+
"Kappa" => "Κ",
|
96
|
+
"kappa" => "κ",
|
97
|
+
"Lambda" => "Λ",
|
98
|
+
"lambda" => "λ",
|
99
|
+
"Mu" => "Μ",
|
100
|
+
"mu" => "μ",
|
101
|
+
"nu" => "ν",
|
102
|
+
"Nu" => "Ν",
|
103
|
+
"Xi" => "Ξ",
|
104
|
+
"xi" => "ξ",
|
105
|
+
"Omicron" => "Ο",
|
106
|
+
"omicron" => "ο",
|
107
|
+
"Pi" => "Π",
|
108
|
+
"pi" => "π",
|
109
|
+
"Rho" => "Ρ",
|
110
|
+
"rho" => "ρ",
|
111
|
+
"Sigma" => "Σ",
|
112
|
+
"sigma" => "σ",
|
113
|
+
"sigmaf" => "ς",
|
114
|
+
"varsigma" => "ς",
|
115
|
+
"Tau" => "Τ",
|
116
|
+
"Upsilon" => "Υ",
|
117
|
+
"upsih" => "ϒ",
|
118
|
+
"upsilon" => "υ",
|
119
|
+
"Phi" => "Φ",
|
120
|
+
"phi" => "φ",
|
121
|
+
"Chi" => "Χ",
|
122
|
+
"chi" => "χ",
|
123
|
+
"acutex" => "𝑥́",
|
124
|
+
"Psi" => "Ψ",
|
125
|
+
"psi" => "ψ",
|
126
|
+
"tau" => "τ",
|
127
|
+
"Omega" => "Ω",
|
128
|
+
"omega" => "ω",
|
129
|
+
"piv" => "ϖ",
|
130
|
+
"partial" => "∂",
|
131
|
+
"alefsym" => "ℵ",
|
132
|
+
"ETH" => "Ð",
|
133
|
+
"eth" => "ð",
|
134
|
+
"THORN" => "Þ",
|
135
|
+
"thorn" => "þ",
|
136
|
+
"dots" => "…",
|
137
|
+
"hellip" => "…",
|
138
|
+
"middot" => "·",
|
139
|
+
"iexcl" => "¡",
|
140
|
+
"iquest" => "¿",
|
141
|
+
"shy" => "",
|
142
|
+
"ndash" => "–",
|
143
|
+
"mdash" => "—",
|
144
|
+
"quot" => "\"",
|
145
|
+
"acute" => "´",
|
146
|
+
"ldquo" => "“",
|
147
|
+
"rdquo" => "”",
|
148
|
+
"bdquo" => "„",
|
149
|
+
"lsquo" => "‘",
|
150
|
+
"rsquo" => "’",
|
151
|
+
"sbquo" => "‚",
|
152
|
+
"laquo" => "«",
|
153
|
+
"raquo" => "»",
|
154
|
+
"lsaquo" => "‹",
|
155
|
+
"rsaquo" => "›",
|
156
|
+
"circ" => "ˆ",
|
157
|
+
"vert" => "|",
|
158
|
+
"brvbar" => "¦",
|
159
|
+
"sect" => "§",
|
160
|
+
"amp" => "&",
|
161
|
+
"lt" => "<",
|
162
|
+
"gt" => ">",
|
163
|
+
"tilde" => "~",
|
164
|
+
"slash" => "/",
|
165
|
+
"plus" => "+",
|
166
|
+
"under" => "_",
|
167
|
+
"equal" => "=",
|
168
|
+
"asciicirc" => "^",
|
169
|
+
"dagger" => "†",
|
170
|
+
"Dagger" => "‡",
|
171
|
+
"nbsp" => " ",
|
172
|
+
"ensp" => " ",
|
173
|
+
"emsp" => " ",
|
174
|
+
"thinsp" => " ",
|
175
|
+
"curren" => "¤",
|
176
|
+
"cent" => "¢",
|
177
|
+
"pound" => "£",
|
178
|
+
"yen" => "¥",
|
179
|
+
"euro" => "€",
|
180
|
+
"EUR" => "€",
|
181
|
+
"EURdig" => "€",
|
182
|
+
"EURhv" => "€",
|
183
|
+
"EURcr" => "€",
|
184
|
+
"EURtm" => "€",
|
185
|
+
"copy" => "©",
|
186
|
+
"reg" => "®",
|
187
|
+
"trade" => "™",
|
188
|
+
"minus" => "−",
|
189
|
+
"pm" => "±",
|
190
|
+
"plusmn" => "±",
|
191
|
+
"times" => "×",
|
192
|
+
"frasl" => "⁄",
|
193
|
+
"div" => "÷",
|
194
|
+
"frac12" => "½",
|
195
|
+
"frac14" => "¼",
|
196
|
+
"frac34" => "¾",
|
197
|
+
"permil" => "‰",
|
198
|
+
"sup1" => "¹",
|
199
|
+
"sup2" => "²",
|
200
|
+
"sup3" => "³",
|
201
|
+
"radic" => "√",
|
202
|
+
"sum" => "∑",
|
203
|
+
"prod" => "∏",
|
204
|
+
"micro" => "µ",
|
205
|
+
"macr" => "¯",
|
206
|
+
"deg" => "°",
|
207
|
+
"prime" => "′",
|
208
|
+
"Prime" => "″",
|
209
|
+
"infin" => "∞",
|
210
|
+
"infty" => "∞",
|
211
|
+
"prop" => "∝",
|
212
|
+
"proptp" => "∝",
|
213
|
+
"not" => "¬",
|
214
|
+
"neg" => "¬",
|
215
|
+
"land" => "∧",
|
216
|
+
"wedge" => "∧",
|
217
|
+
"lor" => "∨",
|
218
|
+
"vee" => "∨",
|
219
|
+
"cap" => "∩",
|
220
|
+
"cup" => "∪",
|
221
|
+
"int" => "∫",
|
222
|
+
"there4" => "∴",
|
223
|
+
"sim" => "∼",
|
224
|
+
"cong" => "≅",
|
225
|
+
"simeq" => "≅",
|
226
|
+
"asymp" => "≈",
|
227
|
+
"approx" => "≈",
|
228
|
+
"ne" => "≠",
|
229
|
+
"neq" => "≠",
|
230
|
+
"equiv" => "≡",
|
231
|
+
"le" => "≤",
|
232
|
+
"ge" => "≥",
|
233
|
+
"sub" => "⊂",
|
234
|
+
"subset" => "⊂",
|
235
|
+
"sup" => "⊃",
|
236
|
+
"supset" => "⊃",
|
237
|
+
"nsub" => "⊄",
|
238
|
+
"sube" => "⊆",
|
239
|
+
"nsup" => "⊅",
|
240
|
+
"supe" => "⊇",
|
241
|
+
"forall" => "∀",
|
242
|
+
"exist" => "∃",
|
243
|
+
"exists" => "∃",
|
244
|
+
"empty" => "∅",
|
245
|
+
"emptyset" => "∅",
|
246
|
+
"isin" => "∈",
|
247
|
+
"in" => "∈",
|
248
|
+
"notin" => "∉",
|
249
|
+
"ni" => "∋",
|
250
|
+
"nabla" => "∇",
|
251
|
+
"ang" => "∠",
|
252
|
+
"angle" => "∠",
|
253
|
+
"perp" => "⊥",
|
254
|
+
"sdot" => "⋅",
|
255
|
+
"cdot" => "⋅",
|
256
|
+
"lceil" => "⌈",
|
257
|
+
"rceil" => "⌉",
|
258
|
+
"lfloor" => "⌊",
|
259
|
+
"rfloor" => "⌋",
|
260
|
+
"lang" => "⟨",
|
261
|
+
"rang" => "⟩",
|
262
|
+
"larr" => "←",
|
263
|
+
"leftarrow" => "←",
|
264
|
+
"gets" => "←",
|
265
|
+
"lArr" => "⇐",
|
266
|
+
"Leftarrow" => "⇐",
|
267
|
+
"uarr" => "↑",
|
268
|
+
"uparrow" => "↑",
|
269
|
+
"uArr" => "⇑",
|
270
|
+
"Uparrow" => "⇑",
|
271
|
+
"rarr" => "→",
|
272
|
+
"to" => "→",
|
273
|
+
"rightarrow" => "→",
|
274
|
+
"rArr" => "⇒",
|
275
|
+
"Rightarrow" => "⇒",
|
276
|
+
"darr" => "↓",
|
277
|
+
"downarrow" => "↓",
|
278
|
+
"dArr" => "⇓",
|
279
|
+
"Downarrow" => "⇓",
|
280
|
+
"harr" => "↔",
|
281
281
|
"leftrightarrow" => "↔",
|
282
|
-
"hArr"
|
282
|
+
"hArr" => "⇔",
|
283
283
|
"Leftrightarrow" => "⇔",
|
284
|
-
"crarr"
|
285
|
-
"hookleftarrow"
|
286
|
-
"arccos"
|
287
|
-
"arcsin"
|
288
|
-
"arctan"
|
289
|
-
"arg"
|
290
|
-
"cos"
|
291
|
-
"cosh"
|
292
|
-
"cot"
|
293
|
-
"coth"
|
294
|
-
"csc"
|
295
|
-
"deg"
|
296
|
-
"det"
|
297
|
-
"dim"
|
298
|
-
"exp"
|
299
|
-
"gcd"
|
300
|
-
"hom"
|
301
|
-
"inf"
|
302
|
-
"ker"
|
303
|
-
"lg"
|
304
|
-
"lim"
|
305
|
-
"liminf"
|
306
|
-
"limsup"
|
307
|
-
"ln"
|
308
|
-
"log"
|
309
|
-
"max"
|
310
|
-
"min"
|
311
|
-
"Pr"
|
312
|
-
"sec"
|
313
|
-
"sin"
|
314
|
-
"sinh"
|
315
|
-
"sup"
|
316
|
-
"tan"
|
317
|
-
"tanh"
|
318
|
-
"bull"
|
319
|
-
"bullet"
|
320
|
-
"star"
|
321
|
-
"lowast"
|
322
|
-
"ast"
|
323
|
-
"odot"
|
324
|
-
"oplus"
|
325
|
-
"otimes"
|
326
|
-
"checkmark"
|
327
|
-
"para"
|
328
|
-
"ordf"
|
329
|
-
"ordm"
|
330
|
-
"cedil"
|
331
|
-
"oline"
|
332
|
-
"uml"
|
333
|
-
"zwnj"
|
334
|
-
"zwj"
|
335
|
-
"lrm"
|
336
|
-
"rlm"
|
337
|
-
"smile"
|
338
|
-
"smiley"
|
339
|
-
"blacksmile"
|
340
|
-
"sad"
|
341
|
-
"clubs"
|
342
|
-
"clubsuit"
|
343
|
-
"spades"
|
344
|
-
"spadesuit"
|
345
|
-
"hearts"
|
346
|
-
"heartsuit"
|
347
|
-
"diams"
|
348
|
-
"diamondsuit"
|
349
|
-
"Diamond"
|
350
|
-
"loz"
|
284
|
+
"crarr" => "↵",
|
285
|
+
"hookleftarrow" => "↵",
|
286
|
+
"arccos" => "arccos",
|
287
|
+
"arcsin" => "arcsin",
|
288
|
+
"arctan" => "arctan",
|
289
|
+
"arg" => "arg",
|
290
|
+
"cos" => "cos",
|
291
|
+
"cosh" => "cosh",
|
292
|
+
"cot" => "cot",
|
293
|
+
"coth" => "coth",
|
294
|
+
"csc" => "csc",
|
295
|
+
"deg" => "deg",
|
296
|
+
"det" => "det",
|
297
|
+
"dim" => "dim",
|
298
|
+
"exp" => "exp",
|
299
|
+
"gcd" => "gcd",
|
300
|
+
"hom" => "hom",
|
301
|
+
"inf" => "inf",
|
302
|
+
"ker" => "ker",
|
303
|
+
"lg" => "lg",
|
304
|
+
"lim" => "lim",
|
305
|
+
"liminf" => "liminf",
|
306
|
+
"limsup" => "limsup",
|
307
|
+
"ln" => "ln",
|
308
|
+
"log" => "log",
|
309
|
+
"max" => "max",
|
310
|
+
"min" => "min",
|
311
|
+
"Pr" => "Pr",
|
312
|
+
"sec" => "sec",
|
313
|
+
"sin" => "sin",
|
314
|
+
"sinh" => "sinh",
|
315
|
+
"sup" => "sup",
|
316
|
+
"tan" => "tan",
|
317
|
+
"tanh" => "tanh",
|
318
|
+
"bull" => "•",
|
319
|
+
"bullet" => "•",
|
320
|
+
"star" => "⋆",
|
321
|
+
"lowast" => "∗",
|
322
|
+
"ast" => "*",
|
323
|
+
"odot" => "ʘ",
|
324
|
+
"oplus" => "⊕",
|
325
|
+
"otimes" => "⊗",
|
326
|
+
"checkmark" => "✓",
|
327
|
+
"para" => "¶",
|
328
|
+
"ordf" => "ª",
|
329
|
+
"ordm" => "º",
|
330
|
+
"cedil" => "¸",
|
331
|
+
"oline" => "‾",
|
332
|
+
"uml" => "¨",
|
333
|
+
"zwnj" => "",
|
334
|
+
"zwj" => "",
|
335
|
+
"lrm" => "",
|
336
|
+
"rlm" => "",
|
337
|
+
"smile" => "⌣",
|
338
|
+
"smiley" => "☺",
|
339
|
+
"blacksmile" => "☻",
|
340
|
+
"sad" => "☹",
|
341
|
+
"clubs" => "♣",
|
342
|
+
"clubsuit" => "♣",
|
343
|
+
"spades" => "♠",
|
344
|
+
"spadesuit" => "♠",
|
345
|
+
"hearts" => "♥",
|
346
|
+
"heartsuit" => "♥",
|
347
|
+
"diams" => "♦",
|
348
|
+
"diamondsuit" => "♦",
|
349
|
+
"Diamond" => "⋄",
|
350
|
+
"loz" => "◊"
|
351
351
|
}
|
352
352
|
@org_entities_regexp = /\\(there4|sup[123]|frac[13][24]|[a-zA-Z]+)($|\{\}|[^a-zA-Z])/
|
353
353
|
|