Files
danbooru/app/logical/d_text_ragel.rb
2016-03-01 18:10:26 -08:00

1530 lines
33 KiB
Ruby

# line 1 "d_text_ragel.rl"
require 'cgi'
require 'uri'
require 'stringio'
# line 374 "d_text_ragel.rl"
class DTextRagel
# line 14 "d_text_ragel.rb"
class << self
attr_accessor :_dtext_actions
private :_dtext_actions, :_dtext_actions=
end
self._dtext_actions = [
0, 1, 0, 1, 1, 1, 2, 1,
3, 1, 4, 1, 5, 1, 6, 1,
11, 1, 12, 1, 13, 1, 14, 1,
15, 1, 16, 1, 17, 1, 18, 1,
19, 1, 20, 1, 21, 1, 22, 1,
23, 1, 24, 1, 25, 1, 26, 1,
27, 1, 28, 1, 29, 1, 30, 1,
31, 1, 32, 1, 33, 1, 34, 1,
35, 1, 36, 1, 37, 1, 38, 1,
39, 1, 40, 1, 41, 1, 42, 1,
43, 1, 44, 1, 45, 1, 46, 1,
47, 1, 48, 1, 49, 1, 50, 1,
51, 1, 52, 1, 55, 1, 56, 1,
57, 1, 58, 1, 61, 1, 62, 1,
63, 1, 64, 1, 65, 1, 66, 1,
67, 1, 68, 1, 69, 1, 70, 1,
71, 1, 72, 1, 73, 2, 0, 1,
2, 2, 3, 2, 6, 1, 2, 6,
7, 2, 6, 8, 2, 6, 9, 2,
6, 10, 2, 6, 53, 2, 6, 54,
2, 6, 60, 3, 6, 0, 1, 4,
6, 2, 3, 59
]
class << self
attr_accessor :_dtext_key_offsets
private :_dtext_key_offsets, :_dtext_key_offsets=
end
self._dtext_key_offsets = [
0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 30, 31, 32, 34, 35, 36,
37, 38, 40, 41, 42, 44, 47, 48,
49, 50, 51, 53, 54, 55, 57, 58,
65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 80, 81,
82, 83, 84, 85, 86, 87, 88, 89,
91, 93, 94, 95, 96, 97, 98, 99,
101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 114, 115, 116,
118, 119, 120, 121, 122, 123, 124, 125,
127, 128, 129, 130, 131, 132, 134, 135,
136, 138, 139, 140, 142, 143, 144, 145,
146, 147, 148, 150, 151, 152, 153, 154,
155, 157, 158, 160, 162, 163, 164, 165,
167, 168, 169, 170, 172, 173, 174, 175,
176, 177, 179, 180, 182, 183, 184, 185,
186, 188, 189, 190, 191, 192, 193, 194,
195, 196, 201, 202, 206, 208, 212, 214,
232, 234, 236, 237, 239, 241, 253, 260,
261, 263, 264, 266, 267, 269, 270, 272,
273, 275, 277, 280, 282, 284, 286, 287,
290, 292, 293, 295, 296, 298, 299
]
class << self
attr_accessor :_dtext_trans_keys
private :_dtext_trans_keys, :_dtext_trans_keys=
end
self._dtext_trans_keys = [
111, 100, 101, 93, 120, 112, 97, 110,
100, 61, 93, 93, 93, 117, 111, 116,
101, 93, 112, 111, 105, 108, 101, 114,
93, 46, 9, 32, 33, 126, 34, 58,
91, 104, 104, 116, 116, 112, 58, 115,
47, 47, 33, 126, 93, 33, 126, 58,
116, 116, 112, 58, 115, 47, 47, 33,
126, 58, 98, 101, 105, 113, 115, 116,
117, 93, 120, 112, 97, 110, 100, 93,
93, 117, 111, 116, 101, 93, 93, 112,
111, 105, 108, 101, 114, 93, 110, 93,
93, 93, 124, 93, 124, 93, 93, 93,
93, 93, 93, 93, 112, 111, 105, 108,
101, 114, 93, 110, 93, 93, 116, 105,
115, 116, 32, 35, 48, 57, 109, 109,
101, 110, 116, 32, 35, 48, 57, 114,
117, 109, 32, 35, 48, 57, 116, 112,
58, 115, 47, 47, 33, 126, 58, 115,
117, 101, 32, 35, 48, 57, 120, 105,
118, 32, 35, 48, 57, 112, 48, 57,
111, 115, 108, 32, 35, 48, 57, 116,
32, 35, 48, 57, 112, 105, 99, 32,
35, 48, 57, 112, 48, 57, 101, 114,
32, 35, 48, 57, 125, 125, 125, 99,
111, 100, 101, 93, 0, 10, 13, 91,
104, 10, 99, 101, 113, 115, 49, 54,
9, 32, 33, 126, 32, 126, 0, 10,
13, 34, 38, 60, 62, 64, 91, 97,
99, 102, 104, 105, 112, 116, 117, 123,
10, 13, 10, 13, 34, 33, 126, 33,
126, 33, 41, 44, 46, 61, 93, 34,
57, 58, 63, 64, 126, 47, 91, 98,
105, 115, 116, 117, 114, 48, 57, 111,
48, 57, 111, 48, 57, 116, 33, 126,
115, 48, 57, 105, 111, 47, 48, 57,
48, 57, 48, 57, 48, 57, 111, 47,
48, 57, 48, 57, 115, 48, 57, 123,
0, 91, 91, 47, 0
]
class << self
attr_accessor :_dtext_single_lengths
private :_dtext_single_lengths, :_dtext_single_lengths=
end
self._dtext_single_lengths = [
1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1,
1, 2, 1, 1, 2, 1, 1, 1,
1, 2, 1, 1, 0, 1, 1, 1,
1, 1, 2, 1, 1, 0, 1, 7,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 1, 1,
1, 1, 1, 1, 1, 1, 1, 2,
2, 1, 1, 1, 1, 1, 1, 2,
1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 1, 1, 1, 1, 1, 0,
1, 1, 1, 1, 1, 0, 1, 1,
2, 1, 1, 0, 1, 1, 1, 1,
1, 1, 0, 1, 1, 1, 1, 1,
0, 1, 0, 2, 1, 1, 1, 0,
1, 1, 1, 0, 1, 1, 1, 1,
1, 0, 1, 0, 1, 1, 1, 1,
0, 1, 1, 1, 1, 1, 1, 1,
1, 5, 1, 4, 0, 2, 0, 18,
2, 2, 1, 0, 0, 6, 7, 1,
0, 1, 0, 1, 0, 1, 0, 1,
0, 2, 1, 0, 0, 0, 1, 1,
0, 1, 0, 1, 2, 1, 1
]
class << self
attr_accessor :_dtext_range_lengths
private :_dtext_range_lengths, :_dtext_range_lengths=
end
self._dtext_range_lengths = [
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 1, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0,
1, 0, 1, 0, 0, 0, 0, 1,
0, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 3, 0, 0,
1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 1, 1, 1, 1, 0, 1,
1, 0, 1, 0, 0, 0, 0
]
class << self
attr_accessor :_dtext_index_offsets
private :_dtext_index_offsets, :_dtext_index_offsets=
end
self._dtext_index_offsets = [
0, 2, 4, 6, 8, 10, 12, 14,
16, 18, 21, 23, 25, 27, 29, 31,
33, 35, 37, 39, 41, 43, 45, 47,
49, 51, 55, 57, 59, 62, 64, 66,
68, 70, 73, 75, 77, 79, 82, 84,
86, 88, 90, 93, 95, 97, 99, 101,
109, 111, 113, 115, 117, 119, 121, 123,
125, 127, 129, 131, 133, 135, 138, 140,
142, 144, 146, 148, 150, 152, 154, 156,
159, 162, 164, 166, 168, 170, 172, 174,
177, 179, 181, 183, 185, 187, 189, 191,
193, 195, 197, 199, 201, 203, 205, 207,
209, 211, 213, 215, 217, 219, 221, 223,
225, 227, 229, 231, 233, 235, 237, 239,
241, 244, 246, 248, 250, 252, 254, 256,
258, 260, 262, 264, 266, 268, 270, 272,
274, 276, 278, 280, 283, 285, 287, 289,
291, 293, 295, 297, 299, 301, 303, 305,
307, 309, 311, 313, 315, 317, 319, 321,
323, 325, 327, 329, 331, 333, 335, 337,
339, 341, 347, 349, 354, 356, 360, 362,
381, 384, 387, 389, 391, 393, 403, 411,
413, 415, 417, 419, 421, 423, 425, 427,
429, 431, 434, 437, 439, 441, 443, 445,
448, 450, 452, 454, 456, 459, 461
]
class << self
attr_accessor :_dtext_trans_targs
private :_dtext_trans_targs, :_dtext_trans_targs=
end
self._dtext_trans_targs = [
1, 161, 2, 161, 3, 161, 161, 161,
5, 161, 6, 161, 7, 161, 8, 161,
9, 161, 10, 161, 161, 161, 11, 161,
11, 13, 161, 14, 161, 15, 161, 16,
161, 161, 161, 18, 161, 19, 161, 20,
161, 21, 161, 22, 161, 23, 161, 161,
161, 25, 161, 25, 165, 166, 161, 27,
26, 28, 167, 29, 39, 167, 30, 167,
31, 167, 32, 167, 33, 167, 34, 38,
167, 35, 167, 36, 167, 37, 167, 167,
37, 167, 34, 167, 40, 167, 41, 167,
42, 167, 43, 46, 167, 44, 167, 45,
167, 171, 167, 43, 167, 48, 49, 55,
56, 61, 68, 70, 167, 167, 167, 50,
167, 51, 167, 52, 167, 53, 167, 54,
167, 167, 167, 167, 167, 57, 167, 58,
167, 59, 167, 60, 167, 167, 167, 167,
62, 167, 63, 167, 64, 167, 65, 167,
66, 167, 67, 167, 167, 167, 69, 167,
167, 167, 167, 167, 167, 167, 72, 73,
74, 72, 167, 167, 167, 75, 76, 75,
167, 167, 167, 167, 167, 167, 167, 80,
167, 81, 167, 82, 167, 83, 167, 84,
167, 85, 167, 167, 167, 87, 167, 167,
167, 167, 167, 90, 167, 91, 167, 92,
167, 93, 167, 94, 167, 95, 167, 176,
167, 97, 167, 98, 167, 99, 167, 100,
167, 101, 167, 102, 167, 103, 167, 178,
167, 105, 167, 106, 167, 107, 167, 108,
167, 109, 167, 180, 167, 111, 167, 112,
167, 113, 116, 167, 114, 167, 115, 167,
182, 167, 113, 167, 118, 167, 119, 167,
120, 167, 121, 167, 122, 167, 184, 167,
124, 167, 125, 167, 126, 167, 127, 167,
128, 167, 186, 167, 130, 167, 187, 167,
132, 136, 167, 133, 167, 134, 167, 135,
167, 188, 167, 137, 167, 138, 167, 139,
167, 189, 167, 141, 167, 142, 167, 143,
167, 144, 167, 145, 167, 191, 167, 147,
167, 192, 167, 149, 167, 150, 167, 151,
167, 152, 167, 194, 167, 167, 154, 155,
154, 167, 167, 157, 196, 158, 196, 159,
196, 160, 196, 196, 196, 161, 161, 162,
163, 164, 161, 161, 161, 0, 4, 12,
17, 161, 24, 161, 25, 165, 166, 161,
166, 161, 167, 168, 169, 170, 167, 167,
167, 172, 174, 175, 177, 179, 181, 183,
185, 190, 193, 195, 167, 168, 168, 167,
168, 168, 167, 167, 26, 171, 167, 173,
167, 173, 173, 173, 173, 173, 173, 173,
173, 173, 167, 47, 71, 77, 78, 79,
86, 88, 167, 89, 167, 176, 167, 96,
167, 178, 167, 104, 167, 180, 167, 110,
167, 182, 167, 117, 167, 184, 167, 123,
131, 167, 129, 186, 167, 187, 167, 188,
167, 189, 167, 140, 167, 146, 191, 167,
192, 167, 148, 167, 194, 167, 153, 167,
197, 198, 197, 196, 197, 156, 196, 161,
161, 161, 161, 161, 161, 161, 161, 161,
161, 161, 161, 161, 161, 161, 161, 161,
161, 161, 161, 161, 161, 161, 161, 161,
161, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 196, 196, 196, 196, 196,
161, 161, 161, 161, 161, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 167, 167, 167, 167, 167, 167, 167,
167, 196, 196, 0
]
class << self
attr_accessor :_dtext_trans_actions
private :_dtext_trans_actions, :_dtext_trans_actions=
end
self._dtext_trans_actions = [
0, 129, 0, 129, 0, 129, 111, 129,
0, 129, 0, 129, 0, 129, 0, 129,
0, 129, 0, 113, 129, 129, 133, 115,
3, 0, 129, 0, 129, 0, 129, 0,
129, 107, 129, 0, 129, 0, 129, 0,
129, 0, 129, 0, 129, 0, 129, 109,
129, 0, 129, 0, 167, 136, 131, 3,
0, 0, 95, 0, 5, 95, 5, 95,
0, 95, 0, 95, 0, 95, 0, 0,
95, 0, 95, 0, 95, 7, 95, 21,
7, 95, 0, 95, 0, 95, 0, 95,
0, 95, 0, 0, 95, 0, 95, 0,
95, 7, 95, 0, 95, 0, 0, 0,
0, 0, 0, 0, 95, 25, 95, 0,
95, 0, 95, 0, 95, 0, 95, 0,
95, 49, 95, 29, 95, 0, 95, 0,
95, 0, 95, 0, 95, 43, 95, 33,
0, 95, 0, 95, 0, 95, 0, 95,
0, 95, 0, 95, 47, 95, 0, 95,
41, 95, 37, 95, 95, 95, 133, 0,
0, 3, 17, 95, 95, 136, 0, 7,
19, 95, 23, 95, 27, 95, 31, 0,
95, 0, 95, 0, 95, 0, 95, 0,
95, 0, 95, 45, 95, 0, 95, 39,
95, 35, 95, 0, 95, 0, 95, 0,
95, 0, 95, 0, 95, 0, 95, 133,
95, 0, 95, 0, 95, 0, 95, 0,
95, 0, 95, 0, 95, 0, 95, 133,
95, 0, 95, 0, 95, 0, 95, 0,
95, 0, 95, 133, 95, 0, 95, 0,
95, 0, 0, 95, 0, 95, 0, 95,
0, 95, 0, 95, 0, 95, 0, 95,
0, 95, 0, 95, 0, 95, 133, 95,
0, 95, 0, 95, 0, 95, 0, 95,
0, 95, 163, 95, 0, 93, 136, 93,
0, 0, 95, 0, 95, 0, 95, 0,
95, 133, 95, 0, 95, 0, 95, 0,
95, 133, 95, 0, 95, 0, 95, 0,
95, 0, 95, 0, 95, 163, 95, 0,
91, 136, 91, 0, 95, 0, 95, 0,
95, 0, 95, 133, 95, 95, 133, 0,
3, 15, 95, 0, 103, 0, 103, 0,
103, 0, 103, 99, 103, 117, 119, 0,
13, 160, 121, 119, 125, 0, 0, 0,
0, 127, 133, 127, 0, 167, 136, 123,
7, 123, 57, 151, 0, 13, 51, 53,
55, 0, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 59, 148, 148, 97,
148, 148, 87, 89, 1, 7, 83, 145,
89, 142, 142, 142, 142, 145, 142, 145,
142, 145, 97, 0, 0, 0, 0, 0,
0, 0, 89, 0, 89, 3, 75, 0,
89, 3, 69, 0, 89, 3, 63, 0,
89, 0, 85, 0, 89, 3, 77, 0,
0, 89, 0, 139, 79, 7, 81, 3,
71, 3, 61, 0, 89, 0, 139, 65,
7, 67, 0, 89, 3, 73, 0, 89,
154, 13, 157, 105, 157, 0, 101, 129,
129, 129, 129, 129, 129, 129, 129, 129,
129, 129, 129, 129, 129, 129, 129, 129,
129, 129, 129, 129, 129, 129, 129, 129,
131, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
93, 93, 95, 95, 95, 95, 95, 95,
95, 95, 95, 95, 95, 95, 95, 95,
95, 91, 91, 95, 95, 95, 95, 95,
95, 95, 95, 103, 103, 103, 103, 103,
125, 127, 127, 123, 123, 97, 87, 89,
83, 89, 97, 89, 89, 75, 89, 69,
89, 63, 89, 85, 89, 77, 89, 79,
81, 71, 61, 89, 65, 67, 89, 73,
89, 105, 101, 0
]
class << self
attr_accessor :_dtext_to_state_actions
private :_dtext_to_state_actions, :_dtext_to_state_actions=
end
self._dtext_to_state_actions = [
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 9, 0, 0, 0, 0, 0, 9,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 9, 0, 0
]
class << self
attr_accessor :_dtext_from_state_actions
private :_dtext_from_state_actions, :_dtext_from_state_actions=
end
self._dtext_from_state_actions = [
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 11, 0, 0, 0, 0, 0, 11,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 11, 0, 0
]
class << self
attr_accessor :_dtext_eof_trans
private :_dtext_eof_trans, :_dtext_eof_trans=
end
self._dtext_eof_trans = [
488, 488, 488, 488, 488, 488, 488, 488,
488, 488, 488, 488, 488, 488, 488, 488,
488, 488, 488, 488, 488, 488, 488, 488,
488, 489, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 594, 594, 619, 619, 619, 619, 619,
619, 619, 619, 619, 619, 619, 619, 619,
619, 619, 611, 611, 619, 619, 619, 619,
619, 619, 619, 619, 624, 624, 624, 624,
624, 0, 625, 627, 627, 629, 629, 0,
635, 631, 657, 633, 657, 635, 657, 657,
638, 657, 640, 657, 642, 657, 644, 657,
646, 657, 648, 649, 650, 651, 657, 653,
654, 657, 656, 657, 0, 658, 659
]
class << self
attr_accessor :dtext_start
end
self.dtext_start = 161;
class << self
attr_accessor :dtext_first_final
end
self.dtext_first_final = 161;
class << self
attr_accessor :dtext_error
end
self.dtext_error = -1;
class << self
attr_accessor :dtext_en_inline
end
self.dtext_en_inline = 167;
class << self
attr_accessor :dtext_en_code
end
self.dtext_en_code = 196;
class << self
attr_accessor :dtext_en_main
end
self.dtext_en_main = 161;
# line 378 "d_text_ragel.rl"
def self.h(x)
CGI.escapeHTML(x)
end
def self.u(x)
CGI.escape(x)
end
def self.close_stack(output, stack)
while obj = stack.pop
case obj
when :p
output << "</p>"
when :inline_spoiler
output << "</span>"
when :block_spoiler
output << "</div>"
when :block_quote
output << "</pre>"
else
raise SyntaxError.new("Invalid element #{obj}")
end
end
end
def self.parse(s)
stack = []
dstack = []
output = StringIO.new
data = s + "\0"
eof = data.size
flags = {}
# line 560 "d_text_ragel.rb"
begin
p ||= 0
pe ||= data.length
cs = dtext_start
top = 0
ts = nil
te = nil
act = 0
end
# line 417 "d_text_ragel.rl"
# line 573 "d_text_ragel.rb"
begin
_klen, _trans, _keys, _acts, _nacts = nil
_goto_level = 0
_resume = 10
_eof_trans = 15
_again = 20
_test_eof = 30
_out = 40
while true
_trigger_goto = false
if _goto_level <= 0
if p == pe
_goto_level = _test_eof
next
end
end
if _goto_level <= _resume
_acts = _dtext_from_state_actions[cs]
_nacts = _dtext_actions[_acts]
_acts += 1
while _nacts > 0
_nacts -= 1
_acts += 1
case _dtext_actions[_acts - 1]
when 5 then
# line 1 "NONE"
begin
ts = p
end
# line 603 "d_text_ragel.rb"
end # from state action switch
end
if _trigger_goto
next
end
_keys = _dtext_key_offsets[cs]
_trans = _dtext_index_offsets[cs]
_klen = _dtext_single_lengths[cs]
_break_match = false
begin
if _klen > 0
_lower = _keys
_upper = _keys + _klen - 1
loop do
break if _upper < _lower
_mid = _lower + ( (_upper - _lower) >> 1 )
if data[p].ord < _dtext_trans_keys[_mid]
_upper = _mid - 1
elsif data[p].ord > _dtext_trans_keys[_mid]
_lower = _mid + 1
else
_trans += (_mid - _keys)
_break_match = true
break
end
end # loop
break if _break_match
_keys += _klen
_trans += _klen
end
_klen = _dtext_range_lengths[cs]
if _klen > 0
_lower = _keys
_upper = _keys + (_klen << 1) - 2
loop do
break if _upper < _lower
_mid = _lower + (((_upper-_lower) >> 1) & ~1)
if data[p].ord < _dtext_trans_keys[_mid]
_upper = _mid - 2
elsif data[p].ord > _dtext_trans_keys[_mid+1]
_lower = _mid + 2
else
_trans += ((_mid - _keys) >> 1)
_break_match = true
break
end
end # loop
break if _break_match
_trans += _klen
end
end while false
end
if _goto_level <= _eof_trans
cs = _dtext_trans_targs[_trans]
if _dtext_trans_actions[_trans] != 0
_acts = _dtext_trans_actions[_trans]
_nacts = _dtext_actions[_acts]
_acts += 1
while _nacts > 0
_nacts -= 1
_acts += 1
case _dtext_actions[_acts - 1]
when 0 then
# line 14 "d_text_ragel.rl"
begin
a1 = p
end
when 1 then
# line 18 "d_text_ragel.rl"
begin
a2 = p
end
when 2 then
# line 22 "d_text_ragel.rl"
begin
b1 = p
end
when 3 then
# line 26 "d_text_ragel.rl"
begin
b2 = p
end
when 6 then
# line 1 "NONE"
begin
te = p+1
end
when 7 then
# line 149 "d_text_ragel.rl"
begin
act = 18; end
when 8 then
# line 154 "d_text_ragel.rl"
begin
act = 19; end
when 9 then
# line 261 "d_text_ragel.rl"
begin
act = 37; end
when 10 then
# line 266 "d_text_ragel.rl"
begin
act = 38; end
when 11 then
# line 115 "d_text_ragel.rl"
begin
te = p+1
begin
tags = data[a1..a2]
output << '<a rel="nofollow" href="/posts?tags=' + u(tags) + '">' + h(tags) + '</a>'
end
end
when 12 then
# line 120 "d_text_ragel.rl"
begin
te = p+1
begin
name = data[a1..a2]
title = name.tr(" ", "_").downcase
output << '<a href="/wiki_pages/show_or_new?title=' + u(title) + '">' + h(name) + '</a>'
end
end
when 13 then
# line 126 "d_text_ragel.rl"
begin
te = p+1
begin
name = data[b1..b2]
title = data[a1..a2].tr(" ", "_").downcase
output << '<a href="/wiki_pages/show_or_new?title=' + u(title) + '">' + h(name) + '</a>'
end
end
when 14 then
# line 138 "d_text_ragel.rl"
begin
te = p+1
begin
text = data[a1..a2]
url = data[b1..b2]
output << '<a rel="nofollow" href="' + URI.parse(url).to_s + '">' + text + '</a>'
end
end
when 15 then
# line 159 "d_text_ragel.rl"
begin
te = p+1
begin
dstack << :b
output << '<strong>'
end
end
when 16 then
# line 164 "d_text_ragel.rl"
begin
te = p+1
begin
raise SyntaxError.new("invalid [/b] tag") unless dstack[-1] == :b
dstack.pop
output << "</strong>"
end
end
when 17 then
# line 170 "d_text_ragel.rl"
begin
te = p+1
begin
dstack << :i
output << '<em>'
end
end
when 18 then
# line 175 "d_text_ragel.rl"
begin
te = p+1
begin
raise ParseError.new("invalid [/i] tag") unless dstack[-1] == :i
dstack.pop
output << "</em>"
end
end
when 19 then
# line 181 "d_text_ragel.rl"
begin
te = p+1
begin
dstack << :s
output << "<s>"
end
end
when 20 then
# line 186 "d_text_ragel.rl"
begin
te = p+1
begin
raise ParseError.new("invalid [/s] tag") unless dstack[-1] == :s
dstack.pop
output << "</s>"
end
end
when 21 then
# line 192 "d_text_ragel.rl"
begin
te = p+1
begin
dstack << :u
output << "<u>"
end
end
when 22 then
# line 197 "d_text_ragel.rl"
begin
te = p+1
begin
raise ParseError.new("invalid [/u] tag") unless dstack[-1] == :u
dstack.pop
output << "</u>"
end
end
when 23 then
# line 203 "d_text_ragel.rl"
begin
te = p+1
begin
dstack << :tn
output << '<p class="tn">'
end
end
when 24 then
# line 208 "d_text_ragel.rl"
begin
te = p+1
begin
raise ParseError.new("invalid [/tn] tag") unless dstack[-1] == :tn
dstack.pop
output << "</p>"
end
end
when 25 then
# line 214 "d_text_ragel.rl"
begin
te = p+1
begin
raise ParseError.new("invalid [/quote] tag") unless dstack[-1] == :quote
dstack.pop
output << "</blockquote>"
begin
top -= 1
cs = stack[top]
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 26 then
# line 221 "d_text_ragel.rl"
begin
te = p+1
begin
dstack << :inline_spoiler
output << '<span class="spoiler">'
end
end
when 27 then
# line 226 "d_text_ragel.rl"
begin
te = p+1
begin
if dstack[-1] == :inline_spoiler
output << "</span>"
dstack.pop
elsif dstack[-1] == :block_spoiler
output << "</div>"
dstack.pop
begin
top -= 1
cs = stack[top]
_trigger_goto = true
_goto_level = _again
break
end
else
raise SyntaxError.new("invalid [/spoiler] tag")
end
end
end
when 28 then
# line 239 "d_text_ragel.rl"
begin
te = p+1
begin
if dstack[-1] == :expand
output << '</div></div>'
dstack.pop
begin
top -= 1
cs = stack[top]
_trigger_goto = true
_goto_level = _again
break
end
else
raise SyntaxError.new("invalid [/expand] tag")
end
end
end
when 29 then
# line 249 "d_text_ragel.rl"
begin
te = p+1
begin
output << "&amp;"
end
end
when 30 then
# line 253 "d_text_ragel.rl"
begin
te = p+1
begin
output << "&lt;"
end
end
when 31 then
# line 257 "d_text_ragel.rl"
begin
te = p+1
begin
output << "&gt;"
end
end
when 32 then
# line 270 "d_text_ragel.rl"
begin
te = p+1
begin
p = p - 1;
begin
top -= 1
cs = stack[top]
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 33 then
# line 275 "d_text_ragel.rl"
begin
te = p+1
begin
output << data[p]
end
end
when 34 then
# line 58 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="/posts/' + id + '">post #' + id + '</a>'
end
end
when 35 then
# line 63 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="/forum_posts/' + id + '">forum #' + id + '</a>'
end
end
when 36 then
# line 68 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="/forum_topics/' + id + '">topic #' + id + '</a>'
end
end
when 37 then
# line 73 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
page = data[b1..b2]
output << '<a href="/forum_topics/' + id + '?page=' + page + '">topic #' + id + '/p' + page + '</a>'
end
end
when 38 then
# line 79 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="/comments/' + id + '">comment #' + id + '</a>'
end
end
when 39 then
# line 84 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="/pools/' + id + '">pool #' + id + '</a>'
end
end
when 40 then
# line 89 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="/users/' + id + '">user #' + id + '</a>'
end
end
when 41 then
# line 94 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="/artists/' + id + '">artist #' + id + '</a>'
end
end
when 42 then
# line 99 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="https://github.com/r888888888/danbooru/issues/' + id + '">issue #' + id + '</a>'
end
end
when 43 then
# line 104 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
output << '<a href="http://www.pixiv.net/member_illust.php?mode=medium&illust_id=' + id + '">pixiv #' + id + '</a>'
end
end
when 44 then
# line 109 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
id = data[a1..a2]
page = data[b1..b2]
output << '<a href="http://www.pixiv.net/member_illust.php?mode=manga_big&illust_id=' + id + '&page=' + page + '">pixiv #' + id + '/p' + page + '</a>'
end
end
when 45 then
# line 132 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
text = data[a1..a2]
url = data[b1..b2]
output << '<a rel="nofollow" href="' + URI.parse(url).to_s + '">' + text + '</a>'
end
end
when 46 then
# line 144 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
url = data[ts...te]
output << '<a rel="nofollow" href="' + URI.parse(url).to_s + '">' + url + '</a>'
end
end
when 47 then
# line 266 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
output << "<br>"
end
end
when 48 then
# line 275 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
output << data[p]
end
end
when 49 then
# line 68 "d_text_ragel.rl"
begin
begin p = ((te))-1; end
begin
id = data[a1..a2]
output << '<a href="/forum_topics/' + id + '">topic #' + id + '</a>'
end
end
when 50 then
# line 104 "d_text_ragel.rl"
begin
begin p = ((te))-1; end
begin
id = data[a1..a2]
output << '<a href="http://www.pixiv.net/member_illust.php?mode=medium&illust_id=' + id + '">pixiv #' + id + '</a>'
end
end
when 51 then
# line 275 "d_text_ragel.rl"
begin
begin p = ((te))-1; end
begin
output << data[p]
end
end
when 52 then
# line 1 "NONE"
begin
case act
when 18 then
begin begin p = ((te))-1; end
name = data[ts+1...te-1]
output << '<a rel="nofollow" href="/users?name=' + u(name) + '">@' + h(name) + '</a>' + data[p]
end
when 19 then
begin begin p = ((te))-1; end
name = data[ts+1...te]
output << '<a rel="nofollow" href="/users?name=' + u(name) + '">@' + h(name) + '</a>'
end
when 37 then
begin begin p = ((te))-1; end
output << close_stack(output, dstack)
begin
top -= 1
cs = stack[top]
_trigger_goto = true
_goto_level = _again
break
end
end
when 38 then
begin begin p = ((te))-1; end
output << "<br>"
end
end
end
when 53 then
# line 291 "d_text_ragel.rl"
begin
act = 42; end
when 54 then
# line 300 "d_text_ragel.rl"
begin
act = 44; end
when 55 then
# line 281 "d_text_ragel.rl"
begin
te = p+1
begin
if dstack[-1] == :block_code
dstack.pop
output << "</pre>"
else
raise SyntaxError.new("invalid [/code] tag")
end
begin
top -= 1
cs = stack[top]
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 56 then
# line 296 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
output << "["
end
end
when 57 then
# line 296 "d_text_ragel.rl"
begin
begin p = ((te))-1; end
begin
output << "["
end
end
when 58 then
# line 1 "NONE"
begin
case act
when 42 then
begin begin p = ((te))-1; end
p = p - 1;
begin
top -= 1
cs = stack[top]
_trigger_goto = true
_goto_level = _again
break
end
end
when 44 then
begin begin p = ((te))-1; end
output << data[ts...te]
end
end
end
when 59 then
# line 310 "d_text_ragel.rl"
begin
act = 45; end
when 60 then
# line 363 "d_text_ragel.rl"
begin
act = 53; end
when 61 then
# line 321 "d_text_ragel.rl"
begin
te = p+1
begin
output << "<blockquote>"
dstack << :quote
begin
stack[top] = cs
top+= 1
cs = 167
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 62 then
# line 327 "d_text_ragel.rl"
begin
te = p+1
begin
output << '<div class="spoiler">'
dstack << :block_spoiler
begin
stack[top] = cs
top+= 1
cs = 167
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 63 then
# line 333 "d_text_ragel.rl"
begin
te = p+1
begin
output << '<pre>'
dstack << :block_code
begin
stack[top] = cs
top+= 1
cs = 196
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 64 then
# line 339 "d_text_ragel.rl"
begin
te = p+1
begin
output << '<div class="expandable"><div class="expandable-header">'
output << '<input type="button" value="Show" class="expandable-button"/></div>'
output << '<div class="expandable-content">'
dstack << :expand
begin
stack[top] = cs
top+= 1
cs = 167
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 65 then
# line 347 "d_text_ragel.rl"
begin
te = p+1
begin
msg = data[a1..a2]
output <<'<div class="expandable"><div class="expandable-header">'
output << '<span>' + h(msg) + '</span>'
output << '<input type="button" value="Show" class="expandable-button"/></div>'
output << '<div class="expandable-content">'
dstack << :expand
begin
stack[top] = cs
top+= 1
cs = 167
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 66 then
# line 357 "d_text_ragel.rl"
begin
te = p+1
begin
close_stack(output, dstack)
end
end
when 67 then
# line 361 "d_text_ragel.rl"
begin
te = p+1
end
when 68 then
# line 363 "d_text_ragel.rl"
begin
te = p+1
begin
p = p - 1;
if dstack.empty?
output << "<p>"
dstack << :p
end
begin
stack[top] = cs
top+= 1
cs = 167
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 69 then
# line 310 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
if flags[:inline]
header = "6"
else
header = data[a1..a2]
end
text = data[b1..b2]
output << '<h' + header + '>' + h(text) + '</h' + header + '>'
end
end
when 70 then
# line 361 "d_text_ragel.rl"
begin
te = p
p = p - 1; end
when 71 then
# line 363 "d_text_ragel.rl"
begin
te = p
p = p - 1; begin
p = p - 1;
if dstack.empty?
output << "<p>"
dstack << :p
end
begin
stack[top] = cs
top+= 1
cs = 167
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 72 then
# line 363 "d_text_ragel.rl"
begin
begin p = ((te))-1; end
begin
p = p - 1;
if dstack.empty?
output << "<p>"
dstack << :p
end
begin
stack[top] = cs
top+= 1
cs = 167
_trigger_goto = true
_goto_level = _again
break
end
end
end
when 73 then
# line 1 "NONE"
begin
case act
when 45 then
begin begin p = ((te))-1; end
if flags[:inline]
header = "6"
else
header = data[a1..a2]
end
text = data[b1..b2]
output << '<h' + header + '>' + h(text) + '</h' + header + '>'
end
when 53 then
begin begin p = ((te))-1; end
p = p - 1;
if dstack.empty?
output << "<p>"
dstack << :p
end
begin
stack[top] = cs
top+= 1
cs = 167
_trigger_goto = true
_goto_level = _again
break
end
end
end
end
# line 1479 "d_text_ragel.rb"
end # action switch
end
end
if _trigger_goto
next
end
end
if _goto_level <= _again
_acts = _dtext_to_state_actions[cs]
_nacts = _dtext_actions[_acts]
_acts += 1
while _nacts > 0
_nacts -= 1
_acts += 1
case _dtext_actions[_acts - 1]
when 4 then
# line 1 "NONE"
begin
ts = nil; end
# line 1499 "d_text_ragel.rb"
end # to state action switch
end
if _trigger_goto
next
end
p += 1
if p != pe
_goto_level = _resume
next
end
end
if _goto_level <= _test_eof
if p == eof
if _dtext_eof_trans[cs] > 0
_trans = _dtext_eof_trans[cs] - 1;
_goto_level = _eof_trans
next;
end
end
end
if _goto_level <= _out
break
end
end
end
# line 418 "d_text_ragel.rl"
output.string
end
end