org-ruby 0.8.1 → 0.8.2
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/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
|
|