hpricot 0.7 → 0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,20 +20,26 @@ VALUE hpricot_css(VALUE, VALUE, VALUE, VALUE, VALUE);
20
20
  #define NO_WAY_SERIOUSLY "*** This should not happen, please send a bug report with the HTML you're parsing to why@whytheluckystiff.net. So sorry!"
21
21
 
22
22
  static VALUE sym_xmldecl, sym_doctype, sym_procins, sym_stag, sym_etag, sym_emptytag, sym_comment,
23
- sym_cdata, sym_text, sym_EMPTY, sym_CDATA;
23
+ sym_cdata, sym_name, sym_parent, sym_raw_attributes, sym_raw_string, sym_tagno,
24
+ sym_allowed, sym_text, sym_children, sym_EMPTY, sym_CDATA;
24
25
  static VALUE mHpricot, rb_eHpricotParseError;
25
- static VALUE cBaseEle, cBogusETag, cCData, cComment, cDoc, cDocType, cElem, cETag, cText,
26
+ static VALUE cBogusETag, cCData, cComment, cDoc, cDocType, cElem, cText,
26
27
  cXMLDecl, cProcIns, symAllow, symDeny;
27
28
  static ID s_ElementContent;
28
29
  static ID s_downcase, s_new, s_parent, s_read, s_to_str;
29
- static ID iv_parent;
30
30
  static VALUE reProcInsParse;
31
31
 
32
- typedef struct {
33
- int name;
34
- VALUE tag, attr, etag, raw, EC;
35
- VALUE parent, children;
36
- } hpricot_ele;
32
+ #define H_ELE_TAG 0
33
+ #define H_ELE_PARENT 1
34
+ #define H_ELE_ATTR 2
35
+ #define H_ELE_ETAG 3
36
+ #define H_ELE_RAW 4
37
+ #define H_ELE_EC 5
38
+ #define H_ELE_HASH 6
39
+ #define H_ELE_CHILDREN 7
40
+
41
+ #define H_ELE_GET(ele, idx) RSTRUCT_PTR(ele)[idx]
42
+ #define H_ELE_SET(ele, idx, val) RSTRUCT_PTR(ele)[idx] = val
37
43
 
38
44
  #define OPT(opts, key) (!NIL_P(opts) && RTEST(rb_hash_aref(opts, ID2SYM(rb_intern("" # key)))))
39
45
 
@@ -87,11 +93,11 @@ typedef struct {
87
93
 
88
94
  #define EBLK(N, T) CAT(tag, p - T + 1); ELE(N);
89
95
 
90
- #line 134 "hpricot_scan.rl"
96
+ #line 140 "hpricot_scan.rl"
91
97
 
92
98
 
93
99
 
94
- #line 95 "hpricot_scan.c"
100
+ #line 101 "hpricot_scan.c"
95
101
  static const int hpricot_scan_start = 204;
96
102
  static const int hpricot_scan_error = -1;
97
103
 
@@ -100,7 +106,7 @@ static const int hpricot_scan_en_html_cdata = 216;
100
106
  static const int hpricot_scan_en_html_procins = 218;
101
107
  static const int hpricot_scan_en_main = 204;
102
108
 
103
- #line 137 "hpricot_scan.rl"
109
+ #line 143 "hpricot_scan.rl"
104
110
 
105
111
  #define BUFSIZE 16384
106
112
 
@@ -111,7 +117,7 @@ void rb_yield_tokens(VALUE sym, VALUE tag, VALUE attr, VALUE raw, int taint)
111
117
  raw = tag;
112
118
  }
113
119
  ary = rb_ary_new3(4, sym, tag, attr, raw);
114
- if (taint) {
120
+ if (taint) {
115
121
  OBJ_TAINT(ary);
116
122
  OBJ_TAINT(tag);
117
123
  OBJ_TAINT(attr);
@@ -120,6 +126,7 @@ void rb_yield_tokens(VALUE sym, VALUE tag, VALUE attr, VALUE raw, int taint)
120
126
  rb_yield(ary);
121
127
  }
122
128
 
129
+ #ifndef RHASH_TBL
123
130
  /* rb_hash_lookup() is only in Ruby 1.8.7 */
124
131
  static VALUE
125
132
  our_rb_hash_lookup(VALUE hash, VALUE key)
@@ -132,17 +139,17 @@ our_rb_hash_lookup(VALUE hash, VALUE key)
132
139
 
133
140
  return val;
134
141
  }
142
+ #define rb_hash_lookup our_rb_hash_lookup
143
+ #endif
135
144
 
136
145
  static void
137
146
  rb_hpricot_add(VALUE focus, VALUE ele)
138
147
  {
139
- hpricot_ele *he, *he2;
140
- Data_Get_Struct(focus, hpricot_ele, he);
141
- Data_Get_Struct(ele, hpricot_ele, he2);
142
- if (NIL_P(he->children))
143
- he->children = rb_ary_new();
144
- rb_ary_push(he->children, ele);
145
- he2->parent = focus;
148
+ VALUE children = H_ELE_GET(focus, H_ELE_CHILDREN);
149
+ if (NIL_P(children))
150
+ H_ELE_SET(focus, H_ELE_CHILDREN, (children = rb_ary_new2(1)));
151
+ rb_ary_push(children, ele);
152
+ H_ELE_SET(ele, H_ELE_PARENT, focus);
146
153
  }
147
154
 
148
155
  typedef struct {
@@ -153,102 +160,70 @@ typedef struct {
153
160
  unsigned char xml, strict, fixup;
154
161
  } hpricot_state;
155
162
 
156
- static void
157
- hpricot_ele_mark(hpricot_ele *he)
158
- {
159
- rb_gc_mark(he->tag);
160
- rb_gc_mark(he->attr);
161
- rb_gc_mark(he->etag);
162
- rb_gc_mark(he->raw);
163
- rb_gc_mark(he->parent);
164
- rb_gc_mark(he->children);
165
- }
166
-
167
- static void
168
- hpricot_ele_free(hpricot_ele *he)
169
- {
170
- free(he);
171
- }
172
-
173
- #define H_PROP(prop) \
163
+ #define H_PROP(prop, idx) \
174
164
  static VALUE hpricot_ele_set_##prop(VALUE self, VALUE x) { \
175
- hpricot_ele *he; \
176
- Data_Get_Struct(self, hpricot_ele, he); \
177
- he->prop = x; \
165
+ H_ELE_SET(self, idx, x); \
178
166
  return self; \
179
167
  } \
168
+ static VALUE hpricot_ele_clear_##prop(VALUE self) { \
169
+ H_ELE_SET(self, idx, Qnil); \
170
+ return Qtrue; \
171
+ } \
180
172
  static VALUE hpricot_ele_get_##prop(VALUE self) { \
181
- hpricot_ele *he; \
182
- Data_Get_Struct(self, hpricot_ele, he); \
183
- return he->prop; \
173
+ return H_ELE_GET(self, idx); \
184
174
  }
185
175
 
186
176
  #define H_ATTR(prop) \
187
177
  static VALUE hpricot_ele_set_##prop(VALUE self, VALUE x) { \
188
- hpricot_ele *he; \
189
- Data_Get_Struct(self, hpricot_ele, he); \
190
- rb_hash_aset(he->attr, ID2SYM(rb_intern("" # prop)), x); \
178
+ rb_hash_aset(H_ELE_GET(self, H_ELE_ATTR), ID2SYM(rb_intern("" # prop)), x); \
191
179
  return self; \
192
180
  } \
193
181
  static VALUE hpricot_ele_get_##prop(VALUE self) { \
194
- hpricot_ele *he; \
195
- Data_Get_Struct(self, hpricot_ele, he); \
196
- return rb_hash_aref(he->attr, ID2SYM(rb_intern("" # prop))); \
182
+ return rb_hash_aref(H_ELE_GET(self, H_ELE_ATTR), ID2SYM(rb_intern("" # prop))); \
197
183
  }
198
184
 
199
- H_PROP(tag);
200
- H_PROP(attr);
201
- H_PROP(etag);
202
- H_PROP(parent);
203
- H_PROP(children);
185
+ H_PROP(name, H_ELE_TAG);
186
+ H_PROP(raw, H_ELE_RAW);
187
+ H_PROP(parent, H_ELE_PARENT);
188
+ H_PROP(attr, H_ELE_ATTR);
189
+ H_PROP(etag, H_ELE_ETAG);
190
+ H_PROP(children, H_ELE_CHILDREN);
191
+ H_ATTR(target);
204
192
  H_ATTR(encoding);
205
193
  H_ATTR(version);
206
194
  H_ATTR(standalone);
207
195
  H_ATTR(system_id);
208
196
  H_ATTR(public_id);
209
197
 
210
- static VALUE
211
- hpricot_ele_get_raw(VALUE self, VALUE x) {
212
- hpricot_ele *he;
213
- Data_Get_Struct(self, hpricot_ele, he);
214
- return he->raw;
215
- }
216
-
217
- static VALUE
218
- hpricot_ele_clear_raw(VALUE self)
219
- {
220
- hpricot_ele *he;
221
- Data_Get_Struct(self, hpricot_ele, he);
222
- he->raw = Qnil;
223
- return Qtrue;
224
- }
225
-
226
198
  #define H_ELE(klass) \
227
- hpricot_ele *he = ALLOC(hpricot_ele); \
228
- he->name = 0; \
229
- he->tag = tag; \
230
- he->attr = attr; \
231
- he->raw = Qnil; \
232
- he->EC = ec; \
233
- he->etag = he->parent = he->children = Qnil; \
234
- if (raw != NULL && (sym == sym_emptytag || sym == sym_stag || sym == sym_etag || sym == sym_doctype)) { \
235
- he->raw = rb_str_new(raw, rawlen); \
199
+ ele = rb_obj_alloc(klass); \
200
+ if (klass == cElem) { \
201
+ H_ELE_SET(ele, H_ELE_TAG, tag); \
202
+ H_ELE_SET(ele, H_ELE_ATTR, attr); \
203
+ H_ELE_SET(ele, H_ELE_EC, ec); \
204
+ if (raw != NULL && (sym == sym_emptytag || sym == sym_stag || sym == sym_doctype)) { \
205
+ H_ELE_SET(ele, H_ELE_RAW, rb_str_new(raw, rawlen)); \
206
+ } \
207
+ } else if (klass == cDocType || klass == cProcIns || klass == cXMLDecl || klass == cBogusETag) { \
208
+ if (klass == cBogusETag) { \
209
+ H_ELE_SET(ele, H_ELE_TAG, tag); \
210
+ if (raw != NULL) \
211
+ H_ELE_SET(ele, H_ELE_ATTR, rb_str_new(raw, rawlen)); \
212
+ } else { \
213
+ if (klass == cDocType) \
214
+ ATTR(ID2SYM(rb_intern("target")), tag); \
215
+ H_ELE_SET(ele, H_ELE_ATTR, attr); \
216
+ if (klass != cProcIns) { \
217
+ tag = Qnil; \
218
+ if (raw != NULL) tag = rb_str_new(raw, rawlen); \
219
+ } \
220
+ H_ELE_SET(ele, H_ELE_TAG, tag); \
221
+ } \
222
+ } else { \
223
+ H_ELE_SET(ele, H_ELE_TAG, tag); \
236
224
  } \
237
- ele = Data_Wrap_Struct(klass, hpricot_ele_mark, hpricot_ele_free, he); \
238
225
  S->last = ele
239
226
 
240
- VALUE
241
- hpricot_ele_alloc(VALUE klass)
242
- {
243
- VALUE ele;
244
- hpricot_ele *he = ALLOC(hpricot_ele);
245
- he->name = 0;
246
- he->tag = he->attr = he->raw = he->EC = Qnil;
247
- he->etag = he->parent = he->children = Qnil;
248
- ele = Data_Wrap_Struct(klass, hpricot_ele_mark, hpricot_ele_free, he);
249
- return ele;
250
- }
251
-
252
227
  //
253
228
  // the swift, compact parser logic. most of the complicated stuff is done
254
229
  // in the lexer. this step just pairs up the start and end tags.
@@ -262,22 +237,23 @@ rb_hpricot_token(hpricot_state *S, VALUE sym, VALUE tag, VALUE attr, char *raw,
262
237
  // in html mode, fix up start tags incorrectly formed as empty tags
263
238
  //
264
239
  if (!S->xml) {
265
- hpricot_ele *last;
266
- Data_Get_Struct(S->focus, hpricot_ele, last);
267
- if (last->EC == sym_CDATA &&
268
- (sym != sym_procins && sym != sym_comment && sym != sym_cdata && sym != sym_text) &&
269
- !(sym == sym_etag && rb_str_hash(tag) == last->name))
270
- {
271
- sym = sym_text;
272
- tag = rb_str_new(raw, rawlen);
273
- }
274
-
275
240
  if (sym == sym_emptytag || sym == sym_stag || sym == sym_etag) {
276
241
  ec = rb_hash_aref(S->EC, tag);
277
242
  if (NIL_P(ec)) {
278
243
  tag = rb_funcall(tag, s_downcase, 0);
279
244
  ec = rb_hash_aref(S->EC, tag);
280
245
  }
246
+ }
247
+
248
+ if (H_ELE_GET(S->focus, H_ELE_EC) == sym_CDATA &&
249
+ (sym != sym_procins && sym != sym_comment && sym != sym_cdata && sym != sym_text) &&
250
+ !(sym == sym_etag && INT2NUM(rb_str_hash(tag)) == H_ELE_GET(S->focus, H_ELE_HASH)))
251
+ {
252
+ sym = sym_text;
253
+ tag = rb_str_new(raw, rawlen);
254
+ }
255
+
256
+ if (!NIL_P(ec)) {
281
257
  if (sym == sym_emptytag) {
282
258
  if (ec != sym_EMPTY)
283
259
  sym = sym_stag;
@@ -289,19 +265,19 @@ rb_hpricot_token(hpricot_state *S, VALUE sym, VALUE tag, VALUE attr, char *raw,
289
265
  }
290
266
 
291
267
  if (sym == sym_emptytag || sym == sym_stag) {
268
+ VALUE name = INT2NUM(rb_str_hash(tag));
292
269
  H_ELE(cElem);
293
- he->name = rb_str_hash(tag);
270
+ H_ELE_SET(ele, H_ELE_HASH, name);
294
271
 
295
272
  if (!S->xml) {
296
273
  VALUE match = Qnil, e = S->focus;
297
274
  while (e != S->doc)
298
275
  {
299
- hpricot_ele *hee;
300
- Data_Get_Struct(e, hpricot_ele, hee);
276
+ VALUE hEC = H_ELE_GET(e, H_ELE_EC);
301
277
 
302
- if (TYPE(hee->EC) == T_HASH)
278
+ if (TYPE(hEC) == T_HASH)
303
279
  {
304
- VALUE has = our_rb_hash_lookup(hee->EC, INT2NUM(he->name));
280
+ VALUE has = rb_hash_lookup(hEC, name);
305
281
  if (has != Qnil) {
306
282
  if (has == Qtrue) {
307
283
  if (match == Qnil)
@@ -314,7 +290,7 @@ rb_hpricot_token(hpricot_state *S, VALUE sym, VALUE tag, VALUE attr, char *raw,
314
290
  }
315
291
  }
316
292
 
317
- e = hee->parent;
293
+ e = H_ELE_GET(e, H_ELE_PARENT);
318
294
  }
319
295
 
320
296
  if (match == Qnil)
@@ -336,8 +312,7 @@ rb_hpricot_token(hpricot_state *S, VALUE sym, VALUE tag, VALUE attr, char *raw,
336
312
  }
337
313
  }
338
314
  } else if (sym == sym_etag) {
339
- int name;
340
- VALUE match = Qnil, e = S->focus;
315
+ VALUE name, match = Qnil, e = S->focus;
341
316
  if (S->strict) {
342
317
  if (NIL_P(rb_hash_aref(S->EC, tag))) {
343
318
  tag = rb_str_new2("div");
@@ -350,19 +325,16 @@ rb_hpricot_token(hpricot_state *S, VALUE sym, VALUE tag, VALUE attr, char *raw,
350
325
  //
351
326
  // (see also: the search above for fixups)
352
327
  //
353
- name = rb_str_hash(tag);
328
+ name = INT2NUM(rb_str_hash(tag));
354
329
  while (e != S->doc)
355
330
  {
356
- hpricot_ele *he;
357
- Data_Get_Struct(e, hpricot_ele, he);
358
-
359
- if (he->name == name)
331
+ if (H_ELE_GET(e, H_ELE_HASH) == name)
360
332
  {
361
333
  match = e;
362
334
  break;
363
335
  }
364
336
 
365
- e = he->parent;
337
+ e = H_ELE_GET(e, H_ELE_PARENT);
366
338
  }
367
339
 
368
340
  if (NIL_P(match))
@@ -372,10 +344,11 @@ rb_hpricot_token(hpricot_state *S, VALUE sym, VALUE tag, VALUE attr, char *raw,
372
344
  }
373
345
  else
374
346
  {
375
- H_ELE(cETag);
376
- Data_Get_Struct(match, hpricot_ele, he);
377
- he->etag = ele;
378
- S->focus = he->parent;
347
+ VALUE ele = Qnil;
348
+ if (raw != NULL)
349
+ ele = rb_str_new(raw, rawlen);
350
+ H_ELE_SET(match, H_ELE_ETAG, ele);
351
+ S->focus = H_ELE_GET(match, H_ELE_PARENT);
379
352
  S->last = Qnil;
380
353
  }
381
354
  } else if (sym == sym_cdata) {
@@ -396,15 +369,13 @@ rb_hpricot_token(hpricot_state *S, VALUE sym, VALUE tag, VALUE attr, char *raw,
396
369
  tag = rb_reg_nth_match(1, match);
397
370
  attr = rb_reg_nth_match(2, match);
398
371
  {
399
- H_ELE(cProcIns);
400
- rb_hpricot_add(S->focus, ele);
372
+ H_ELE(cProcIns);
373
+ rb_hpricot_add(S->focus, ele);
401
374
  }
402
375
  } else if (sym == sym_text) {
403
376
  // TODO: add raw_string as well?
404
377
  if (!NIL_P(S->last) && RBASIC(S->last)->klass == cText) {
405
- hpricot_ele *he;
406
- Data_Get_Struct(S->last, hpricot_ele, he);
407
- rb_str_append(he->tag, tag);
378
+ rb_str_append(H_ELE_GET(S->last, H_ELE_TAG), tag);
408
379
  } else {
409
380
  H_ELE(cText);
410
381
  rb_hpricot_add(S->focus, ele);
@@ -447,11 +418,8 @@ VALUE hpricot_scan(int argc, VALUE *argv, VALUE self)
447
418
 
448
419
  if (!rb_block_given_p())
449
420
  {
450
- hpricot_ele *he = ALLOC(hpricot_ele);
451
421
  S = ALLOC(hpricot_state);
452
- MEMZERO(he, hpricot_ele, 1);
453
- he->tag = he->attr = he->etag = he->parent = he->children = Qnil;
454
- S->doc = Data_Wrap_Struct(cDoc, hpricot_ele_mark, hpricot_ele_free, he);
422
+ S->doc = rb_obj_alloc(cDoc);
455
423
  rb_gc_register_address(&S->doc);
456
424
  S->focus = S->doc;
457
425
  S->last = Qnil;
@@ -476,15 +444,15 @@ VALUE hpricot_scan(int argc, VALUE *argv, VALUE self)
476
444
  buf = ALLOC_N(char, buffer_size);
477
445
 
478
446
 
479
- #line 480 "hpricot_scan.c"
447
+ #line 448 "hpricot_scan.c"
480
448
  {
481
449
  cs = hpricot_scan_start;
482
450
  ts = 0;
483
451
  te = 0;
484
452
  act = 0;
485
453
  }
486
- #line 512 "hpricot_scan.rl"
487
-
454
+ #line 480 "hpricot_scan.rl"
455
+
488
456
  while (!done) {
489
457
  VALUE str;
490
458
  char *p, *pe;
@@ -536,7 +504,7 @@ VALUE hpricot_scan(int argc, VALUE *argv, VALUE self)
536
504
 
537
505
  pe = p + len;
538
506
 
539
- #line 540 "hpricot_scan.c"
507
+ #line 508 "hpricot_scan.c"
540
508
  {
541
509
  if ( p == pe )
542
510
  goto _test_eof;
@@ -551,7 +519,7 @@ tr4:
551
519
  {te = p+1;{ {goto st214;} }}
552
520
  goto st204;
553
521
  tr15:
554
- #line 107 "hpricot_scan.rl"
522
+ #line 113 "hpricot_scan.rl"
555
523
  { SET(tag, p); }
556
524
  #line 66 "hpricot_scan.rl"
557
525
  {te = p+1;{ ELE(doctype); }}
@@ -583,7 +551,7 @@ tr93:
583
551
  {te = p+1;{ {goto st216;} }}
584
552
  goto st204;
585
553
  tr97:
586
- #line 107 "hpricot_scan.rl"
554
+ #line 113 "hpricot_scan.rl"
587
555
  { SET(tag, p); }
588
556
  #line 69 "hpricot_scan.rl"
589
557
  {te = p+1;{ ELE(etag); }}
@@ -593,7 +561,7 @@ tr99:
593
561
  {te = p+1;{ ELE(etag); }}
594
562
  goto st204;
595
563
  tr103:
596
- #line 107 "hpricot_scan.rl"
564
+ #line 113 "hpricot_scan.rl"
597
565
  { SET(tag, p); }
598
566
  #line 68 "hpricot_scan.rl"
599
567
  {te = p+1;{ ELE(stag); }}
@@ -603,18 +571,18 @@ tr107:
603
571
  {te = p+1;{ ELE(stag); }}
604
572
  goto st204;
605
573
  tr112:
606
- #line 114 "hpricot_scan.rl"
574
+ #line 120 "hpricot_scan.rl"
607
575
  { SET(akey, p); }
608
- #line 128 "hpricot_scan.rl"
609
- {
576
+ #line 134 "hpricot_scan.rl"
577
+ {
610
578
  ATTR(akey, aval);
611
579
  }
612
580
  #line 68 "hpricot_scan.rl"
613
581
  {te = p+1;{ ELE(stag); }}
614
582
  goto st204;
615
583
  tr117:
616
- #line 128 "hpricot_scan.rl"
617
- {
584
+ #line 134 "hpricot_scan.rl"
585
+ {
618
586
  ATTR(akey, aval);
619
587
  }
620
588
  #line 68 "hpricot_scan.rl"
@@ -625,25 +593,25 @@ tr118:
625
593
  {te = p+1;{ ELE(emptytag); }}
626
594
  goto st204;
627
595
  tr129:
628
- #line 110 "hpricot_scan.rl"
629
- {
596
+ #line 116 "hpricot_scan.rl"
597
+ {
630
598
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
631
599
  else { SET(aval, p); }
632
600
  }
633
- #line 128 "hpricot_scan.rl"
634
- {
601
+ #line 134 "hpricot_scan.rl"
602
+ {
635
603
  ATTR(akey, aval);
636
604
  }
637
605
  #line 68 "hpricot_scan.rl"
638
606
  {te = p+1;{ ELE(stag); }}
639
607
  goto st204;
640
608
  tr133:
641
- #line 128 "hpricot_scan.rl"
642
- {
609
+ #line 134 "hpricot_scan.rl"
610
+ {
643
611
  ATTR(akey, aval);
644
612
  }
645
- #line 110 "hpricot_scan.rl"
646
- {
613
+ #line 116 "hpricot_scan.rl"
614
+ {
647
615
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
648
616
  else { SET(aval, p); }
649
617
  }
@@ -651,15 +619,15 @@ tr133:
651
619
  {te = p+1;{ ELE(stag); }}
652
620
  goto st204;
653
621
  tr139:
654
- #line 110 "hpricot_scan.rl"
655
- {
622
+ #line 116 "hpricot_scan.rl"
623
+ {
656
624
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
657
625
  else { SET(aval, p); }
658
626
  }
659
- #line 114 "hpricot_scan.rl"
627
+ #line 120 "hpricot_scan.rl"
660
628
  { SET(akey, p); }
661
- #line 128 "hpricot_scan.rl"
662
- {
629
+ #line 134 "hpricot_scan.rl"
630
+ {
663
631
  ATTR(akey, aval);
664
632
  }
665
633
  #line 68 "hpricot_scan.rl"
@@ -703,7 +671,7 @@ st204:
703
671
  case 204:
704
672
  #line 1 "hpricot_scan.rl"
705
673
  {ts = p;}
706
- #line 707 "hpricot_scan.c"
674
+ #line 675 "hpricot_scan.c"
707
675
  switch( (*p) ) {
708
676
  case 10: goto tr412;
709
677
  case 60: goto tr413;
@@ -712,7 +680,7 @@ case 204:
712
680
  tr413:
713
681
  #line 1 "hpricot_scan.rl"
714
682
  {te = p+1;}
715
- #line 92 "hpricot_scan.rl"
683
+ #line 98 "hpricot_scan.rl"
716
684
  {
717
685
  if (text == 1) {
718
686
  CAT(tag, p);
@@ -731,7 +699,7 @@ st205:
731
699
  if ( ++p == pe )
732
700
  goto _test_eof205;
733
701
  case 205:
734
- #line 735 "hpricot_scan.c"
702
+ #line 703 "hpricot_scan.c"
735
703
  switch( (*p) ) {
736
704
  case 33: goto st0;
737
705
  case 47: goto st59;
@@ -832,14 +800,14 @@ case 9:
832
800
  goto tr12;
833
801
  goto tr0;
834
802
  tr12:
835
- #line 104 "hpricot_scan.rl"
803
+ #line 110 "hpricot_scan.rl"
836
804
  { mark_tag = p; }
837
805
  goto st10;
838
806
  st10:
839
807
  if ( ++p == pe )
840
808
  goto _test_eof10;
841
809
  case 10:
842
- #line 843 "hpricot_scan.c"
810
+ #line 811 "hpricot_scan.c"
843
811
  switch( (*p) ) {
844
812
  case 32: goto tr13;
845
813
  case 62: goto tr15;
@@ -863,14 +831,14 @@ case 10:
863
831
  goto st10;
864
832
  goto tr0;
865
833
  tr13:
866
- #line 107 "hpricot_scan.rl"
834
+ #line 113 "hpricot_scan.rl"
867
835
  { SET(tag, p); }
868
836
  goto st11;
869
837
  st11:
870
838
  if ( ++p == pe )
871
839
  goto _test_eof11;
872
840
  case 11:
873
- #line 874 "hpricot_scan.c"
841
+ #line 842 "hpricot_scan.c"
874
842
  switch( (*p) ) {
875
843
  case 32: goto st11;
876
844
  case 62: goto tr18;
@@ -960,14 +928,14 @@ case 19:
960
928
  goto tr30;
961
929
  goto tr0;
962
930
  tr30:
963
- #line 105 "hpricot_scan.rl"
931
+ #line 111 "hpricot_scan.rl"
964
932
  { mark_aval = p; }
965
933
  goto st20;
966
934
  st20:
967
935
  if ( ++p == pe )
968
936
  goto _test_eof20;
969
937
  case 20:
970
- #line 971 "hpricot_scan.c"
938
+ #line 939 "hpricot_scan.c"
971
939
  switch( (*p) ) {
972
940
  case 9: goto st20;
973
941
  case 34: goto tr33;
@@ -987,20 +955,20 @@ case 20:
987
955
  goto st20;
988
956
  goto tr0;
989
957
  tr31:
990
- #line 105 "hpricot_scan.rl"
958
+ #line 111 "hpricot_scan.rl"
991
959
  { mark_aval = p; }
992
- #line 118 "hpricot_scan.rl"
960
+ #line 124 "hpricot_scan.rl"
993
961
  { SET(aval, p); ATTR(ID2SYM(rb_intern("public_id")), aval); }
994
962
  goto st21;
995
963
  tr33:
996
- #line 118 "hpricot_scan.rl"
964
+ #line 124 "hpricot_scan.rl"
997
965
  { SET(aval, p); ATTR(ID2SYM(rb_intern("public_id")), aval); }
998
966
  goto st21;
999
967
  st21:
1000
968
  if ( ++p == pe )
1001
969
  goto _test_eof21;
1002
970
  case 21:
1003
- #line 1004 "hpricot_scan.c"
971
+ #line 972 "hpricot_scan.c"
1004
972
  switch( (*p) ) {
1005
973
  case 32: goto st22;
1006
974
  case 62: goto tr18;
@@ -1031,32 +999,32 @@ case 23:
1031
999
  goto tr38;
1032
1000
  goto tr37;
1033
1001
  tr37:
1034
- #line 105 "hpricot_scan.rl"
1002
+ #line 111 "hpricot_scan.rl"
1035
1003
  { mark_aval = p; }
1036
1004
  goto st24;
1037
1005
  st24:
1038
1006
  if ( ++p == pe )
1039
1007
  goto _test_eof24;
1040
1008
  case 24:
1041
- #line 1042 "hpricot_scan.c"
1009
+ #line 1010 "hpricot_scan.c"
1042
1010
  if ( (*p) == 34 )
1043
1011
  goto tr41;
1044
1012
  goto st24;
1045
1013
  tr38:
1046
- #line 105 "hpricot_scan.rl"
1014
+ #line 111 "hpricot_scan.rl"
1047
1015
  { mark_aval = p; }
1048
- #line 119 "hpricot_scan.rl"
1016
+ #line 125 "hpricot_scan.rl"
1049
1017
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1050
1018
  goto st25;
1051
1019
  tr41:
1052
- #line 119 "hpricot_scan.rl"
1020
+ #line 125 "hpricot_scan.rl"
1053
1021
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1054
1022
  goto st25;
1055
1023
  st25:
1056
1024
  if ( ++p == pe )
1057
1025
  goto _test_eof25;
1058
1026
  case 25:
1059
- #line 1060 "hpricot_scan.c"
1027
+ #line 1028 "hpricot_scan.c"
1060
1028
  switch( (*p) ) {
1061
1029
  case 32: goto st25;
1062
1030
  case 62: goto tr18;
@@ -1066,14 +1034,14 @@ case 25:
1066
1034
  goto st25;
1067
1035
  goto tr39;
1068
1036
  tr16:
1069
- #line 107 "hpricot_scan.rl"
1037
+ #line 113 "hpricot_scan.rl"
1070
1038
  { SET(tag, p); }
1071
1039
  goto st26;
1072
1040
  st26:
1073
1041
  if ( ++p == pe )
1074
1042
  goto _test_eof26;
1075
1043
  case 26:
1076
- #line 1077 "hpricot_scan.c"
1044
+ #line 1045 "hpricot_scan.c"
1077
1045
  if ( (*p) == 93 )
1078
1046
  goto st27;
1079
1047
  goto st26;
@@ -1096,14 +1064,14 @@ case 28:
1096
1064
  goto tr38;
1097
1065
  goto tr44;
1098
1066
  tr44:
1099
- #line 105 "hpricot_scan.rl"
1067
+ #line 111 "hpricot_scan.rl"
1100
1068
  { mark_aval = p; }
1101
1069
  goto st29;
1102
1070
  st29:
1103
1071
  if ( ++p == pe )
1104
1072
  goto _test_eof29;
1105
1073
  case 29:
1106
- #line 1107 "hpricot_scan.c"
1074
+ #line 1075 "hpricot_scan.c"
1107
1075
  if ( (*p) == 39 )
1108
1076
  goto tr41;
1109
1077
  goto st29;
@@ -1133,14 +1101,14 @@ case 30:
1133
1101
  goto tr46;
1134
1102
  goto tr0;
1135
1103
  tr46:
1136
- #line 105 "hpricot_scan.rl"
1104
+ #line 111 "hpricot_scan.rl"
1137
1105
  { mark_aval = p; }
1138
1106
  goto st31;
1139
1107
  st31:
1140
1108
  if ( ++p == pe )
1141
1109
  goto _test_eof31;
1142
1110
  case 31:
1143
- #line 1144 "hpricot_scan.c"
1111
+ #line 1112 "hpricot_scan.c"
1144
1112
  switch( (*p) ) {
1145
1113
  case 9: goto st31;
1146
1114
  case 39: goto tr49;
@@ -1163,34 +1131,34 @@ case 31:
1163
1131
  goto st31;
1164
1132
  goto tr0;
1165
1133
  tr47:
1166
- #line 105 "hpricot_scan.rl"
1134
+ #line 111 "hpricot_scan.rl"
1167
1135
  { mark_aval = p; }
1168
- #line 118 "hpricot_scan.rl"
1136
+ #line 124 "hpricot_scan.rl"
1169
1137
  { SET(aval, p); ATTR(ID2SYM(rb_intern("public_id")), aval); }
1170
1138
  goto st32;
1171
1139
  tr49:
1172
- #line 118 "hpricot_scan.rl"
1140
+ #line 124 "hpricot_scan.rl"
1173
1141
  { SET(aval, p); ATTR(ID2SYM(rb_intern("public_id")), aval); }
1174
1142
  goto st32;
1175
1143
  tr55:
1176
- #line 118 "hpricot_scan.rl"
1144
+ #line 124 "hpricot_scan.rl"
1177
1145
  { SET(aval, p); ATTR(ID2SYM(rb_intern("public_id")), aval); }
1178
- #line 105 "hpricot_scan.rl"
1146
+ #line 111 "hpricot_scan.rl"
1179
1147
  { mark_aval = p; }
1180
- #line 119 "hpricot_scan.rl"
1148
+ #line 125 "hpricot_scan.rl"
1181
1149
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1182
1150
  goto st32;
1183
1151
  tr82:
1184
- #line 118 "hpricot_scan.rl"
1152
+ #line 124 "hpricot_scan.rl"
1185
1153
  { SET(aval, p); ATTR(ID2SYM(rb_intern("public_id")), aval); }
1186
- #line 119 "hpricot_scan.rl"
1154
+ #line 125 "hpricot_scan.rl"
1187
1155
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1188
1156
  goto st32;
1189
1157
  st32:
1190
1158
  if ( ++p == pe )
1191
1159
  goto _test_eof32;
1192
1160
  case 32:
1193
- #line 1194 "hpricot_scan.c"
1161
+ #line 1162 "hpricot_scan.c"
1194
1162
  switch( (*p) ) {
1195
1163
  case 9: goto st33;
1196
1164
  case 32: goto st33;
@@ -1244,20 +1212,20 @@ case 33:
1244
1212
  goto st31;
1245
1213
  goto tr0;
1246
1214
  tr51:
1247
- #line 118 "hpricot_scan.rl"
1215
+ #line 124 "hpricot_scan.rl"
1248
1216
  { SET(aval, p); ATTR(ID2SYM(rb_intern("public_id")), aval); }
1249
1217
  goto st34;
1250
1218
  tr62:
1251
- #line 118 "hpricot_scan.rl"
1219
+ #line 124 "hpricot_scan.rl"
1252
1220
  { SET(aval, p); ATTR(ID2SYM(rb_intern("public_id")), aval); }
1253
- #line 119 "hpricot_scan.rl"
1221
+ #line 125 "hpricot_scan.rl"
1254
1222
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1255
1223
  goto st34;
1256
1224
  st34:
1257
1225
  if ( ++p == pe )
1258
1226
  goto _test_eof34;
1259
1227
  case 34:
1260
- #line 1261 "hpricot_scan.c"
1228
+ #line 1229 "hpricot_scan.c"
1261
1229
  switch( (*p) ) {
1262
1230
  case 9: goto tr52;
1263
1231
  case 32: goto tr52;
@@ -1283,14 +1251,14 @@ case 34:
1283
1251
  goto tr54;
1284
1252
  goto tr44;
1285
1253
  tr52:
1286
- #line 105 "hpricot_scan.rl"
1254
+ #line 111 "hpricot_scan.rl"
1287
1255
  { mark_aval = p; }
1288
1256
  goto st35;
1289
1257
  st35:
1290
1258
  if ( ++p == pe )
1291
1259
  goto _test_eof35;
1292
1260
  case 35:
1293
- #line 1294 "hpricot_scan.c"
1261
+ #line 1262 "hpricot_scan.c"
1294
1262
  switch( (*p) ) {
1295
1263
  case 9: goto st35;
1296
1264
  case 32: goto st35;
@@ -1316,14 +1284,14 @@ case 35:
1316
1284
  goto st47;
1317
1285
  goto st29;
1318
1286
  tr53:
1319
- #line 105 "hpricot_scan.rl"
1287
+ #line 111 "hpricot_scan.rl"
1320
1288
  { mark_aval = p; }
1321
1289
  goto st36;
1322
1290
  st36:
1323
1291
  if ( ++p == pe )
1324
1292
  goto _test_eof36;
1325
1293
  case 36:
1326
- #line 1327 "hpricot_scan.c"
1294
+ #line 1295 "hpricot_scan.c"
1327
1295
  switch( (*p) ) {
1328
1296
  case 32: goto st36;
1329
1297
  case 34: goto st37;
@@ -1344,38 +1312,38 @@ case 37:
1344
1312
  }
1345
1313
  goto tr66;
1346
1314
  tr66:
1347
- #line 105 "hpricot_scan.rl"
1315
+ #line 111 "hpricot_scan.rl"
1348
1316
  { mark_aval = p; }
1349
1317
  goto st38;
1350
1318
  st38:
1351
1319
  if ( ++p == pe )
1352
1320
  goto _test_eof38;
1353
1321
  case 38:
1354
- #line 1355 "hpricot_scan.c"
1322
+ #line 1323 "hpricot_scan.c"
1355
1323
  switch( (*p) ) {
1356
1324
  case 34: goto tr70;
1357
1325
  case 39: goto tr71;
1358
1326
  }
1359
1327
  goto st38;
1360
1328
  tr81:
1361
- #line 105 "hpricot_scan.rl"
1329
+ #line 111 "hpricot_scan.rl"
1362
1330
  { mark_aval = p; }
1363
1331
  goto st39;
1364
1332
  tr67:
1365
- #line 105 "hpricot_scan.rl"
1333
+ #line 111 "hpricot_scan.rl"
1366
1334
  { mark_aval = p; }
1367
- #line 119 "hpricot_scan.rl"
1335
+ #line 125 "hpricot_scan.rl"
1368
1336
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1369
1337
  goto st39;
1370
1338
  tr70:
1371
- #line 119 "hpricot_scan.rl"
1339
+ #line 125 "hpricot_scan.rl"
1372
1340
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1373
1341
  goto st39;
1374
1342
  st39:
1375
1343
  if ( ++p == pe )
1376
1344
  goto _test_eof39;
1377
1345
  case 39:
1378
- #line 1379 "hpricot_scan.c"
1346
+ #line 1347 "hpricot_scan.c"
1379
1347
  switch( (*p) ) {
1380
1348
  case 32: goto st39;
1381
1349
  case 39: goto tr41;
@@ -1388,7 +1356,7 @@ case 39:
1388
1356
  tr56:
1389
1357
  #line 1 "hpricot_scan.rl"
1390
1358
  {te = p+1;}
1391
- #line 105 "hpricot_scan.rl"
1359
+ #line 111 "hpricot_scan.rl"
1392
1360
  { mark_aval = p; }
1393
1361
  #line 66 "hpricot_scan.rl"
1394
1362
  {act = 8;}
@@ -1403,33 +1371,33 @@ st206:
1403
1371
  if ( ++p == pe )
1404
1372
  goto _test_eof206;
1405
1373
  case 206:
1406
- #line 1407 "hpricot_scan.c"
1374
+ #line 1375 "hpricot_scan.c"
1407
1375
  if ( (*p) == 39 )
1408
1376
  goto tr41;
1409
1377
  goto st29;
1410
1378
  tr57:
1411
- #line 105 "hpricot_scan.rl"
1379
+ #line 111 "hpricot_scan.rl"
1412
1380
  { mark_aval = p; }
1413
1381
  goto st40;
1414
1382
  st40:
1415
1383
  if ( ++p == pe )
1416
1384
  goto _test_eof40;
1417
1385
  case 40:
1418
- #line 1419 "hpricot_scan.c"
1386
+ #line 1387 "hpricot_scan.c"
1419
1387
  switch( (*p) ) {
1420
1388
  case 39: goto tr73;
1421
1389
  case 93: goto st42;
1422
1390
  }
1423
1391
  goto st40;
1424
1392
  tr73:
1425
- #line 119 "hpricot_scan.rl"
1393
+ #line 125 "hpricot_scan.rl"
1426
1394
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1427
1395
  goto st41;
1428
1396
  st41:
1429
1397
  if ( ++p == pe )
1430
1398
  goto _test_eof41;
1431
1399
  case 41:
1432
- #line 1433 "hpricot_scan.c"
1400
+ #line 1401 "hpricot_scan.c"
1433
1401
  switch( (*p) ) {
1434
1402
  case 32: goto st41;
1435
1403
  case 62: goto tr76;
@@ -1448,7 +1416,7 @@ st207:
1448
1416
  if ( ++p == pe )
1449
1417
  goto _test_eof207;
1450
1418
  case 207:
1451
- #line 1452 "hpricot_scan.c"
1419
+ #line 1420 "hpricot_scan.c"
1452
1420
  if ( (*p) == 93 )
1453
1421
  goto st27;
1454
1422
  goto st26;
@@ -1465,20 +1433,20 @@ case 42:
1465
1433
  goto st42;
1466
1434
  goto st29;
1467
1435
  tr68:
1468
- #line 105 "hpricot_scan.rl"
1436
+ #line 111 "hpricot_scan.rl"
1469
1437
  { mark_aval = p; }
1470
- #line 119 "hpricot_scan.rl"
1438
+ #line 125 "hpricot_scan.rl"
1471
1439
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1472
1440
  goto st43;
1473
1441
  tr71:
1474
- #line 119 "hpricot_scan.rl"
1442
+ #line 125 "hpricot_scan.rl"
1475
1443
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1476
1444
  goto st43;
1477
1445
  st43:
1478
1446
  if ( ++p == pe )
1479
1447
  goto _test_eof43;
1480
1448
  case 43:
1481
- #line 1482 "hpricot_scan.c"
1449
+ #line 1450 "hpricot_scan.c"
1482
1450
  switch( (*p) ) {
1483
1451
  case 32: goto st43;
1484
1452
  case 34: goto tr41;
@@ -1498,7 +1466,7 @@ st208:
1498
1466
  if ( ++p == pe )
1499
1467
  goto _test_eof208;
1500
1468
  case 208:
1501
- #line 1502 "hpricot_scan.c"
1469
+ #line 1470 "hpricot_scan.c"
1502
1470
  if ( (*p) == 34 )
1503
1471
  goto tr41;
1504
1472
  goto st24;
@@ -1524,14 +1492,14 @@ case 45:
1524
1492
  goto st45;
1525
1493
  goto st24;
1526
1494
  tr65:
1527
- #line 119 "hpricot_scan.rl"
1495
+ #line 125 "hpricot_scan.rl"
1528
1496
  { SET(aval, p); ATTR(ID2SYM(rb_intern("system_id")), aval); }
1529
1497
  goto st46;
1530
1498
  st46:
1531
1499
  if ( ++p == pe )
1532
1500
  goto _test_eof46;
1533
1501
  case 46:
1534
- #line 1535 "hpricot_scan.c"
1502
+ #line 1503 "hpricot_scan.c"
1535
1503
  switch( (*p) ) {
1536
1504
  case 32: goto tr81;
1537
1505
  case 39: goto tr38;
@@ -1542,14 +1510,14 @@ case 46:
1542
1510
  goto tr81;
1543
1511
  goto tr44;
1544
1512
  tr54:
1545
- #line 105 "hpricot_scan.rl"
1513
+ #line 111 "hpricot_scan.rl"
1546
1514
  { mark_aval = p; }
1547
1515
  goto st47;
1548
1516
  st47:
1549
1517
  if ( ++p == pe )
1550
1518
  goto _test_eof47;
1551
1519
  case 47:
1552
- #line 1553 "hpricot_scan.c"
1520
+ #line 1521 "hpricot_scan.c"
1553
1521
  switch( (*p) ) {
1554
1522
  case 9: goto st47;
1555
1523
  case 39: goto tr82;
@@ -1663,14 +1631,14 @@ case 59:
1663
1631
  goto tr94;
1664
1632
  goto tr0;
1665
1633
  tr94:
1666
- #line 104 "hpricot_scan.rl"
1634
+ #line 110 "hpricot_scan.rl"
1667
1635
  { mark_tag = p; }
1668
1636
  goto st60;
1669
1637
  st60:
1670
1638
  if ( ++p == pe )
1671
1639
  goto _test_eof60;
1672
1640
  case 60:
1673
- #line 1674 "hpricot_scan.c"
1641
+ #line 1642 "hpricot_scan.c"
1674
1642
  switch( (*p) ) {
1675
1643
  case 32: goto tr95;
1676
1644
  case 62: goto tr97;
@@ -1693,14 +1661,14 @@ case 60:
1693
1661
  goto st60;
1694
1662
  goto tr0;
1695
1663
  tr95:
1696
- #line 107 "hpricot_scan.rl"
1664
+ #line 113 "hpricot_scan.rl"
1697
1665
  { SET(tag, p); }
1698
1666
  goto st61;
1699
1667
  st61:
1700
1668
  if ( ++p == pe )
1701
1669
  goto _test_eof61;
1702
1670
  case 61:
1703
- #line 1704 "hpricot_scan.c"
1671
+ #line 1672 "hpricot_scan.c"
1704
1672
  switch( (*p) ) {
1705
1673
  case 32: goto st61;
1706
1674
  case 62: goto tr99;
@@ -1709,14 +1677,14 @@ case 61:
1709
1677
  goto st61;
1710
1678
  goto tr0;
1711
1679
  tr417:
1712
- #line 104 "hpricot_scan.rl"
1680
+ #line 110 "hpricot_scan.rl"
1713
1681
  { mark_tag = p; }
1714
1682
  goto st62;
1715
1683
  st62:
1716
1684
  if ( ++p == pe )
1717
1685
  goto _test_eof62;
1718
1686
  case 62:
1719
- #line 1720 "hpricot_scan.c"
1687
+ #line 1688 "hpricot_scan.c"
1720
1688
  switch( (*p) ) {
1721
1689
  case 32: goto tr100;
1722
1690
  case 47: goto tr102;
@@ -1737,14 +1705,14 @@ case 62:
1737
1705
  goto st62;
1738
1706
  goto tr0;
1739
1707
  tr100:
1740
- #line 107 "hpricot_scan.rl"
1708
+ #line 113 "hpricot_scan.rl"
1741
1709
  { SET(tag, p); }
1742
1710
  goto st63;
1743
1711
  st63:
1744
1712
  if ( ++p == pe )
1745
1713
  goto _test_eof63;
1746
1714
  case 63:
1747
- #line 1748 "hpricot_scan.c"
1715
+ #line 1716 "hpricot_scan.c"
1748
1716
  switch( (*p) ) {
1749
1717
  case 32: goto st63;
1750
1718
  case 47: goto st66;
@@ -1765,36 +1733,36 @@ case 63:
1765
1733
  goto tr105;
1766
1734
  goto tr0;
1767
1735
  tr105:
1768
- #line 121 "hpricot_scan.rl"
1769
- {
1736
+ #line 127 "hpricot_scan.rl"
1737
+ {
1770
1738
  akey = Qnil;
1771
1739
  aval = Qnil;
1772
1740
  mark_akey = NULL;
1773
1741
  mark_aval = NULL;
1774
1742
  }
1775
- #line 106 "hpricot_scan.rl"
1743
+ #line 112 "hpricot_scan.rl"
1776
1744
  { mark_akey = p; }
1777
1745
  goto st64;
1778
1746
  tr114:
1779
- #line 128 "hpricot_scan.rl"
1780
- {
1747
+ #line 134 "hpricot_scan.rl"
1748
+ {
1781
1749
  ATTR(akey, aval);
1782
1750
  }
1783
- #line 121 "hpricot_scan.rl"
1784
- {
1751
+ #line 127 "hpricot_scan.rl"
1752
+ {
1785
1753
  akey = Qnil;
1786
1754
  aval = Qnil;
1787
1755
  mark_akey = NULL;
1788
1756
  mark_aval = NULL;
1789
1757
  }
1790
- #line 106 "hpricot_scan.rl"
1758
+ #line 112 "hpricot_scan.rl"
1791
1759
  { mark_akey = p; }
1792
1760
  goto st64;
1793
1761
  st64:
1794
1762
  if ( ++p == pe )
1795
1763
  goto _test_eof64;
1796
1764
  case 64:
1797
- #line 1798 "hpricot_scan.c"
1765
+ #line 1766 "hpricot_scan.c"
1798
1766
  switch( (*p) ) {
1799
1767
  case 32: goto tr108;
1800
1768
  case 47: goto tr110;
@@ -1816,21 +1784,21 @@ case 64:
1816
1784
  goto st64;
1817
1785
  goto tr39;
1818
1786
  tr108:
1819
- #line 114 "hpricot_scan.rl"
1787
+ #line 120 "hpricot_scan.rl"
1820
1788
  { SET(akey, p); }
1821
1789
  goto st65;
1822
1790
  tr140:
1823
- #line 110 "hpricot_scan.rl"
1824
- {
1791
+ #line 116 "hpricot_scan.rl"
1792
+ {
1825
1793
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
1826
1794
  else { SET(aval, p); }
1827
1795
  }
1828
1796
  goto st65;
1829
1797
  tr134:
1830
- #line 114 "hpricot_scan.rl"
1798
+ #line 120 "hpricot_scan.rl"
1831
1799
  { SET(akey, p); }
1832
- #line 110 "hpricot_scan.rl"
1833
- {
1800
+ #line 116 "hpricot_scan.rl"
1801
+ {
1834
1802
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
1835
1803
  else { SET(aval, p); }
1836
1804
  }
@@ -1839,7 +1807,7 @@ st65:
1839
1807
  if ( ++p == pe )
1840
1808
  goto _test_eof65;
1841
1809
  case 65:
1842
- #line 1843 "hpricot_scan.c"
1810
+ #line 1811 "hpricot_scan.c"
1843
1811
  switch( (*p) ) {
1844
1812
  case 32: goto st65;
1845
1813
  case 47: goto tr115;
@@ -1861,20 +1829,20 @@ case 65:
1861
1829
  goto tr114;
1862
1830
  goto tr39;
1863
1831
  tr102:
1864
- #line 107 "hpricot_scan.rl"
1832
+ #line 113 "hpricot_scan.rl"
1865
1833
  { SET(tag, p); }
1866
1834
  goto st66;
1867
1835
  tr110:
1868
- #line 114 "hpricot_scan.rl"
1836
+ #line 120 "hpricot_scan.rl"
1869
1837
  { SET(akey, p); }
1870
- #line 128 "hpricot_scan.rl"
1871
- {
1838
+ #line 134 "hpricot_scan.rl"
1839
+ {
1872
1840
  ATTR(akey, aval);
1873
1841
  }
1874
1842
  goto st66;
1875
1843
  tr115:
1876
- #line 128 "hpricot_scan.rl"
1877
- {
1844
+ #line 134 "hpricot_scan.rl"
1845
+ {
1878
1846
  ATTR(akey, aval);
1879
1847
  }
1880
1848
  goto st66;
@@ -1882,19 +1850,19 @@ st66:
1882
1850
  if ( ++p == pe )
1883
1851
  goto _test_eof66;
1884
1852
  case 66:
1885
- #line 1886 "hpricot_scan.c"
1853
+ #line 1854 "hpricot_scan.c"
1886
1854
  if ( (*p) == 62 )
1887
1855
  goto tr118;
1888
1856
  goto tr39;
1889
1857
  tr111:
1890
- #line 114 "hpricot_scan.rl"
1858
+ #line 120 "hpricot_scan.rl"
1891
1859
  { SET(akey, p); }
1892
1860
  goto st67;
1893
1861
  st67:
1894
1862
  if ( ++p == pe )
1895
1863
  goto _test_eof67;
1896
1864
  case 67:
1897
- #line 1898 "hpricot_scan.c"
1865
+ #line 1866 "hpricot_scan.c"
1898
1866
  switch( (*p) ) {
1899
1867
  case 13: goto tr120;
1900
1868
  case 32: goto tr120;
@@ -1911,14 +1879,14 @@ case 67:
1911
1879
  goto tr120;
1912
1880
  goto tr119;
1913
1881
  tr119:
1914
- #line 105 "hpricot_scan.rl"
1882
+ #line 111 "hpricot_scan.rl"
1915
1883
  { mark_aval = p; }
1916
1884
  goto st68;
1917
1885
  st68:
1918
1886
  if ( ++p == pe )
1919
1887
  goto _test_eof68;
1920
1888
  case 68:
1921
- #line 1922 "hpricot_scan.c"
1889
+ #line 1890 "hpricot_scan.c"
1922
1890
  switch( (*p) ) {
1923
1891
  case 13: goto tr126;
1924
1892
  case 32: goto tr126;
@@ -1933,27 +1901,27 @@ case 68:
1933
1901
  goto tr126;
1934
1902
  goto st68;
1935
1903
  tr126:
1936
- #line 110 "hpricot_scan.rl"
1937
- {
1904
+ #line 116 "hpricot_scan.rl"
1905
+ {
1938
1906
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
1939
1907
  else { SET(aval, p); }
1940
1908
  }
1941
1909
  goto st69;
1942
1910
  tr331:
1943
- #line 105 "hpricot_scan.rl"
1911
+ #line 111 "hpricot_scan.rl"
1944
1912
  { mark_aval = p; }
1945
- #line 109 "hpricot_scan.rl"
1913
+ #line 115 "hpricot_scan.rl"
1946
1914
  { SET(aval, p); }
1947
1915
  goto st69;
1948
1916
  tr169:
1949
- #line 109 "hpricot_scan.rl"
1917
+ #line 115 "hpricot_scan.rl"
1950
1918
  { SET(aval, p); }
1951
1919
  goto st69;
1952
1920
  st69:
1953
1921
  if ( ++p == pe )
1954
1922
  goto _test_eof69;
1955
1923
  case 69:
1956
- #line 1957 "hpricot_scan.c"
1924
+ #line 1925 "hpricot_scan.c"
1957
1925
  switch( (*p) ) {
1958
1926
  case 32: goto st69;
1959
1927
  case 47: goto tr115;
@@ -1974,27 +1942,27 @@ case 69:
1974
1942
  goto tr114;
1975
1943
  goto tr39;
1976
1944
  tr127:
1977
- #line 110 "hpricot_scan.rl"
1978
- {
1945
+ #line 116 "hpricot_scan.rl"
1946
+ {
1979
1947
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
1980
1948
  else { SET(aval, p); }
1981
1949
  }
1982
1950
  goto st70;
1983
1951
  tr155:
1984
- #line 105 "hpricot_scan.rl"
1952
+ #line 111 "hpricot_scan.rl"
1985
1953
  { mark_aval = p; }
1986
- #line 109 "hpricot_scan.rl"
1954
+ #line 115 "hpricot_scan.rl"
1987
1955
  { SET(aval, p); }
1988
1956
  goto st70;
1989
1957
  tr163:
1990
- #line 109 "hpricot_scan.rl"
1958
+ #line 115 "hpricot_scan.rl"
1991
1959
  { SET(aval, p); }
1992
1960
  goto st70;
1993
1961
  st70:
1994
1962
  if ( ++p == pe )
1995
1963
  goto _test_eof70;
1996
1964
  case 70:
1997
- #line 1998 "hpricot_scan.c"
1965
+ #line 1966 "hpricot_scan.c"
1998
1966
  switch( (*p) ) {
1999
1967
  case 13: goto tr126;
2000
1968
  case 32: goto tr126;
@@ -2020,42 +1988,42 @@ case 70:
2020
1988
  goto tr131;
2021
1989
  goto st68;
2022
1990
  tr131:
2023
- #line 128 "hpricot_scan.rl"
2024
- {
1991
+ #line 134 "hpricot_scan.rl"
1992
+ {
2025
1993
  ATTR(akey, aval);
2026
1994
  }
2027
- #line 121 "hpricot_scan.rl"
2028
- {
1995
+ #line 127 "hpricot_scan.rl"
1996
+ {
2029
1997
  akey = Qnil;
2030
1998
  aval = Qnil;
2031
1999
  mark_akey = NULL;
2032
2000
  mark_aval = NULL;
2033
2001
  }
2034
- #line 106 "hpricot_scan.rl"
2002
+ #line 112 "hpricot_scan.rl"
2035
2003
  { mark_akey = p; }
2036
2004
  goto st71;
2037
2005
  tr150:
2038
- #line 105 "hpricot_scan.rl"
2006
+ #line 111 "hpricot_scan.rl"
2039
2007
  { mark_aval = p; }
2040
- #line 128 "hpricot_scan.rl"
2041
- {
2008
+ #line 134 "hpricot_scan.rl"
2009
+ {
2042
2010
  ATTR(akey, aval);
2043
2011
  }
2044
- #line 121 "hpricot_scan.rl"
2045
- {
2012
+ #line 127 "hpricot_scan.rl"
2013
+ {
2046
2014
  akey = Qnil;
2047
2015
  aval = Qnil;
2048
2016
  mark_akey = NULL;
2049
2017
  mark_aval = NULL;
2050
2018
  }
2051
- #line 106 "hpricot_scan.rl"
2019
+ #line 112 "hpricot_scan.rl"
2052
2020
  { mark_akey = p; }
2053
2021
  goto st71;
2054
2022
  st71:
2055
2023
  if ( ++p == pe )
2056
2024
  goto _test_eof71;
2057
2025
  case 71:
2058
- #line 2059 "hpricot_scan.c"
2026
+ #line 2027 "hpricot_scan.c"
2059
2027
  switch( (*p) ) {
2060
2028
  case 13: goto tr134;
2061
2029
  case 32: goto tr134;
@@ -2082,17 +2050,17 @@ case 71:
2082
2050
  goto st71;
2083
2051
  goto st68;
2084
2052
  tr141:
2085
- #line 110 "hpricot_scan.rl"
2086
- {
2053
+ #line 116 "hpricot_scan.rl"
2054
+ {
2087
2055
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2088
2056
  else { SET(aval, p); }
2089
2057
  }
2090
2058
  goto st72;
2091
2059
  tr135:
2092
- #line 114 "hpricot_scan.rl"
2060
+ #line 120 "hpricot_scan.rl"
2093
2061
  { SET(akey, p); }
2094
- #line 110 "hpricot_scan.rl"
2095
- {
2062
+ #line 116 "hpricot_scan.rl"
2063
+ {
2096
2064
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2097
2065
  else { SET(aval, p); }
2098
2066
  }
@@ -2101,7 +2069,7 @@ st72:
2101
2069
  if ( ++p == pe )
2102
2070
  goto _test_eof72;
2103
2071
  case 72:
2104
- #line 2105 "hpricot_scan.c"
2072
+ #line 2073 "hpricot_scan.c"
2105
2073
  switch( (*p) ) {
2106
2074
  case 13: goto tr140;
2107
2075
  case 32: goto tr140;
@@ -2128,70 +2096,70 @@ case 72:
2128
2096
  goto tr131;
2129
2097
  goto st68;
2130
2098
  tr124:
2131
- #line 105 "hpricot_scan.rl"
2099
+ #line 111 "hpricot_scan.rl"
2132
2100
  { mark_aval = p; }
2133
- #line 128 "hpricot_scan.rl"
2134
- {
2101
+ #line 134 "hpricot_scan.rl"
2102
+ {
2135
2103
  ATTR(akey, aval);
2136
2104
  }
2137
2105
  goto st73;
2138
2106
  tr128:
2139
- #line 110 "hpricot_scan.rl"
2140
- {
2107
+ #line 116 "hpricot_scan.rl"
2108
+ {
2141
2109
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2142
2110
  else { SET(aval, p); }
2143
2111
  }
2144
- #line 128 "hpricot_scan.rl"
2145
- {
2112
+ #line 134 "hpricot_scan.rl"
2113
+ {
2146
2114
  ATTR(akey, aval);
2147
2115
  }
2148
2116
  goto st73;
2149
2117
  tr132:
2150
- #line 128 "hpricot_scan.rl"
2151
- {
2118
+ #line 134 "hpricot_scan.rl"
2119
+ {
2152
2120
  ATTR(akey, aval);
2153
2121
  }
2154
- #line 110 "hpricot_scan.rl"
2155
- {
2122
+ #line 116 "hpricot_scan.rl"
2123
+ {
2156
2124
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2157
2125
  else { SET(aval, p); }
2158
2126
  }
2159
2127
  goto st73;
2160
2128
  tr137:
2161
- #line 110 "hpricot_scan.rl"
2162
- {
2129
+ #line 116 "hpricot_scan.rl"
2130
+ {
2163
2131
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2164
2132
  else { SET(aval, p); }
2165
2133
  }
2166
- #line 114 "hpricot_scan.rl"
2134
+ #line 120 "hpricot_scan.rl"
2167
2135
  { SET(akey, p); }
2168
- #line 128 "hpricot_scan.rl"
2169
- {
2136
+ #line 134 "hpricot_scan.rl"
2137
+ {
2170
2138
  ATTR(akey, aval);
2171
2139
  }
2172
2140
  goto st73;
2173
2141
  tr147:
2174
- #line 105 "hpricot_scan.rl"
2142
+ #line 111 "hpricot_scan.rl"
2175
2143
  { mark_aval = p; }
2176
- #line 110 "hpricot_scan.rl"
2177
- {
2144
+ #line 116 "hpricot_scan.rl"
2145
+ {
2178
2146
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2179
2147
  else { SET(aval, p); }
2180
2148
  }
2181
- #line 128 "hpricot_scan.rl"
2182
- {
2149
+ #line 134 "hpricot_scan.rl"
2150
+ {
2183
2151
  ATTR(akey, aval);
2184
2152
  }
2185
2153
  goto st73;
2186
2154
  tr151:
2187
- #line 105 "hpricot_scan.rl"
2155
+ #line 111 "hpricot_scan.rl"
2188
2156
  { mark_aval = p; }
2189
- #line 128 "hpricot_scan.rl"
2190
- {
2157
+ #line 134 "hpricot_scan.rl"
2158
+ {
2191
2159
  ATTR(akey, aval);
2192
2160
  }
2193
- #line 110 "hpricot_scan.rl"
2194
- {
2161
+ #line 116 "hpricot_scan.rl"
2162
+ {
2195
2163
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2196
2164
  else { SET(aval, p); }
2197
2165
  }
@@ -2200,7 +2168,7 @@ st73:
2200
2168
  if ( ++p == pe )
2201
2169
  goto _test_eof73;
2202
2170
  case 73:
2203
- #line 2204 "hpricot_scan.c"
2171
+ #line 2172 "hpricot_scan.c"
2204
2172
  switch( (*p) ) {
2205
2173
  case 13: goto tr126;
2206
2174
  case 32: goto tr126;
@@ -2215,18 +2183,18 @@ case 73:
2215
2183
  goto tr126;
2216
2184
  goto st68;
2217
2185
  tr121:
2218
- #line 105 "hpricot_scan.rl"
2186
+ #line 111 "hpricot_scan.rl"
2219
2187
  { mark_aval = p; }
2220
2188
  goto st74;
2221
2189
  tr138:
2222
- #line 114 "hpricot_scan.rl"
2190
+ #line 120 "hpricot_scan.rl"
2223
2191
  { SET(akey, p); }
2224
2192
  goto st74;
2225
2193
  st74:
2226
2194
  if ( ++p == pe )
2227
2195
  goto _test_eof74;
2228
2196
  case 74:
2229
- #line 2230 "hpricot_scan.c"
2197
+ #line 2198 "hpricot_scan.c"
2230
2198
  switch( (*p) ) {
2231
2199
  case 13: goto tr143;
2232
2200
  case 32: goto tr143;
@@ -2243,14 +2211,14 @@ case 74:
2243
2211
  goto tr143;
2244
2212
  goto tr119;
2245
2213
  tr148:
2246
- #line 105 "hpricot_scan.rl"
2214
+ #line 111 "hpricot_scan.rl"
2247
2215
  { mark_aval = p; }
2248
2216
  goto st75;
2249
2217
  tr143:
2250
- #line 105 "hpricot_scan.rl"
2218
+ #line 111 "hpricot_scan.rl"
2251
2219
  { mark_aval = p; }
2252
- #line 110 "hpricot_scan.rl"
2253
- {
2220
+ #line 116 "hpricot_scan.rl"
2221
+ {
2254
2222
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2255
2223
  else { SET(aval, p); }
2256
2224
  }
@@ -2259,7 +2227,7 @@ st75:
2259
2227
  if ( ++p == pe )
2260
2228
  goto _test_eof75;
2261
2229
  case 75:
2262
- #line 2263 "hpricot_scan.c"
2230
+ #line 2231 "hpricot_scan.c"
2263
2231
  switch( (*p) ) {
2264
2232
  case 13: goto tr148;
2265
2233
  case 32: goto tr148;
@@ -2287,14 +2255,14 @@ case 75:
2287
2255
  goto tr150;
2288
2256
  goto tr119;
2289
2257
  tr149:
2290
- #line 105 "hpricot_scan.rl"
2258
+ #line 111 "hpricot_scan.rl"
2291
2259
  { mark_aval = p; }
2292
2260
  goto st76;
2293
2261
  tr144:
2294
- #line 105 "hpricot_scan.rl"
2262
+ #line 111 "hpricot_scan.rl"
2295
2263
  { mark_aval = p; }
2296
- #line 110 "hpricot_scan.rl"
2297
- {
2264
+ #line 116 "hpricot_scan.rl"
2265
+ {
2298
2266
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2299
2267
  else { SET(aval, p); }
2300
2268
  }
@@ -2303,7 +2271,7 @@ st76:
2303
2271
  if ( ++p == pe )
2304
2272
  goto _test_eof76;
2305
2273
  case 76:
2306
- #line 2307 "hpricot_scan.c"
2274
+ #line 2275 "hpricot_scan.c"
2307
2275
  switch( (*p) ) {
2308
2276
  case 13: goto tr143;
2309
2277
  case 32: goto tr143;
@@ -2350,14 +2318,14 @@ case 77:
2350
2318
  goto tr153;
2351
2319
  goto tr152;
2352
2320
  tr152:
2353
- #line 105 "hpricot_scan.rl"
2321
+ #line 111 "hpricot_scan.rl"
2354
2322
  { mark_aval = p; }
2355
2323
  goto st78;
2356
2324
  st78:
2357
2325
  if ( ++p == pe )
2358
2326
  goto _test_eof78;
2359
2327
  case 78:
2360
- #line 2361 "hpricot_scan.c"
2328
+ #line 2329 "hpricot_scan.c"
2361
2329
  switch( (*p) ) {
2362
2330
  case 13: goto tr161;
2363
2331
  case 32: goto tr161;
@@ -2374,40 +2342,40 @@ case 78:
2374
2342
  goto tr161;
2375
2343
  goto st78;
2376
2344
  tr336:
2377
- #line 105 "hpricot_scan.rl"
2345
+ #line 111 "hpricot_scan.rl"
2378
2346
  { mark_aval = p; }
2379
2347
  goto st79;
2380
2348
  tr161:
2381
- #line 110 "hpricot_scan.rl"
2382
- {
2349
+ #line 116 "hpricot_scan.rl"
2350
+ {
2383
2351
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2384
2352
  else { SET(aval, p); }
2385
2353
  }
2386
2354
  goto st79;
2387
2355
  tr153:
2388
- #line 105 "hpricot_scan.rl"
2356
+ #line 111 "hpricot_scan.rl"
2389
2357
  { mark_aval = p; }
2390
- #line 110 "hpricot_scan.rl"
2391
- {
2358
+ #line 116 "hpricot_scan.rl"
2359
+ {
2392
2360
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2393
2361
  else { SET(aval, p); }
2394
2362
  }
2395
2363
  goto st79;
2396
2364
  tr317:
2397
- #line 105 "hpricot_scan.rl"
2365
+ #line 111 "hpricot_scan.rl"
2398
2366
  { mark_aval = p; }
2399
- #line 109 "hpricot_scan.rl"
2367
+ #line 115 "hpricot_scan.rl"
2400
2368
  { SET(aval, p); }
2401
2369
  goto st79;
2402
2370
  tr174:
2403
- #line 109 "hpricot_scan.rl"
2371
+ #line 115 "hpricot_scan.rl"
2404
2372
  { SET(aval, p); }
2405
2373
  goto st79;
2406
2374
  st79:
2407
2375
  if ( ++p == pe )
2408
2376
  goto _test_eof79;
2409
2377
  case 79:
2410
- #line 2411 "hpricot_scan.c"
2378
+ #line 2379 "hpricot_scan.c"
2411
2379
  switch( (*p) ) {
2412
2380
  case 32: goto st79;
2413
2381
  case 34: goto tr169;
@@ -2430,70 +2398,70 @@ case 79:
2430
2398
  goto tr170;
2431
2399
  goto st80;
2432
2400
  tr157:
2433
- #line 105 "hpricot_scan.rl"
2401
+ #line 111 "hpricot_scan.rl"
2434
2402
  { mark_aval = p; }
2435
2403
  goto st80;
2436
2404
  st80:
2437
2405
  if ( ++p == pe )
2438
2406
  goto _test_eof80;
2439
2407
  case 80:
2440
- #line 2441 "hpricot_scan.c"
2408
+ #line 2409 "hpricot_scan.c"
2441
2409
  switch( (*p) ) {
2442
2410
  case 34: goto tr169;
2443
2411
  case 92: goto st81;
2444
2412
  }
2445
2413
  goto st80;
2446
2414
  tr340:
2447
- #line 105 "hpricot_scan.rl"
2415
+ #line 111 "hpricot_scan.rl"
2448
2416
  { mark_aval = p; }
2449
2417
  goto st81;
2450
2418
  st81:
2451
2419
  if ( ++p == pe )
2452
2420
  goto _test_eof81;
2453
2421
  case 81:
2454
- #line 2455 "hpricot_scan.c"
2422
+ #line 2423 "hpricot_scan.c"
2455
2423
  switch( (*p) ) {
2456
2424
  case 34: goto tr174;
2457
2425
  case 92: goto st81;
2458
2426
  }
2459
2427
  goto st80;
2460
2428
  tr170:
2461
- #line 128 "hpricot_scan.rl"
2462
- {
2429
+ #line 134 "hpricot_scan.rl"
2430
+ {
2463
2431
  ATTR(akey, aval);
2464
2432
  }
2465
- #line 121 "hpricot_scan.rl"
2466
- {
2433
+ #line 127 "hpricot_scan.rl"
2434
+ {
2467
2435
  akey = Qnil;
2468
2436
  aval = Qnil;
2469
2437
  mark_akey = NULL;
2470
2438
  mark_aval = NULL;
2471
2439
  }
2472
- #line 106 "hpricot_scan.rl"
2440
+ #line 112 "hpricot_scan.rl"
2473
2441
  { mark_akey = p; }
2474
2442
  goto st82;
2475
2443
  tr337:
2476
- #line 105 "hpricot_scan.rl"
2444
+ #line 111 "hpricot_scan.rl"
2477
2445
  { mark_aval = p; }
2478
- #line 128 "hpricot_scan.rl"
2479
- {
2446
+ #line 134 "hpricot_scan.rl"
2447
+ {
2480
2448
  ATTR(akey, aval);
2481
2449
  }
2482
- #line 121 "hpricot_scan.rl"
2483
- {
2450
+ #line 127 "hpricot_scan.rl"
2451
+ {
2484
2452
  akey = Qnil;
2485
2453
  aval = Qnil;
2486
2454
  mark_akey = NULL;
2487
2455
  mark_aval = NULL;
2488
2456
  }
2489
- #line 106 "hpricot_scan.rl"
2457
+ #line 112 "hpricot_scan.rl"
2490
2458
  { mark_akey = p; }
2491
2459
  goto st82;
2492
2460
  st82:
2493
2461
  if ( ++p == pe )
2494
2462
  goto _test_eof82;
2495
2463
  case 82:
2496
- #line 2497 "hpricot_scan.c"
2464
+ #line 2465 "hpricot_scan.c"
2497
2465
  switch( (*p) ) {
2498
2466
  case 32: goto tr175;
2499
2467
  case 34: goto tr169;
@@ -2517,21 +2485,21 @@ case 82:
2517
2485
  goto st82;
2518
2486
  goto st80;
2519
2487
  tr175:
2520
- #line 114 "hpricot_scan.rl"
2488
+ #line 120 "hpricot_scan.rl"
2521
2489
  { SET(akey, p); }
2522
2490
  goto st83;
2523
2491
  tr206:
2524
- #line 110 "hpricot_scan.rl"
2525
- {
2492
+ #line 116 "hpricot_scan.rl"
2493
+ {
2526
2494
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2527
2495
  else { SET(aval, p); }
2528
2496
  }
2529
2497
  goto st83;
2530
2498
  tr200:
2531
- #line 114 "hpricot_scan.rl"
2499
+ #line 120 "hpricot_scan.rl"
2532
2500
  { SET(akey, p); }
2533
- #line 110 "hpricot_scan.rl"
2534
- {
2501
+ #line 116 "hpricot_scan.rl"
2502
+ {
2535
2503
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2536
2504
  else { SET(aval, p); }
2537
2505
  }
@@ -2540,7 +2508,7 @@ st83:
2540
2508
  if ( ++p == pe )
2541
2509
  goto _test_eof83;
2542
2510
  case 83:
2543
- #line 2544 "hpricot_scan.c"
2511
+ #line 2512 "hpricot_scan.c"
2544
2512
  switch( (*p) ) {
2545
2513
  case 32: goto st83;
2546
2514
  case 34: goto tr169;
@@ -2564,24 +2532,24 @@ case 83:
2564
2532
  goto tr170;
2565
2533
  goto st80;
2566
2534
  tr177:
2567
- #line 114 "hpricot_scan.rl"
2535
+ #line 120 "hpricot_scan.rl"
2568
2536
  { SET(akey, p); }
2569
- #line 128 "hpricot_scan.rl"
2570
- {
2537
+ #line 134 "hpricot_scan.rl"
2538
+ {
2571
2539
  ATTR(akey, aval);
2572
2540
  }
2573
2541
  goto st84;
2574
2542
  tr171:
2575
- #line 128 "hpricot_scan.rl"
2576
- {
2543
+ #line 134 "hpricot_scan.rl"
2544
+ {
2577
2545
  ATTR(akey, aval);
2578
2546
  }
2579
2547
  goto st84;
2580
2548
  tr338:
2581
- #line 105 "hpricot_scan.rl"
2549
+ #line 111 "hpricot_scan.rl"
2582
2550
  { mark_aval = p; }
2583
- #line 128 "hpricot_scan.rl"
2584
- {
2551
+ #line 134 "hpricot_scan.rl"
2552
+ {
2585
2553
  ATTR(akey, aval);
2586
2554
  }
2587
2555
  goto st84;
@@ -2589,7 +2557,7 @@ st84:
2589
2557
  if ( ++p == pe )
2590
2558
  goto _test_eof84;
2591
2559
  case 84:
2592
- #line 2593 "hpricot_scan.c"
2560
+ #line 2561 "hpricot_scan.c"
2593
2561
  switch( (*p) ) {
2594
2562
  case 34: goto tr169;
2595
2563
  case 62: goto tr182;
@@ -2599,15 +2567,15 @@ case 84:
2599
2567
  tr158:
2600
2568
  #line 1 "hpricot_scan.rl"
2601
2569
  {te = p+1;}
2602
- #line 105 "hpricot_scan.rl"
2570
+ #line 111 "hpricot_scan.rl"
2603
2571
  { mark_aval = p; }
2604
- #line 110 "hpricot_scan.rl"
2605
- {
2572
+ #line 116 "hpricot_scan.rl"
2573
+ {
2606
2574
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2607
2575
  else { SET(aval, p); }
2608
2576
  }
2609
- #line 128 "hpricot_scan.rl"
2610
- {
2577
+ #line 134 "hpricot_scan.rl"
2578
+ {
2611
2579
  ATTR(akey, aval);
2612
2580
  }
2613
2581
  #line 68 "hpricot_scan.rl"
@@ -2616,13 +2584,13 @@ tr158:
2616
2584
  tr166:
2617
2585
  #line 1 "hpricot_scan.rl"
2618
2586
  {te = p+1;}
2619
- #line 110 "hpricot_scan.rl"
2620
- {
2587
+ #line 116 "hpricot_scan.rl"
2588
+ {
2621
2589
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2622
2590
  else { SET(aval, p); }
2623
2591
  }
2624
- #line 128 "hpricot_scan.rl"
2625
- {
2592
+ #line 134 "hpricot_scan.rl"
2593
+ {
2626
2594
  ATTR(akey, aval);
2627
2595
  }
2628
2596
  #line 68 "hpricot_scan.rl"
@@ -2631,8 +2599,8 @@ tr166:
2631
2599
  tr172:
2632
2600
  #line 1 "hpricot_scan.rl"
2633
2601
  {te = p+1;}
2634
- #line 128 "hpricot_scan.rl"
2635
- {
2602
+ #line 134 "hpricot_scan.rl"
2603
+ {
2636
2604
  ATTR(akey, aval);
2637
2605
  }
2638
2606
  #line 68 "hpricot_scan.rl"
@@ -2641,10 +2609,10 @@ tr172:
2641
2609
  tr179:
2642
2610
  #line 1 "hpricot_scan.rl"
2643
2611
  {te = p+1;}
2644
- #line 114 "hpricot_scan.rl"
2612
+ #line 120 "hpricot_scan.rl"
2645
2613
  { SET(akey, p); }
2646
- #line 128 "hpricot_scan.rl"
2647
- {
2614
+ #line 134 "hpricot_scan.rl"
2615
+ {
2648
2616
  ATTR(akey, aval);
2649
2617
  }
2650
2618
  #line 68 "hpricot_scan.rl"
@@ -2659,12 +2627,12 @@ tr182:
2659
2627
  tr196:
2660
2628
  #line 1 "hpricot_scan.rl"
2661
2629
  {te = p+1;}
2662
- #line 128 "hpricot_scan.rl"
2663
- {
2630
+ #line 134 "hpricot_scan.rl"
2631
+ {
2664
2632
  ATTR(akey, aval);
2665
2633
  }
2666
- #line 110 "hpricot_scan.rl"
2667
- {
2634
+ #line 116 "hpricot_scan.rl"
2635
+ {
2668
2636
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2669
2637
  else { SET(aval, p); }
2670
2638
  }
@@ -2674,14 +2642,14 @@ tr196:
2674
2642
  tr197:
2675
2643
  #line 1 "hpricot_scan.rl"
2676
2644
  {te = p+1;}
2677
- #line 105 "hpricot_scan.rl"
2645
+ #line 111 "hpricot_scan.rl"
2678
2646
  { mark_aval = p; }
2679
- #line 128 "hpricot_scan.rl"
2680
- {
2647
+ #line 134 "hpricot_scan.rl"
2648
+ {
2681
2649
  ATTR(akey, aval);
2682
2650
  }
2683
- #line 110 "hpricot_scan.rl"
2684
- {
2651
+ #line 116 "hpricot_scan.rl"
2652
+ {
2685
2653
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2686
2654
  else { SET(aval, p); }
2687
2655
  }
@@ -2691,15 +2659,15 @@ tr197:
2691
2659
  tr205:
2692
2660
  #line 1 "hpricot_scan.rl"
2693
2661
  {te = p+1;}
2694
- #line 110 "hpricot_scan.rl"
2695
- {
2662
+ #line 116 "hpricot_scan.rl"
2663
+ {
2696
2664
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2697
2665
  else { SET(aval, p); }
2698
2666
  }
2699
- #line 114 "hpricot_scan.rl"
2667
+ #line 120 "hpricot_scan.rl"
2700
2668
  { SET(akey, p); }
2701
- #line 128 "hpricot_scan.rl"
2702
- {
2669
+ #line 134 "hpricot_scan.rl"
2670
+ {
2703
2671
  ATTR(akey, aval);
2704
2672
  }
2705
2673
  #line 68 "hpricot_scan.rl"
@@ -2708,10 +2676,10 @@ tr205:
2708
2676
  tr339:
2709
2677
  #line 1 "hpricot_scan.rl"
2710
2678
  {te = p+1;}
2711
- #line 105 "hpricot_scan.rl"
2679
+ #line 111 "hpricot_scan.rl"
2712
2680
  { mark_aval = p; }
2713
- #line 128 "hpricot_scan.rl"
2714
- {
2681
+ #line 134 "hpricot_scan.rl"
2682
+ {
2715
2683
  ATTR(akey, aval);
2716
2684
  }
2717
2685
  #line 68 "hpricot_scan.rl"
@@ -2721,21 +2689,21 @@ st209:
2721
2689
  if ( ++p == pe )
2722
2690
  goto _test_eof209;
2723
2691
  case 209:
2724
- #line 2725 "hpricot_scan.c"
2692
+ #line 2693 "hpricot_scan.c"
2725
2693
  switch( (*p) ) {
2726
2694
  case 34: goto tr169;
2727
2695
  case 92: goto st81;
2728
2696
  }
2729
2697
  goto st80;
2730
2698
  tr178:
2731
- #line 114 "hpricot_scan.rl"
2699
+ #line 120 "hpricot_scan.rl"
2732
2700
  { SET(akey, p); }
2733
2701
  goto st85;
2734
2702
  st85:
2735
2703
  if ( ++p == pe )
2736
2704
  goto _test_eof85;
2737
2705
  case 85:
2738
- #line 2739 "hpricot_scan.c"
2706
+ #line 2707 "hpricot_scan.c"
2739
2707
  switch( (*p) ) {
2740
2708
  case 13: goto tr183;
2741
2709
  case 32: goto tr183;
@@ -2753,14 +2721,14 @@ case 85:
2753
2721
  goto tr183;
2754
2722
  goto tr152;
2755
2723
  tr183:
2756
- #line 105 "hpricot_scan.rl"
2724
+ #line 111 "hpricot_scan.rl"
2757
2725
  { mark_aval = p; }
2758
2726
  goto st86;
2759
2727
  st86:
2760
2728
  if ( ++p == pe )
2761
2729
  goto _test_eof86;
2762
2730
  case 86:
2763
- #line 2764 "hpricot_scan.c"
2731
+ #line 2732 "hpricot_scan.c"
2764
2732
  switch( (*p) ) {
2765
2733
  case 13: goto tr188;
2766
2734
  case 32: goto tr188;
@@ -2778,14 +2746,14 @@ case 86:
2778
2746
  goto tr188;
2779
2747
  goto tr152;
2780
2748
  tr188:
2781
- #line 105 "hpricot_scan.rl"
2749
+ #line 111 "hpricot_scan.rl"
2782
2750
  { mark_aval = p; }
2783
2751
  goto st87;
2784
2752
  tr191:
2785
- #line 105 "hpricot_scan.rl"
2753
+ #line 111 "hpricot_scan.rl"
2786
2754
  { mark_aval = p; }
2787
- #line 110 "hpricot_scan.rl"
2788
- {
2755
+ #line 116 "hpricot_scan.rl"
2756
+ {
2789
2757
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2790
2758
  else { SET(aval, p); }
2791
2759
  }
@@ -2794,7 +2762,7 @@ st87:
2794
2762
  if ( ++p == pe )
2795
2763
  goto _test_eof87;
2796
2764
  case 87:
2797
- #line 2798 "hpricot_scan.c"
2765
+ #line 2766 "hpricot_scan.c"
2798
2766
  switch( (*p) ) {
2799
2767
  case 13: goto tr188;
2800
2768
  case 32: goto tr188;
@@ -2823,14 +2791,14 @@ case 87:
2823
2791
  goto tr190;
2824
2792
  goto tr152;
2825
2793
  tr189:
2826
- #line 105 "hpricot_scan.rl"
2794
+ #line 111 "hpricot_scan.rl"
2827
2795
  { mark_aval = p; }
2828
2796
  goto st88;
2829
2797
  tr192:
2830
- #line 105 "hpricot_scan.rl"
2798
+ #line 111 "hpricot_scan.rl"
2831
2799
  { mark_aval = p; }
2832
- #line 110 "hpricot_scan.rl"
2833
- {
2800
+ #line 116 "hpricot_scan.rl"
2801
+ {
2834
2802
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2835
2803
  else { SET(aval, p); }
2836
2804
  }
@@ -2839,7 +2807,7 @@ st88:
2839
2807
  if ( ++p == pe )
2840
2808
  goto _test_eof88;
2841
2809
  case 88:
2842
- #line 2843 "hpricot_scan.c"
2810
+ #line 2811 "hpricot_scan.c"
2843
2811
  switch( (*p) ) {
2844
2812
  case 13: goto tr191;
2845
2813
  case 32: goto tr191;
@@ -2868,14 +2836,14 @@ case 88:
2868
2836
  goto tr190;
2869
2837
  goto tr152;
2870
2838
  tr193:
2871
- #line 109 "hpricot_scan.rl"
2839
+ #line 115 "hpricot_scan.rl"
2872
2840
  { SET(aval, p); }
2873
2841
  goto st89;
2874
2842
  st89:
2875
2843
  if ( ++p == pe )
2876
2844
  goto _test_eof89;
2877
2845
  case 89:
2878
- #line 2879 "hpricot_scan.c"
2846
+ #line 2847 "hpricot_scan.c"
2879
2847
  switch( (*p) ) {
2880
2848
  case 13: goto tr153;
2881
2849
  case 32: goto tr153;
@@ -2903,36 +2871,36 @@ case 89:
2903
2871
  goto tr190;
2904
2872
  goto tr152;
2905
2873
  tr162:
2906
- #line 110 "hpricot_scan.rl"
2907
- {
2874
+ #line 116 "hpricot_scan.rl"
2875
+ {
2908
2876
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2909
2877
  else { SET(aval, p); }
2910
2878
  }
2911
2879
  goto st90;
2912
2880
  tr154:
2913
- #line 105 "hpricot_scan.rl"
2881
+ #line 111 "hpricot_scan.rl"
2914
2882
  { mark_aval = p; }
2915
- #line 110 "hpricot_scan.rl"
2916
- {
2883
+ #line 116 "hpricot_scan.rl"
2884
+ {
2917
2885
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
2918
2886
  else { SET(aval, p); }
2919
2887
  }
2920
2888
  goto st90;
2921
2889
  tr214:
2922
- #line 105 "hpricot_scan.rl"
2890
+ #line 111 "hpricot_scan.rl"
2923
2891
  { mark_aval = p; }
2924
- #line 109 "hpricot_scan.rl"
2892
+ #line 115 "hpricot_scan.rl"
2925
2893
  { SET(aval, p); }
2926
2894
  goto st90;
2927
2895
  tr209:
2928
- #line 109 "hpricot_scan.rl"
2896
+ #line 115 "hpricot_scan.rl"
2929
2897
  { SET(aval, p); }
2930
2898
  goto st90;
2931
2899
  st90:
2932
2900
  if ( ++p == pe )
2933
2901
  goto _test_eof90;
2934
2902
  case 90:
2935
- #line 2936 "hpricot_scan.c"
2903
+ #line 2904 "hpricot_scan.c"
2936
2904
  switch( (*p) ) {
2937
2905
  case 13: goto tr161;
2938
2906
  case 32: goto tr161;
@@ -2960,42 +2928,42 @@ case 90:
2960
2928
  goto tr198;
2961
2929
  goto st78;
2962
2930
  tr198:
2963
- #line 128 "hpricot_scan.rl"
2964
- {
2931
+ #line 134 "hpricot_scan.rl"
2932
+ {
2965
2933
  ATTR(akey, aval);
2966
2934
  }
2967
- #line 121 "hpricot_scan.rl"
2968
- {
2935
+ #line 127 "hpricot_scan.rl"
2936
+ {
2969
2937
  akey = Qnil;
2970
2938
  aval = Qnil;
2971
2939
  mark_akey = NULL;
2972
2940
  mark_aval = NULL;
2973
2941
  }
2974
- #line 106 "hpricot_scan.rl"
2942
+ #line 112 "hpricot_scan.rl"
2975
2943
  { mark_akey = p; }
2976
2944
  goto st91;
2977
2945
  tr190:
2978
- #line 105 "hpricot_scan.rl"
2946
+ #line 111 "hpricot_scan.rl"
2979
2947
  { mark_aval = p; }
2980
- #line 128 "hpricot_scan.rl"
2981
- {
2948
+ #line 134 "hpricot_scan.rl"
2949
+ {
2982
2950
  ATTR(akey, aval);
2983
2951
  }
2984
- #line 121 "hpricot_scan.rl"
2985
- {
2952
+ #line 127 "hpricot_scan.rl"
2953
+ {
2986
2954
  akey = Qnil;
2987
2955
  aval = Qnil;
2988
2956
  mark_akey = NULL;
2989
2957
  mark_aval = NULL;
2990
2958
  }
2991
- #line 106 "hpricot_scan.rl"
2959
+ #line 112 "hpricot_scan.rl"
2992
2960
  { mark_akey = p; }
2993
2961
  goto st91;
2994
2962
  st91:
2995
2963
  if ( ++p == pe )
2996
2964
  goto _test_eof91;
2997
2965
  case 91:
2998
- #line 2999 "hpricot_scan.c"
2966
+ #line 2967 "hpricot_scan.c"
2999
2967
  switch( (*p) ) {
3000
2968
  case 13: goto tr200;
3001
2969
  case 32: goto tr200;
@@ -3024,17 +2992,17 @@ case 91:
3024
2992
  goto st91;
3025
2993
  goto st78;
3026
2994
  tr207:
3027
- #line 110 "hpricot_scan.rl"
3028
- {
2995
+ #line 116 "hpricot_scan.rl"
2996
+ {
3029
2997
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3030
2998
  else { SET(aval, p); }
3031
2999
  }
3032
3000
  goto st92;
3033
3001
  tr201:
3034
- #line 114 "hpricot_scan.rl"
3002
+ #line 120 "hpricot_scan.rl"
3035
3003
  { SET(akey, p); }
3036
- #line 110 "hpricot_scan.rl"
3037
- {
3004
+ #line 116 "hpricot_scan.rl"
3005
+ {
3038
3006
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3039
3007
  else { SET(aval, p); }
3040
3008
  }
@@ -3043,7 +3011,7 @@ st92:
3043
3011
  if ( ++p == pe )
3044
3012
  goto _test_eof92;
3045
3013
  case 92:
3046
- #line 3047 "hpricot_scan.c"
3014
+ #line 3015 "hpricot_scan.c"
3047
3015
  switch( (*p) ) {
3048
3016
  case 13: goto tr206;
3049
3017
  case 32: goto tr206;
@@ -3072,70 +3040,70 @@ case 92:
3072
3040
  goto tr198;
3073
3041
  goto st78;
3074
3042
  tr187:
3075
- #line 105 "hpricot_scan.rl"
3043
+ #line 111 "hpricot_scan.rl"
3076
3044
  { mark_aval = p; }
3077
- #line 128 "hpricot_scan.rl"
3078
- {
3045
+ #line 134 "hpricot_scan.rl"
3046
+ {
3079
3047
  ATTR(akey, aval);
3080
3048
  }
3081
3049
  goto st93;
3082
3050
  tr164:
3083
- #line 110 "hpricot_scan.rl"
3084
- {
3051
+ #line 116 "hpricot_scan.rl"
3052
+ {
3085
3053
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3086
3054
  else { SET(aval, p); }
3087
3055
  }
3088
- #line 128 "hpricot_scan.rl"
3089
- {
3056
+ #line 134 "hpricot_scan.rl"
3057
+ {
3090
3058
  ATTR(akey, aval);
3091
3059
  }
3092
3060
  goto st93;
3093
3061
  tr199:
3094
- #line 128 "hpricot_scan.rl"
3095
- {
3062
+ #line 134 "hpricot_scan.rl"
3063
+ {
3096
3064
  ATTR(akey, aval);
3097
3065
  }
3098
- #line 110 "hpricot_scan.rl"
3099
- {
3066
+ #line 116 "hpricot_scan.rl"
3067
+ {
3100
3068
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3101
3069
  else { SET(aval, p); }
3102
3070
  }
3103
3071
  goto st93;
3104
3072
  tr203:
3105
- #line 110 "hpricot_scan.rl"
3106
- {
3073
+ #line 116 "hpricot_scan.rl"
3074
+ {
3107
3075
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3108
3076
  else { SET(aval, p); }
3109
3077
  }
3110
- #line 114 "hpricot_scan.rl"
3078
+ #line 120 "hpricot_scan.rl"
3111
3079
  { SET(akey, p); }
3112
- #line 128 "hpricot_scan.rl"
3113
- {
3080
+ #line 134 "hpricot_scan.rl"
3081
+ {
3114
3082
  ATTR(akey, aval);
3115
3083
  }
3116
3084
  goto st93;
3117
3085
  tr156:
3118
- #line 105 "hpricot_scan.rl"
3086
+ #line 111 "hpricot_scan.rl"
3119
3087
  { mark_aval = p; }
3120
- #line 110 "hpricot_scan.rl"
3121
- {
3088
+ #line 116 "hpricot_scan.rl"
3089
+ {
3122
3090
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3123
3091
  else { SET(aval, p); }
3124
3092
  }
3125
- #line 128 "hpricot_scan.rl"
3126
- {
3093
+ #line 134 "hpricot_scan.rl"
3094
+ {
3127
3095
  ATTR(akey, aval);
3128
3096
  }
3129
3097
  goto st93;
3130
3098
  tr195:
3131
- #line 105 "hpricot_scan.rl"
3099
+ #line 111 "hpricot_scan.rl"
3132
3100
  { mark_aval = p; }
3133
- #line 128 "hpricot_scan.rl"
3134
- {
3101
+ #line 134 "hpricot_scan.rl"
3102
+ {
3135
3103
  ATTR(akey, aval);
3136
3104
  }
3137
- #line 110 "hpricot_scan.rl"
3138
- {
3105
+ #line 116 "hpricot_scan.rl"
3106
+ {
3139
3107
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3140
3108
  else { SET(aval, p); }
3141
3109
  }
@@ -3144,7 +3112,7 @@ st93:
3144
3112
  if ( ++p == pe )
3145
3113
  goto _test_eof93;
3146
3114
  case 93:
3147
- #line 3148 "hpricot_scan.c"
3115
+ #line 3116 "hpricot_scan.c"
3148
3116
  switch( (*p) ) {
3149
3117
  case 13: goto tr161;
3150
3118
  case 32: goto tr161;
@@ -3161,14 +3129,14 @@ case 93:
3161
3129
  goto tr161;
3162
3130
  goto st78;
3163
3131
  tr159:
3164
- #line 105 "hpricot_scan.rl"
3132
+ #line 111 "hpricot_scan.rl"
3165
3133
  { mark_aval = p; }
3166
3134
  goto st94;
3167
3135
  st94:
3168
3136
  if ( ++p == pe )
3169
3137
  goto _test_eof94;
3170
3138
  case 94:
3171
- #line 3172 "hpricot_scan.c"
3139
+ #line 3140 "hpricot_scan.c"
3172
3140
  switch( (*p) ) {
3173
3141
  case 13: goto tr161;
3174
3142
  case 32: goto tr161;
@@ -3185,18 +3153,18 @@ case 94:
3185
3153
  goto tr161;
3186
3154
  goto st78;
3187
3155
  tr184:
3188
- #line 105 "hpricot_scan.rl"
3156
+ #line 111 "hpricot_scan.rl"
3189
3157
  { mark_aval = p; }
3190
3158
  goto st95;
3191
3159
  tr204:
3192
- #line 114 "hpricot_scan.rl"
3160
+ #line 120 "hpricot_scan.rl"
3193
3161
  { SET(akey, p); }
3194
3162
  goto st95;
3195
3163
  st95:
3196
3164
  if ( ++p == pe )
3197
3165
  goto _test_eof95;
3198
3166
  case 95:
3199
- #line 3200 "hpricot_scan.c"
3167
+ #line 3168 "hpricot_scan.c"
3200
3168
  switch( (*p) ) {
3201
3169
  case 13: goto tr191;
3202
3170
  case 32: goto tr191;
@@ -3234,14 +3202,14 @@ case 96:
3234
3202
  goto tr211;
3235
3203
  goto tr210;
3236
3204
  tr210:
3237
- #line 105 "hpricot_scan.rl"
3205
+ #line 111 "hpricot_scan.rl"
3238
3206
  { mark_aval = p; }
3239
3207
  goto st97;
3240
3208
  st97:
3241
3209
  if ( ++p == pe )
3242
3210
  goto _test_eof97;
3243
3211
  case 97:
3244
- #line 3245 "hpricot_scan.c"
3212
+ #line 3213 "hpricot_scan.c"
3245
3213
  switch( (*p) ) {
3246
3214
  case 13: goto tr220;
3247
3215
  case 32: goto tr220;
@@ -3259,34 +3227,34 @@ case 97:
3259
3227
  goto tr220;
3260
3228
  goto st97;
3261
3229
  tr315:
3262
- #line 105 "hpricot_scan.rl"
3230
+ #line 111 "hpricot_scan.rl"
3263
3231
  { mark_aval = p; }
3264
3232
  goto st98;
3265
3233
  tr220:
3266
- #line 110 "hpricot_scan.rl"
3267
- {
3234
+ #line 116 "hpricot_scan.rl"
3235
+ {
3268
3236
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3269
3237
  else { SET(aval, p); }
3270
3238
  }
3271
3239
  goto st98;
3272
3240
  tr211:
3273
- #line 105 "hpricot_scan.rl"
3241
+ #line 111 "hpricot_scan.rl"
3274
3242
  { mark_aval = p; }
3275
- #line 110 "hpricot_scan.rl"
3276
- {
3243
+ #line 116 "hpricot_scan.rl"
3244
+ {
3277
3245
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3278
3246
  else { SET(aval, p); }
3279
3247
  }
3280
3248
  goto st98;
3281
3249
  tr299:
3282
- #line 109 "hpricot_scan.rl"
3250
+ #line 115 "hpricot_scan.rl"
3283
3251
  { SET(aval, p); }
3284
3252
  goto st98;
3285
3253
  st98:
3286
3254
  if ( ++p == pe )
3287
3255
  goto _test_eof98;
3288
3256
  case 98:
3289
- #line 3290 "hpricot_scan.c"
3257
+ #line 3258 "hpricot_scan.c"
3290
3258
  switch( (*p) ) {
3291
3259
  case 32: goto st98;
3292
3260
  case 34: goto tr228;
@@ -3310,14 +3278,14 @@ case 98:
3310
3278
  goto tr229;
3311
3279
  goto st99;
3312
3280
  tr216:
3313
- #line 105 "hpricot_scan.rl"
3281
+ #line 111 "hpricot_scan.rl"
3314
3282
  { mark_aval = p; }
3315
3283
  goto st99;
3316
3284
  st99:
3317
3285
  if ( ++p == pe )
3318
3286
  goto _test_eof99;
3319
3287
  case 99:
3320
- #line 3321 "hpricot_scan.c"
3288
+ #line 3289 "hpricot_scan.c"
3321
3289
  switch( (*p) ) {
3322
3290
  case 34: goto tr228;
3323
3291
  case 39: goto tr174;
@@ -3325,46 +3293,46 @@ case 99:
3325
3293
  }
3326
3294
  goto st99;
3327
3295
  tr330:
3328
- #line 105 "hpricot_scan.rl"
3296
+ #line 111 "hpricot_scan.rl"
3329
3297
  { mark_aval = p; }
3330
3298
  goto st100;
3331
3299
  tr255:
3332
- #line 110 "hpricot_scan.rl"
3333
- {
3300
+ #line 116 "hpricot_scan.rl"
3301
+ {
3334
3302
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3335
3303
  else { SET(aval, p); }
3336
3304
  }
3337
3305
  goto st100;
3338
3306
  tr326:
3339
- #line 105 "hpricot_scan.rl"
3307
+ #line 111 "hpricot_scan.rl"
3340
3308
  { mark_aval = p; }
3341
- #line 110 "hpricot_scan.rl"
3342
- {
3309
+ #line 116 "hpricot_scan.rl"
3310
+ {
3343
3311
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3344
3312
  else { SET(aval, p); }
3345
3313
  }
3346
3314
  goto st100;
3347
3315
  tr316:
3348
- #line 105 "hpricot_scan.rl"
3316
+ #line 111 "hpricot_scan.rl"
3349
3317
  { mark_aval = p; }
3350
- #line 109 "hpricot_scan.rl"
3318
+ #line 115 "hpricot_scan.rl"
3351
3319
  { SET(aval, p); }
3352
3320
  goto st100;
3353
3321
  tr228:
3354
- #line 109 "hpricot_scan.rl"
3322
+ #line 115 "hpricot_scan.rl"
3355
3323
  { SET(aval, p); }
3356
3324
  goto st100;
3357
3325
  tr322:
3358
- #line 109 "hpricot_scan.rl"
3326
+ #line 115 "hpricot_scan.rl"
3359
3327
  { SET(aval, p); }
3360
- #line 105 "hpricot_scan.rl"
3328
+ #line 111 "hpricot_scan.rl"
3361
3329
  { mark_aval = p; }
3362
3330
  goto st100;
3363
3331
  st100:
3364
3332
  if ( ++p == pe )
3365
3333
  goto _test_eof100;
3366
3334
  case 100:
3367
- #line 3368 "hpricot_scan.c"
3335
+ #line 3336 "hpricot_scan.c"
3368
3336
  switch( (*p) ) {
3369
3337
  case 32: goto st100;
3370
3338
  case 39: goto tr169;
@@ -3387,70 +3355,70 @@ case 100:
3387
3355
  goto tr235;
3388
3356
  goto st101;
3389
3357
  tr328:
3390
- #line 105 "hpricot_scan.rl"
3358
+ #line 111 "hpricot_scan.rl"
3391
3359
  { mark_aval = p; }
3392
3360
  goto st101;
3393
3361
  st101:
3394
3362
  if ( ++p == pe )
3395
3363
  goto _test_eof101;
3396
3364
  case 101:
3397
- #line 3398 "hpricot_scan.c"
3365
+ #line 3366 "hpricot_scan.c"
3398
3366
  switch( (*p) ) {
3399
3367
  case 39: goto tr169;
3400
3368
  case 92: goto st102;
3401
3369
  }
3402
3370
  goto st101;
3403
3371
  tr335:
3404
- #line 105 "hpricot_scan.rl"
3372
+ #line 111 "hpricot_scan.rl"
3405
3373
  { mark_aval = p; }
3406
3374
  goto st102;
3407
3375
  st102:
3408
3376
  if ( ++p == pe )
3409
3377
  goto _test_eof102;
3410
3378
  case 102:
3411
- #line 3412 "hpricot_scan.c"
3379
+ #line 3380 "hpricot_scan.c"
3412
3380
  switch( (*p) ) {
3413
3381
  case 39: goto tr228;
3414
3382
  case 92: goto st102;
3415
3383
  }
3416
3384
  goto st101;
3417
3385
  tr235:
3418
- #line 128 "hpricot_scan.rl"
3419
- {
3386
+ #line 134 "hpricot_scan.rl"
3387
+ {
3420
3388
  ATTR(akey, aval);
3421
3389
  }
3422
- #line 121 "hpricot_scan.rl"
3423
- {
3390
+ #line 127 "hpricot_scan.rl"
3391
+ {
3424
3392
  akey = Qnil;
3425
3393
  aval = Qnil;
3426
3394
  mark_akey = NULL;
3427
3395
  mark_aval = NULL;
3428
3396
  }
3429
- #line 106 "hpricot_scan.rl"
3397
+ #line 112 "hpricot_scan.rl"
3430
3398
  { mark_akey = p; }
3431
3399
  goto st103;
3432
3400
  tr332:
3433
- #line 105 "hpricot_scan.rl"
3401
+ #line 111 "hpricot_scan.rl"
3434
3402
  { mark_aval = p; }
3435
- #line 128 "hpricot_scan.rl"
3436
- {
3403
+ #line 134 "hpricot_scan.rl"
3404
+ {
3437
3405
  ATTR(akey, aval);
3438
3406
  }
3439
- #line 121 "hpricot_scan.rl"
3440
- {
3407
+ #line 127 "hpricot_scan.rl"
3408
+ {
3441
3409
  akey = Qnil;
3442
3410
  aval = Qnil;
3443
3411
  mark_akey = NULL;
3444
3412
  mark_aval = NULL;
3445
3413
  }
3446
- #line 106 "hpricot_scan.rl"
3414
+ #line 112 "hpricot_scan.rl"
3447
3415
  { mark_akey = p; }
3448
3416
  goto st103;
3449
3417
  st103:
3450
3418
  if ( ++p == pe )
3451
3419
  goto _test_eof103;
3452
3420
  case 103:
3453
- #line 3454 "hpricot_scan.c"
3421
+ #line 3422 "hpricot_scan.c"
3454
3422
  switch( (*p) ) {
3455
3423
  case 32: goto tr239;
3456
3424
  case 39: goto tr169;
@@ -3474,21 +3442,21 @@ case 103:
3474
3442
  goto st103;
3475
3443
  goto st101;
3476
3444
  tr239:
3477
- #line 114 "hpricot_scan.rl"
3445
+ #line 120 "hpricot_scan.rl"
3478
3446
  { SET(akey, p); }
3479
3447
  goto st104;
3480
3448
  tr269:
3481
- #line 110 "hpricot_scan.rl"
3482
- {
3449
+ #line 116 "hpricot_scan.rl"
3450
+ {
3483
3451
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3484
3452
  else { SET(aval, p); }
3485
3453
  }
3486
3454
  goto st104;
3487
3455
  tr263:
3488
- #line 114 "hpricot_scan.rl"
3456
+ #line 120 "hpricot_scan.rl"
3489
3457
  { SET(akey, p); }
3490
- #line 110 "hpricot_scan.rl"
3491
- {
3458
+ #line 116 "hpricot_scan.rl"
3459
+ {
3492
3460
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3493
3461
  else { SET(aval, p); }
3494
3462
  }
@@ -3497,7 +3465,7 @@ st104:
3497
3465
  if ( ++p == pe )
3498
3466
  goto _test_eof104;
3499
3467
  case 104:
3500
- #line 3501 "hpricot_scan.c"
3468
+ #line 3469 "hpricot_scan.c"
3501
3469
  switch( (*p) ) {
3502
3470
  case 32: goto st104;
3503
3471
  case 39: goto tr169;
@@ -3521,24 +3489,24 @@ case 104:
3521
3489
  goto tr235;
3522
3490
  goto st101;
3523
3491
  tr241:
3524
- #line 114 "hpricot_scan.rl"
3492
+ #line 120 "hpricot_scan.rl"
3525
3493
  { SET(akey, p); }
3526
- #line 128 "hpricot_scan.rl"
3527
- {
3494
+ #line 134 "hpricot_scan.rl"
3495
+ {
3528
3496
  ATTR(akey, aval);
3529
3497
  }
3530
3498
  goto st105;
3531
3499
  tr236:
3532
- #line 128 "hpricot_scan.rl"
3533
- {
3500
+ #line 134 "hpricot_scan.rl"
3501
+ {
3534
3502
  ATTR(akey, aval);
3535
3503
  }
3536
3504
  goto st105;
3537
3505
  tr333:
3538
- #line 105 "hpricot_scan.rl"
3506
+ #line 111 "hpricot_scan.rl"
3539
3507
  { mark_aval = p; }
3540
- #line 128 "hpricot_scan.rl"
3541
- {
3508
+ #line 134 "hpricot_scan.rl"
3509
+ {
3542
3510
  ATTR(akey, aval);
3543
3511
  }
3544
3512
  goto st105;
@@ -3546,7 +3514,7 @@ st105:
3546
3514
  if ( ++p == pe )
3547
3515
  goto _test_eof105;
3548
3516
  case 105:
3549
- #line 3550 "hpricot_scan.c"
3517
+ #line 3518 "hpricot_scan.c"
3550
3518
  switch( (*p) ) {
3551
3519
  case 39: goto tr169;
3552
3520
  case 62: goto tr246;
@@ -3556,15 +3524,15 @@ case 105:
3556
3524
  tr341:
3557
3525
  #line 1 "hpricot_scan.rl"
3558
3526
  {te = p+1;}
3559
- #line 105 "hpricot_scan.rl"
3527
+ #line 111 "hpricot_scan.rl"
3560
3528
  { mark_aval = p; }
3561
- #line 110 "hpricot_scan.rl"
3562
- {
3529
+ #line 116 "hpricot_scan.rl"
3530
+ {
3563
3531
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3564
3532
  else { SET(aval, p); }
3565
3533
  }
3566
- #line 128 "hpricot_scan.rl"
3567
- {
3534
+ #line 134 "hpricot_scan.rl"
3535
+ {
3568
3536
  ATTR(akey, aval);
3569
3537
  }
3570
3538
  #line 68 "hpricot_scan.rl"
@@ -3573,13 +3541,13 @@ tr341:
3573
3541
  tr258:
3574
3542
  #line 1 "hpricot_scan.rl"
3575
3543
  {te = p+1;}
3576
- #line 110 "hpricot_scan.rl"
3577
- {
3544
+ #line 116 "hpricot_scan.rl"
3545
+ {
3578
3546
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3579
3547
  else { SET(aval, p); }
3580
3548
  }
3581
- #line 128 "hpricot_scan.rl"
3582
- {
3549
+ #line 134 "hpricot_scan.rl"
3550
+ {
3583
3551
  ATTR(akey, aval);
3584
3552
  }
3585
3553
  #line 68 "hpricot_scan.rl"
@@ -3588,8 +3556,8 @@ tr258:
3588
3556
  tr237:
3589
3557
  #line 1 "hpricot_scan.rl"
3590
3558
  {te = p+1;}
3591
- #line 128 "hpricot_scan.rl"
3592
- {
3559
+ #line 134 "hpricot_scan.rl"
3560
+ {
3593
3561
  ATTR(akey, aval);
3594
3562
  }
3595
3563
  #line 68 "hpricot_scan.rl"
@@ -3598,10 +3566,10 @@ tr237:
3598
3566
  tr243:
3599
3567
  #line 1 "hpricot_scan.rl"
3600
3568
  {te = p+1;}
3601
- #line 114 "hpricot_scan.rl"
3569
+ #line 120 "hpricot_scan.rl"
3602
3570
  { SET(akey, p); }
3603
- #line 128 "hpricot_scan.rl"
3604
- {
3571
+ #line 134 "hpricot_scan.rl"
3572
+ {
3605
3573
  ATTR(akey, aval);
3606
3574
  }
3607
3575
  #line 68 "hpricot_scan.rl"
@@ -3616,12 +3584,12 @@ tr246:
3616
3584
  tr262:
3617
3585
  #line 1 "hpricot_scan.rl"
3618
3586
  {te = p+1;}
3619
- #line 128 "hpricot_scan.rl"
3620
- {
3587
+ #line 134 "hpricot_scan.rl"
3588
+ {
3621
3589
  ATTR(akey, aval);
3622
3590
  }
3623
- #line 110 "hpricot_scan.rl"
3624
- {
3591
+ #line 116 "hpricot_scan.rl"
3592
+ {
3625
3593
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3626
3594
  else { SET(aval, p); }
3627
3595
  }
@@ -3631,14 +3599,14 @@ tr262:
3631
3599
  tr329:
3632
3600
  #line 1 "hpricot_scan.rl"
3633
3601
  {te = p+1;}
3634
- #line 105 "hpricot_scan.rl"
3602
+ #line 111 "hpricot_scan.rl"
3635
3603
  { mark_aval = p; }
3636
- #line 128 "hpricot_scan.rl"
3637
- {
3604
+ #line 134 "hpricot_scan.rl"
3605
+ {
3638
3606
  ATTR(akey, aval);
3639
3607
  }
3640
- #line 110 "hpricot_scan.rl"
3641
- {
3608
+ #line 116 "hpricot_scan.rl"
3609
+ {
3642
3610
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3643
3611
  else { SET(aval, p); }
3644
3612
  }
@@ -3648,15 +3616,15 @@ tr329:
3648
3616
  tr268:
3649
3617
  #line 1 "hpricot_scan.rl"
3650
3618
  {te = p+1;}
3651
- #line 110 "hpricot_scan.rl"
3652
- {
3619
+ #line 116 "hpricot_scan.rl"
3620
+ {
3653
3621
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3654
3622
  else { SET(aval, p); }
3655
3623
  }
3656
- #line 114 "hpricot_scan.rl"
3624
+ #line 120 "hpricot_scan.rl"
3657
3625
  { SET(akey, p); }
3658
- #line 128 "hpricot_scan.rl"
3659
- {
3626
+ #line 134 "hpricot_scan.rl"
3627
+ {
3660
3628
  ATTR(akey, aval);
3661
3629
  }
3662
3630
  #line 68 "hpricot_scan.rl"
@@ -3665,10 +3633,10 @@ tr268:
3665
3633
  tr334:
3666
3634
  #line 1 "hpricot_scan.rl"
3667
3635
  {te = p+1;}
3668
- #line 105 "hpricot_scan.rl"
3636
+ #line 111 "hpricot_scan.rl"
3669
3637
  { mark_aval = p; }
3670
- #line 128 "hpricot_scan.rl"
3671
- {
3638
+ #line 134 "hpricot_scan.rl"
3639
+ {
3672
3640
  ATTR(akey, aval);
3673
3641
  }
3674
3642
  #line 68 "hpricot_scan.rl"
@@ -3678,21 +3646,21 @@ st210:
3678
3646
  if ( ++p == pe )
3679
3647
  goto _test_eof210;
3680
3648
  case 210:
3681
- #line 3682 "hpricot_scan.c"
3649
+ #line 3650 "hpricot_scan.c"
3682
3650
  switch( (*p) ) {
3683
3651
  case 39: goto tr169;
3684
3652
  case 92: goto st102;
3685
3653
  }
3686
3654
  goto st101;
3687
3655
  tr242:
3688
- #line 114 "hpricot_scan.rl"
3656
+ #line 120 "hpricot_scan.rl"
3689
3657
  { SET(akey, p); }
3690
3658
  goto st106;
3691
3659
  st106:
3692
3660
  if ( ++p == pe )
3693
3661
  goto _test_eof106;
3694
3662
  case 106:
3695
- #line 3696 "hpricot_scan.c"
3663
+ #line 3664 "hpricot_scan.c"
3696
3664
  switch( (*p) ) {
3697
3665
  case 13: goto tr248;
3698
3666
  case 32: goto tr248;
@@ -3710,14 +3678,14 @@ case 106:
3710
3678
  goto tr248;
3711
3679
  goto tr247;
3712
3680
  tr247:
3713
- #line 105 "hpricot_scan.rl"
3681
+ #line 111 "hpricot_scan.rl"
3714
3682
  { mark_aval = p; }
3715
3683
  goto st107;
3716
3684
  st107:
3717
3685
  if ( ++p == pe )
3718
3686
  goto _test_eof107;
3719
3687
  case 107:
3720
- #line 3721 "hpricot_scan.c"
3688
+ #line 3689 "hpricot_scan.c"
3721
3689
  switch( (*p) ) {
3722
3690
  case 13: goto tr255;
3723
3691
  case 32: goto tr255;
@@ -3734,42 +3702,42 @@ case 107:
3734
3702
  goto tr255;
3735
3703
  goto st107;
3736
3704
  tr256:
3737
- #line 110 "hpricot_scan.rl"
3738
- {
3705
+ #line 116 "hpricot_scan.rl"
3706
+ {
3739
3707
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3740
3708
  else { SET(aval, p); }
3741
3709
  }
3742
3710
  goto st108;
3743
3711
  tr327:
3744
- #line 105 "hpricot_scan.rl"
3712
+ #line 111 "hpricot_scan.rl"
3745
3713
  { mark_aval = p; }
3746
- #line 110 "hpricot_scan.rl"
3747
- {
3714
+ #line 116 "hpricot_scan.rl"
3715
+ {
3748
3716
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3749
3717
  else { SET(aval, p); }
3750
3718
  }
3751
3719
  goto st108;
3752
3720
  tr281:
3753
- #line 105 "hpricot_scan.rl"
3721
+ #line 111 "hpricot_scan.rl"
3754
3722
  { mark_aval = p; }
3755
- #line 109 "hpricot_scan.rl"
3723
+ #line 115 "hpricot_scan.rl"
3756
3724
  { SET(aval, p); }
3757
3725
  goto st108;
3758
3726
  tr222:
3759
- #line 109 "hpricot_scan.rl"
3727
+ #line 115 "hpricot_scan.rl"
3760
3728
  { SET(aval, p); }
3761
3729
  goto st108;
3762
3730
  tr213:
3763
- #line 109 "hpricot_scan.rl"
3731
+ #line 115 "hpricot_scan.rl"
3764
3732
  { SET(aval, p); }
3765
- #line 105 "hpricot_scan.rl"
3733
+ #line 111 "hpricot_scan.rl"
3766
3734
  { mark_aval = p; }
3767
3735
  goto st108;
3768
3736
  st108:
3769
3737
  if ( ++p == pe )
3770
3738
  goto _test_eof108;
3771
3739
  case 108:
3772
- #line 3773 "hpricot_scan.c"
3740
+ #line 3741 "hpricot_scan.c"
3773
3741
  switch( (*p) ) {
3774
3742
  case 13: goto tr255;
3775
3743
  case 32: goto tr255;
@@ -3797,42 +3765,42 @@ case 108:
3797
3765
  goto tr260;
3798
3766
  goto st107;
3799
3767
  tr260:
3800
- #line 128 "hpricot_scan.rl"
3801
- {
3768
+ #line 134 "hpricot_scan.rl"
3769
+ {
3802
3770
  ATTR(akey, aval);
3803
3771
  }
3804
- #line 121 "hpricot_scan.rl"
3805
- {
3772
+ #line 127 "hpricot_scan.rl"
3773
+ {
3806
3774
  akey = Qnil;
3807
3775
  aval = Qnil;
3808
3776
  mark_akey = NULL;
3809
3777
  mark_aval = NULL;
3810
3778
  }
3811
- #line 106 "hpricot_scan.rl"
3779
+ #line 112 "hpricot_scan.rl"
3812
3780
  { mark_akey = p; }
3813
3781
  goto st109;
3814
3782
  tr279:
3815
- #line 105 "hpricot_scan.rl"
3783
+ #line 111 "hpricot_scan.rl"
3816
3784
  { mark_aval = p; }
3817
- #line 128 "hpricot_scan.rl"
3818
- {
3785
+ #line 134 "hpricot_scan.rl"
3786
+ {
3819
3787
  ATTR(akey, aval);
3820
3788
  }
3821
- #line 121 "hpricot_scan.rl"
3822
- {
3789
+ #line 127 "hpricot_scan.rl"
3790
+ {
3823
3791
  akey = Qnil;
3824
3792
  aval = Qnil;
3825
3793
  mark_akey = NULL;
3826
3794
  mark_aval = NULL;
3827
3795
  }
3828
- #line 106 "hpricot_scan.rl"
3796
+ #line 112 "hpricot_scan.rl"
3829
3797
  { mark_akey = p; }
3830
3798
  goto st109;
3831
3799
  st109:
3832
3800
  if ( ++p == pe )
3833
3801
  goto _test_eof109;
3834
3802
  case 109:
3835
- #line 3836 "hpricot_scan.c"
3803
+ #line 3804 "hpricot_scan.c"
3836
3804
  switch( (*p) ) {
3837
3805
  case 13: goto tr263;
3838
3806
  case 32: goto tr263;
@@ -3861,17 +3829,17 @@ case 109:
3861
3829
  goto st109;
3862
3830
  goto st107;
3863
3831
  tr270:
3864
- #line 110 "hpricot_scan.rl"
3865
- {
3832
+ #line 116 "hpricot_scan.rl"
3833
+ {
3866
3834
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3867
3835
  else { SET(aval, p); }
3868
3836
  }
3869
3837
  goto st110;
3870
3838
  tr264:
3871
- #line 114 "hpricot_scan.rl"
3839
+ #line 120 "hpricot_scan.rl"
3872
3840
  { SET(akey, p); }
3873
- #line 110 "hpricot_scan.rl"
3874
- {
3841
+ #line 116 "hpricot_scan.rl"
3842
+ {
3875
3843
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3876
3844
  else { SET(aval, p); }
3877
3845
  }
@@ -3880,7 +3848,7 @@ st110:
3880
3848
  if ( ++p == pe )
3881
3849
  goto _test_eof110;
3882
3850
  case 110:
3883
- #line 3884 "hpricot_scan.c"
3851
+ #line 3852 "hpricot_scan.c"
3884
3852
  switch( (*p) ) {
3885
3853
  case 13: goto tr269;
3886
3854
  case 32: goto tr269;
@@ -3909,70 +3877,70 @@ case 110:
3909
3877
  goto tr260;
3910
3878
  goto st107;
3911
3879
  tr252:
3912
- #line 105 "hpricot_scan.rl"
3880
+ #line 111 "hpricot_scan.rl"
3913
3881
  { mark_aval = p; }
3914
- #line 128 "hpricot_scan.rl"
3915
- {
3882
+ #line 134 "hpricot_scan.rl"
3883
+ {
3916
3884
  ATTR(akey, aval);
3917
3885
  }
3918
3886
  goto st111;
3919
3887
  tr257:
3920
- #line 110 "hpricot_scan.rl"
3921
- {
3888
+ #line 116 "hpricot_scan.rl"
3889
+ {
3922
3890
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3923
3891
  else { SET(aval, p); }
3924
3892
  }
3925
- #line 128 "hpricot_scan.rl"
3926
- {
3893
+ #line 134 "hpricot_scan.rl"
3894
+ {
3927
3895
  ATTR(akey, aval);
3928
3896
  }
3929
3897
  goto st111;
3930
3898
  tr261:
3931
- #line 128 "hpricot_scan.rl"
3932
- {
3899
+ #line 134 "hpricot_scan.rl"
3900
+ {
3933
3901
  ATTR(akey, aval);
3934
3902
  }
3935
- #line 110 "hpricot_scan.rl"
3936
- {
3903
+ #line 116 "hpricot_scan.rl"
3904
+ {
3937
3905
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3938
3906
  else { SET(aval, p); }
3939
3907
  }
3940
3908
  goto st111;
3941
3909
  tr266:
3942
- #line 110 "hpricot_scan.rl"
3943
- {
3910
+ #line 116 "hpricot_scan.rl"
3911
+ {
3944
3912
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3945
3913
  else { SET(aval, p); }
3946
3914
  }
3947
- #line 114 "hpricot_scan.rl"
3915
+ #line 120 "hpricot_scan.rl"
3948
3916
  { SET(akey, p); }
3949
- #line 128 "hpricot_scan.rl"
3950
- {
3917
+ #line 134 "hpricot_scan.rl"
3918
+ {
3951
3919
  ATTR(akey, aval);
3952
3920
  }
3953
3921
  goto st111;
3954
3922
  tr276:
3955
- #line 105 "hpricot_scan.rl"
3923
+ #line 111 "hpricot_scan.rl"
3956
3924
  { mark_aval = p; }
3957
- #line 110 "hpricot_scan.rl"
3958
- {
3925
+ #line 116 "hpricot_scan.rl"
3926
+ {
3959
3927
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3960
3928
  else { SET(aval, p); }
3961
3929
  }
3962
- #line 128 "hpricot_scan.rl"
3963
- {
3930
+ #line 134 "hpricot_scan.rl"
3931
+ {
3964
3932
  ATTR(akey, aval);
3965
3933
  }
3966
3934
  goto st111;
3967
3935
  tr280:
3968
- #line 105 "hpricot_scan.rl"
3936
+ #line 111 "hpricot_scan.rl"
3969
3937
  { mark_aval = p; }
3970
- #line 128 "hpricot_scan.rl"
3971
- {
3938
+ #line 134 "hpricot_scan.rl"
3939
+ {
3972
3940
  ATTR(akey, aval);
3973
3941
  }
3974
- #line 110 "hpricot_scan.rl"
3975
- {
3942
+ #line 116 "hpricot_scan.rl"
3943
+ {
3976
3944
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
3977
3945
  else { SET(aval, p); }
3978
3946
  }
@@ -3981,7 +3949,7 @@ st111:
3981
3949
  if ( ++p == pe )
3982
3950
  goto _test_eof111;
3983
3951
  case 111:
3984
- #line 3985 "hpricot_scan.c"
3952
+ #line 3953 "hpricot_scan.c"
3985
3953
  switch( (*p) ) {
3986
3954
  case 13: goto tr255;
3987
3955
  case 32: goto tr255;
@@ -3998,14 +3966,14 @@ case 111:
3998
3966
  goto tr255;
3999
3967
  goto st107;
4000
3968
  tr253:
4001
- #line 105 "hpricot_scan.rl"
3969
+ #line 111 "hpricot_scan.rl"
4002
3970
  { mark_aval = p; }
4003
3971
  goto st112;
4004
3972
  st112:
4005
3973
  if ( ++p == pe )
4006
3974
  goto _test_eof112;
4007
3975
  case 112:
4008
- #line 4009 "hpricot_scan.c"
3976
+ #line 3977 "hpricot_scan.c"
4009
3977
  switch( (*p) ) {
4010
3978
  case 13: goto tr255;
4011
3979
  case 32: goto tr255;
@@ -4022,18 +3990,18 @@ case 112:
4022
3990
  goto tr255;
4023
3991
  goto st107;
4024
3992
  tr249:
4025
- #line 105 "hpricot_scan.rl"
3993
+ #line 111 "hpricot_scan.rl"
4026
3994
  { mark_aval = p; }
4027
3995
  goto st113;
4028
3996
  tr267:
4029
- #line 114 "hpricot_scan.rl"
3997
+ #line 120 "hpricot_scan.rl"
4030
3998
  { SET(akey, p); }
4031
3999
  goto st113;
4032
4000
  st113:
4033
4001
  if ( ++p == pe )
4034
4002
  goto _test_eof113;
4035
4003
  case 113:
4036
- #line 4037 "hpricot_scan.c"
4004
+ #line 4005 "hpricot_scan.c"
4037
4005
  switch( (*p) ) {
4038
4006
  case 13: goto tr272;
4039
4007
  case 32: goto tr272;
@@ -4051,14 +4019,14 @@ case 113:
4051
4019
  goto tr272;
4052
4020
  goto tr247;
4053
4021
  tr277:
4054
- #line 105 "hpricot_scan.rl"
4022
+ #line 111 "hpricot_scan.rl"
4055
4023
  { mark_aval = p; }
4056
4024
  goto st114;
4057
4025
  tr272:
4058
- #line 105 "hpricot_scan.rl"
4026
+ #line 111 "hpricot_scan.rl"
4059
4027
  { mark_aval = p; }
4060
- #line 110 "hpricot_scan.rl"
4061
- {
4028
+ #line 116 "hpricot_scan.rl"
4029
+ {
4062
4030
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4063
4031
  else { SET(aval, p); }
4064
4032
  }
@@ -4067,7 +4035,7 @@ st114:
4067
4035
  if ( ++p == pe )
4068
4036
  goto _test_eof114;
4069
4037
  case 114:
4070
- #line 4071 "hpricot_scan.c"
4038
+ #line 4039 "hpricot_scan.c"
4071
4039
  switch( (*p) ) {
4072
4040
  case 13: goto tr277;
4073
4041
  case 32: goto tr277;
@@ -4096,14 +4064,14 @@ case 114:
4096
4064
  goto tr279;
4097
4065
  goto tr247;
4098
4066
  tr278:
4099
- #line 105 "hpricot_scan.rl"
4067
+ #line 111 "hpricot_scan.rl"
4100
4068
  { mark_aval = p; }
4101
4069
  goto st115;
4102
4070
  tr273:
4103
- #line 105 "hpricot_scan.rl"
4071
+ #line 111 "hpricot_scan.rl"
4104
4072
  { mark_aval = p; }
4105
- #line 110 "hpricot_scan.rl"
4106
- {
4073
+ #line 116 "hpricot_scan.rl"
4074
+ {
4107
4075
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4108
4076
  else { SET(aval, p); }
4109
4077
  }
@@ -4112,7 +4080,7 @@ st115:
4112
4080
  if ( ++p == pe )
4113
4081
  goto _test_eof115;
4114
4082
  case 115:
4115
- #line 4116 "hpricot_scan.c"
4083
+ #line 4084 "hpricot_scan.c"
4116
4084
  switch( (*p) ) {
4117
4085
  case 13: goto tr272;
4118
4086
  case 32: goto tr272;
@@ -4161,30 +4129,30 @@ case 116:
4161
4129
  goto tr211;
4162
4130
  goto tr210;
4163
4131
  tr221:
4164
- #line 110 "hpricot_scan.rl"
4165
- {
4132
+ #line 116 "hpricot_scan.rl"
4133
+ {
4166
4134
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4167
4135
  else { SET(aval, p); }
4168
4136
  }
4169
4137
  goto st117;
4170
4138
  tr212:
4171
- #line 105 "hpricot_scan.rl"
4139
+ #line 111 "hpricot_scan.rl"
4172
4140
  { mark_aval = p; }
4173
- #line 110 "hpricot_scan.rl"
4174
- {
4141
+ #line 116 "hpricot_scan.rl"
4142
+ {
4175
4143
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4176
4144
  else { SET(aval, p); }
4177
4145
  }
4178
4146
  goto st117;
4179
4147
  tr314:
4180
- #line 109 "hpricot_scan.rl"
4148
+ #line 115 "hpricot_scan.rl"
4181
4149
  { SET(aval, p); }
4182
4150
  goto st117;
4183
4151
  st117:
4184
4152
  if ( ++p == pe )
4185
4153
  goto _test_eof117;
4186
4154
  case 117:
4187
- #line 4188 "hpricot_scan.c"
4155
+ #line 4156 "hpricot_scan.c"
4188
4156
  switch( (*p) ) {
4189
4157
  case 13: goto tr220;
4190
4158
  case 32: goto tr220;
@@ -4213,42 +4181,42 @@ case 117:
4213
4181
  goto tr282;
4214
4182
  goto st97;
4215
4183
  tr282:
4216
- #line 128 "hpricot_scan.rl"
4217
- {
4184
+ #line 134 "hpricot_scan.rl"
4185
+ {
4218
4186
  ATTR(akey, aval);
4219
4187
  }
4220
- #line 121 "hpricot_scan.rl"
4221
- {
4188
+ #line 127 "hpricot_scan.rl"
4189
+ {
4222
4190
  akey = Qnil;
4223
4191
  aval = Qnil;
4224
4192
  mark_akey = NULL;
4225
4193
  mark_aval = NULL;
4226
4194
  }
4227
- #line 106 "hpricot_scan.rl"
4195
+ #line 112 "hpricot_scan.rl"
4228
4196
  { mark_akey = p; }
4229
4197
  goto st118;
4230
4198
  tr307:
4231
- #line 105 "hpricot_scan.rl"
4199
+ #line 111 "hpricot_scan.rl"
4232
4200
  { mark_aval = p; }
4233
- #line 128 "hpricot_scan.rl"
4234
- {
4201
+ #line 134 "hpricot_scan.rl"
4202
+ {
4235
4203
  ATTR(akey, aval);
4236
4204
  }
4237
- #line 121 "hpricot_scan.rl"
4238
- {
4205
+ #line 127 "hpricot_scan.rl"
4206
+ {
4239
4207
  akey = Qnil;
4240
4208
  aval = Qnil;
4241
4209
  mark_akey = NULL;
4242
4210
  mark_aval = NULL;
4243
4211
  }
4244
- #line 106 "hpricot_scan.rl"
4212
+ #line 112 "hpricot_scan.rl"
4245
4213
  { mark_akey = p; }
4246
4214
  goto st118;
4247
4215
  st118:
4248
4216
  if ( ++p == pe )
4249
4217
  goto _test_eof118;
4250
4218
  case 118:
4251
- #line 4252 "hpricot_scan.c"
4219
+ #line 4220 "hpricot_scan.c"
4252
4220
  switch( (*p) ) {
4253
4221
  case 13: goto tr285;
4254
4222
  case 32: goto tr285;
@@ -4278,21 +4246,21 @@ case 118:
4278
4246
  goto st118;
4279
4247
  goto st97;
4280
4248
  tr293:
4281
- #line 114 "hpricot_scan.rl"
4249
+ #line 120 "hpricot_scan.rl"
4282
4250
  { SET(akey, p); }
4283
4251
  goto st119;
4284
4252
  tr323:
4285
- #line 110 "hpricot_scan.rl"
4286
- {
4253
+ #line 116 "hpricot_scan.rl"
4254
+ {
4287
4255
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4288
4256
  else { SET(aval, p); }
4289
4257
  }
4290
4258
  goto st119;
4291
4259
  tr285:
4292
- #line 114 "hpricot_scan.rl"
4260
+ #line 120 "hpricot_scan.rl"
4293
4261
  { SET(akey, p); }
4294
- #line 110 "hpricot_scan.rl"
4295
- {
4262
+ #line 116 "hpricot_scan.rl"
4263
+ {
4296
4264
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4297
4265
  else { SET(aval, p); }
4298
4266
  }
@@ -4301,7 +4269,7 @@ st119:
4301
4269
  if ( ++p == pe )
4302
4270
  goto _test_eof119;
4303
4271
  case 119:
4304
- #line 4305 "hpricot_scan.c"
4272
+ #line 4273 "hpricot_scan.c"
4305
4273
  switch( (*p) ) {
4306
4274
  case 32: goto st119;
4307
4275
  case 34: goto tr228;
@@ -4326,42 +4294,42 @@ case 119:
4326
4294
  goto tr229;
4327
4295
  goto st99;
4328
4296
  tr229:
4329
- #line 128 "hpricot_scan.rl"
4330
- {
4297
+ #line 134 "hpricot_scan.rl"
4298
+ {
4331
4299
  ATTR(akey, aval);
4332
4300
  }
4333
- #line 121 "hpricot_scan.rl"
4334
- {
4301
+ #line 127 "hpricot_scan.rl"
4302
+ {
4335
4303
  akey = Qnil;
4336
4304
  aval = Qnil;
4337
4305
  mark_akey = NULL;
4338
4306
  mark_aval = NULL;
4339
4307
  }
4340
- #line 106 "hpricot_scan.rl"
4308
+ #line 112 "hpricot_scan.rl"
4341
4309
  { mark_akey = p; }
4342
4310
  goto st120;
4343
4311
  tr318:
4344
- #line 105 "hpricot_scan.rl"
4312
+ #line 111 "hpricot_scan.rl"
4345
4313
  { mark_aval = p; }
4346
- #line 128 "hpricot_scan.rl"
4347
- {
4314
+ #line 134 "hpricot_scan.rl"
4315
+ {
4348
4316
  ATTR(akey, aval);
4349
4317
  }
4350
- #line 121 "hpricot_scan.rl"
4351
- {
4318
+ #line 127 "hpricot_scan.rl"
4319
+ {
4352
4320
  akey = Qnil;
4353
4321
  aval = Qnil;
4354
4322
  mark_akey = NULL;
4355
4323
  mark_aval = NULL;
4356
4324
  }
4357
- #line 106 "hpricot_scan.rl"
4325
+ #line 112 "hpricot_scan.rl"
4358
4326
  { mark_akey = p; }
4359
4327
  goto st120;
4360
4328
  st120:
4361
4329
  if ( ++p == pe )
4362
4330
  goto _test_eof120;
4363
4331
  case 120:
4364
- #line 4365 "hpricot_scan.c"
4332
+ #line 4333 "hpricot_scan.c"
4365
4333
  switch( (*p) ) {
4366
4334
  case 32: goto tr293;
4367
4335
  case 34: goto tr228;
@@ -4386,24 +4354,24 @@ case 120:
4386
4354
  goto st120;
4387
4355
  goto st99;
4388
4356
  tr295:
4389
- #line 114 "hpricot_scan.rl"
4357
+ #line 120 "hpricot_scan.rl"
4390
4358
  { SET(akey, p); }
4391
- #line 128 "hpricot_scan.rl"
4392
- {
4359
+ #line 134 "hpricot_scan.rl"
4360
+ {
4393
4361
  ATTR(akey, aval);
4394
4362
  }
4395
4363
  goto st121;
4396
4364
  tr230:
4397
- #line 128 "hpricot_scan.rl"
4398
- {
4365
+ #line 134 "hpricot_scan.rl"
4366
+ {
4399
4367
  ATTR(akey, aval);
4400
4368
  }
4401
4369
  goto st121;
4402
4370
  tr319:
4403
- #line 105 "hpricot_scan.rl"
4371
+ #line 111 "hpricot_scan.rl"
4404
4372
  { mark_aval = p; }
4405
- #line 128 "hpricot_scan.rl"
4406
- {
4373
+ #line 134 "hpricot_scan.rl"
4374
+ {
4407
4375
  ATTR(akey, aval);
4408
4376
  }
4409
4377
  goto st121;
@@ -4411,7 +4379,7 @@ st121:
4411
4379
  if ( ++p == pe )
4412
4380
  goto _test_eof121;
4413
4381
  case 121:
4414
- #line 4415 "hpricot_scan.c"
4382
+ #line 4383 "hpricot_scan.c"
4415
4383
  switch( (*p) ) {
4416
4384
  case 34: goto tr228;
4417
4385
  case 39: goto tr174;
@@ -4422,15 +4390,15 @@ case 121:
4422
4390
  tr217:
4423
4391
  #line 1 "hpricot_scan.rl"
4424
4392
  {te = p+1;}
4425
- #line 105 "hpricot_scan.rl"
4393
+ #line 111 "hpricot_scan.rl"
4426
4394
  { mark_aval = p; }
4427
- #line 110 "hpricot_scan.rl"
4428
- {
4395
+ #line 116 "hpricot_scan.rl"
4396
+ {
4429
4397
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4430
4398
  else { SET(aval, p); }
4431
4399
  }
4432
- #line 128 "hpricot_scan.rl"
4433
- {
4400
+ #line 134 "hpricot_scan.rl"
4401
+ {
4434
4402
  ATTR(akey, aval);
4435
4403
  }
4436
4404
  #line 68 "hpricot_scan.rl"
@@ -4439,13 +4407,13 @@ tr217:
4439
4407
  tr225:
4440
4408
  #line 1 "hpricot_scan.rl"
4441
4409
  {te = p+1;}
4442
- #line 110 "hpricot_scan.rl"
4443
- {
4410
+ #line 116 "hpricot_scan.rl"
4411
+ {
4444
4412
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4445
4413
  else { SET(aval, p); }
4446
4414
  }
4447
- #line 128 "hpricot_scan.rl"
4448
- {
4415
+ #line 134 "hpricot_scan.rl"
4416
+ {
4449
4417
  ATTR(akey, aval);
4450
4418
  }
4451
4419
  #line 68 "hpricot_scan.rl"
@@ -4454,8 +4422,8 @@ tr225:
4454
4422
  tr231:
4455
4423
  #line 1 "hpricot_scan.rl"
4456
4424
  {te = p+1;}
4457
- #line 128 "hpricot_scan.rl"
4458
- {
4425
+ #line 134 "hpricot_scan.rl"
4426
+ {
4459
4427
  ATTR(akey, aval);
4460
4428
  }
4461
4429
  #line 68 "hpricot_scan.rl"
@@ -4464,10 +4432,10 @@ tr231:
4464
4432
  tr297:
4465
4433
  #line 1 "hpricot_scan.rl"
4466
4434
  {te = p+1;}
4467
- #line 114 "hpricot_scan.rl"
4435
+ #line 120 "hpricot_scan.rl"
4468
4436
  { SET(akey, p); }
4469
- #line 128 "hpricot_scan.rl"
4470
- {
4437
+ #line 134 "hpricot_scan.rl"
4438
+ {
4471
4439
  ATTR(akey, aval);
4472
4440
  }
4473
4441
  #line 68 "hpricot_scan.rl"
@@ -4482,12 +4450,12 @@ tr298:
4482
4450
  tr284:
4483
4451
  #line 1 "hpricot_scan.rl"
4484
4452
  {te = p+1;}
4485
- #line 128 "hpricot_scan.rl"
4486
- {
4453
+ #line 134 "hpricot_scan.rl"
4454
+ {
4487
4455
  ATTR(akey, aval);
4488
4456
  }
4489
- #line 110 "hpricot_scan.rl"
4490
- {
4457
+ #line 116 "hpricot_scan.rl"
4458
+ {
4491
4459
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4492
4460
  else { SET(aval, p); }
4493
4461
  }
@@ -4497,14 +4465,14 @@ tr284:
4497
4465
  tr313:
4498
4466
  #line 1 "hpricot_scan.rl"
4499
4467
  {te = p+1;}
4500
- #line 105 "hpricot_scan.rl"
4468
+ #line 111 "hpricot_scan.rl"
4501
4469
  { mark_aval = p; }
4502
- #line 128 "hpricot_scan.rl"
4503
- {
4470
+ #line 134 "hpricot_scan.rl"
4471
+ {
4504
4472
  ATTR(akey, aval);
4505
4473
  }
4506
- #line 110 "hpricot_scan.rl"
4507
- {
4474
+ #line 116 "hpricot_scan.rl"
4475
+ {
4508
4476
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4509
4477
  else { SET(aval, p); }
4510
4478
  }
@@ -4514,15 +4482,15 @@ tr313:
4514
4482
  tr290:
4515
4483
  #line 1 "hpricot_scan.rl"
4516
4484
  {te = p+1;}
4517
- #line 110 "hpricot_scan.rl"
4518
- {
4485
+ #line 116 "hpricot_scan.rl"
4486
+ {
4519
4487
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4520
4488
  else { SET(aval, p); }
4521
4489
  }
4522
- #line 114 "hpricot_scan.rl"
4490
+ #line 120 "hpricot_scan.rl"
4523
4491
  { SET(akey, p); }
4524
- #line 128 "hpricot_scan.rl"
4525
- {
4492
+ #line 134 "hpricot_scan.rl"
4493
+ {
4526
4494
  ATTR(akey, aval);
4527
4495
  }
4528
4496
  #line 68 "hpricot_scan.rl"
@@ -4531,10 +4499,10 @@ tr290:
4531
4499
  tr320:
4532
4500
  #line 1 "hpricot_scan.rl"
4533
4501
  {te = p+1;}
4534
- #line 105 "hpricot_scan.rl"
4502
+ #line 111 "hpricot_scan.rl"
4535
4503
  { mark_aval = p; }
4536
- #line 128 "hpricot_scan.rl"
4537
- {
4504
+ #line 134 "hpricot_scan.rl"
4505
+ {
4538
4506
  ATTR(akey, aval);
4539
4507
  }
4540
4508
  #line 68 "hpricot_scan.rl"
@@ -4544,7 +4512,7 @@ st211:
4544
4512
  if ( ++p == pe )
4545
4513
  goto _test_eof211;
4546
4514
  case 211:
4547
- #line 4548 "hpricot_scan.c"
4515
+ #line 4516 "hpricot_scan.c"
4548
4516
  switch( (*p) ) {
4549
4517
  case 34: goto tr228;
4550
4518
  case 39: goto tr174;
@@ -4552,14 +4520,14 @@ case 211:
4552
4520
  }
4553
4521
  goto st99;
4554
4522
  tr321:
4555
- #line 105 "hpricot_scan.rl"
4523
+ #line 111 "hpricot_scan.rl"
4556
4524
  { mark_aval = p; }
4557
4525
  goto st122;
4558
4526
  st122:
4559
4527
  if ( ++p == pe )
4560
4528
  goto _test_eof122;
4561
4529
  case 122:
4562
- #line 4563 "hpricot_scan.c"
4530
+ #line 4531 "hpricot_scan.c"
4563
4531
  switch( (*p) ) {
4564
4532
  case 34: goto tr299;
4565
4533
  case 39: goto tr299;
@@ -4567,14 +4535,14 @@ case 122:
4567
4535
  }
4568
4536
  goto st99;
4569
4537
  tr296:
4570
- #line 114 "hpricot_scan.rl"
4538
+ #line 120 "hpricot_scan.rl"
4571
4539
  { SET(akey, p); }
4572
4540
  goto st123;
4573
4541
  st123:
4574
4542
  if ( ++p == pe )
4575
4543
  goto _test_eof123;
4576
4544
  case 123:
4577
- #line 4578 "hpricot_scan.c"
4545
+ #line 4546 "hpricot_scan.c"
4578
4546
  switch( (*p) ) {
4579
4547
  case 13: goto tr300;
4580
4548
  case 32: goto tr300;
@@ -4592,14 +4560,14 @@ case 123:
4592
4560
  goto tr300;
4593
4561
  goto tr210;
4594
4562
  tr300:
4595
- #line 105 "hpricot_scan.rl"
4563
+ #line 111 "hpricot_scan.rl"
4596
4564
  { mark_aval = p; }
4597
4565
  goto st124;
4598
4566
  st124:
4599
4567
  if ( ++p == pe )
4600
4568
  goto _test_eof124;
4601
4569
  case 124:
4602
- #line 4603 "hpricot_scan.c"
4570
+ #line 4571 "hpricot_scan.c"
4603
4571
  switch( (*p) ) {
4604
4572
  case 13: goto tr305;
4605
4573
  case 32: goto tr305;
@@ -4617,14 +4585,14 @@ case 124:
4617
4585
  goto tr305;
4618
4586
  goto tr210;
4619
4587
  tr305:
4620
- #line 105 "hpricot_scan.rl"
4588
+ #line 111 "hpricot_scan.rl"
4621
4589
  { mark_aval = p; }
4622
4590
  goto st125;
4623
4591
  tr308:
4624
- #line 105 "hpricot_scan.rl"
4592
+ #line 111 "hpricot_scan.rl"
4625
4593
  { mark_aval = p; }
4626
- #line 110 "hpricot_scan.rl"
4627
- {
4594
+ #line 116 "hpricot_scan.rl"
4595
+ {
4628
4596
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4629
4597
  else { SET(aval, p); }
4630
4598
  }
@@ -4633,7 +4601,7 @@ st125:
4633
4601
  if ( ++p == pe )
4634
4602
  goto _test_eof125;
4635
4603
  case 125:
4636
- #line 4637 "hpricot_scan.c"
4604
+ #line 4605 "hpricot_scan.c"
4637
4605
  switch( (*p) ) {
4638
4606
  case 13: goto tr305;
4639
4607
  case 32: goto tr305;
@@ -4662,14 +4630,14 @@ case 125:
4662
4630
  goto tr307;
4663
4631
  goto tr210;
4664
4632
  tr306:
4665
- #line 105 "hpricot_scan.rl"
4633
+ #line 111 "hpricot_scan.rl"
4666
4634
  { mark_aval = p; }
4667
4635
  goto st126;
4668
4636
  tr309:
4669
- #line 105 "hpricot_scan.rl"
4637
+ #line 111 "hpricot_scan.rl"
4670
4638
  { mark_aval = p; }
4671
- #line 110 "hpricot_scan.rl"
4672
- {
4639
+ #line 116 "hpricot_scan.rl"
4640
+ {
4673
4641
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4674
4642
  else { SET(aval, p); }
4675
4643
  }
@@ -4678,7 +4646,7 @@ st126:
4678
4646
  if ( ++p == pe )
4679
4647
  goto _test_eof126;
4680
4648
  case 126:
4681
- #line 4682 "hpricot_scan.c"
4649
+ #line 4650 "hpricot_scan.c"
4682
4650
  switch( (*p) ) {
4683
4651
  case 13: goto tr308;
4684
4652
  case 32: goto tr308;
@@ -4707,14 +4675,14 @@ case 126:
4707
4675
  goto tr307;
4708
4676
  goto tr210;
4709
4677
  tr310:
4710
- #line 109 "hpricot_scan.rl"
4678
+ #line 115 "hpricot_scan.rl"
4711
4679
  { SET(aval, p); }
4712
4680
  goto st127;
4713
4681
  st127:
4714
4682
  if ( ++p == pe )
4715
4683
  goto _test_eof127;
4716
4684
  case 127:
4717
- #line 4718 "hpricot_scan.c"
4685
+ #line 4686 "hpricot_scan.c"
4718
4686
  switch( (*p) ) {
4719
4687
  case 13: goto tr211;
4720
4688
  case 32: goto tr211;
@@ -4743,70 +4711,70 @@ case 127:
4743
4711
  goto tr307;
4744
4712
  goto tr210;
4745
4713
  tr304:
4746
- #line 105 "hpricot_scan.rl"
4714
+ #line 111 "hpricot_scan.rl"
4747
4715
  { mark_aval = p; }
4748
- #line 128 "hpricot_scan.rl"
4749
- {
4716
+ #line 134 "hpricot_scan.rl"
4717
+ {
4750
4718
  ATTR(akey, aval);
4751
4719
  }
4752
4720
  goto st128;
4753
4721
  tr223:
4754
- #line 110 "hpricot_scan.rl"
4755
- {
4722
+ #line 116 "hpricot_scan.rl"
4723
+ {
4756
4724
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4757
4725
  else { SET(aval, p); }
4758
4726
  }
4759
- #line 128 "hpricot_scan.rl"
4760
- {
4727
+ #line 134 "hpricot_scan.rl"
4728
+ {
4761
4729
  ATTR(akey, aval);
4762
4730
  }
4763
4731
  goto st128;
4764
4732
  tr283:
4765
- #line 128 "hpricot_scan.rl"
4766
- {
4733
+ #line 134 "hpricot_scan.rl"
4734
+ {
4767
4735
  ATTR(akey, aval);
4768
4736
  }
4769
- #line 110 "hpricot_scan.rl"
4770
- {
4737
+ #line 116 "hpricot_scan.rl"
4738
+ {
4771
4739
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4772
4740
  else { SET(aval, p); }
4773
4741
  }
4774
4742
  goto st128;
4775
4743
  tr288:
4776
- #line 110 "hpricot_scan.rl"
4777
- {
4744
+ #line 116 "hpricot_scan.rl"
4745
+ {
4778
4746
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4779
4747
  else { SET(aval, p); }
4780
4748
  }
4781
- #line 114 "hpricot_scan.rl"
4749
+ #line 120 "hpricot_scan.rl"
4782
4750
  { SET(akey, p); }
4783
- #line 128 "hpricot_scan.rl"
4784
- {
4751
+ #line 134 "hpricot_scan.rl"
4752
+ {
4785
4753
  ATTR(akey, aval);
4786
4754
  }
4787
4755
  goto st128;
4788
4756
  tr215:
4789
- #line 105 "hpricot_scan.rl"
4757
+ #line 111 "hpricot_scan.rl"
4790
4758
  { mark_aval = p; }
4791
- #line 110 "hpricot_scan.rl"
4792
- {
4759
+ #line 116 "hpricot_scan.rl"
4760
+ {
4793
4761
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4794
4762
  else { SET(aval, p); }
4795
4763
  }
4796
- #line 128 "hpricot_scan.rl"
4797
- {
4764
+ #line 134 "hpricot_scan.rl"
4765
+ {
4798
4766
  ATTR(akey, aval);
4799
4767
  }
4800
4768
  goto st128;
4801
4769
  tr312:
4802
- #line 105 "hpricot_scan.rl"
4770
+ #line 111 "hpricot_scan.rl"
4803
4771
  { mark_aval = p; }
4804
- #line 128 "hpricot_scan.rl"
4805
- {
4772
+ #line 134 "hpricot_scan.rl"
4773
+ {
4806
4774
  ATTR(akey, aval);
4807
4775
  }
4808
- #line 110 "hpricot_scan.rl"
4809
- {
4776
+ #line 116 "hpricot_scan.rl"
4777
+ {
4810
4778
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4811
4779
  else { SET(aval, p); }
4812
4780
  }
@@ -4815,7 +4783,7 @@ st128:
4815
4783
  if ( ++p == pe )
4816
4784
  goto _test_eof128;
4817
4785
  case 128:
4818
- #line 4819 "hpricot_scan.c"
4786
+ #line 4787 "hpricot_scan.c"
4819
4787
  switch( (*p) ) {
4820
4788
  case 13: goto tr220;
4821
4789
  case 32: goto tr220;
@@ -4833,14 +4801,14 @@ case 128:
4833
4801
  goto tr220;
4834
4802
  goto st97;
4835
4803
  tr218:
4836
- #line 105 "hpricot_scan.rl"
4804
+ #line 111 "hpricot_scan.rl"
4837
4805
  { mark_aval = p; }
4838
4806
  goto st129;
4839
4807
  st129:
4840
4808
  if ( ++p == pe )
4841
4809
  goto _test_eof129;
4842
4810
  case 129:
4843
- #line 4844 "hpricot_scan.c"
4811
+ #line 4812 "hpricot_scan.c"
4844
4812
  switch( (*p) ) {
4845
4813
  case 13: goto tr220;
4846
4814
  case 32: goto tr220;
@@ -4858,14 +4826,14 @@ case 129:
4858
4826
  goto tr220;
4859
4827
  goto st97;
4860
4828
  tr311:
4861
- #line 109 "hpricot_scan.rl"
4829
+ #line 115 "hpricot_scan.rl"
4862
4830
  { SET(aval, p); }
4863
4831
  goto st130;
4864
4832
  st130:
4865
4833
  if ( ++p == pe )
4866
4834
  goto _test_eof130;
4867
4835
  case 130:
4868
- #line 4869 "hpricot_scan.c"
4836
+ #line 4837 "hpricot_scan.c"
4869
4837
  switch( (*p) ) {
4870
4838
  case 13: goto tr211;
4871
4839
  case 32: goto tr211;
@@ -4894,14 +4862,14 @@ case 130:
4894
4862
  goto tr307;
4895
4863
  goto tr210;
4896
4864
  tr302:
4897
- #line 109 "hpricot_scan.rl"
4865
+ #line 115 "hpricot_scan.rl"
4898
4866
  { SET(aval, p); }
4899
4867
  goto st131;
4900
4868
  st131:
4901
4869
  if ( ++p == pe )
4902
4870
  goto _test_eof131;
4903
4871
  case 131:
4904
- #line 4905 "hpricot_scan.c"
4872
+ #line 4873 "hpricot_scan.c"
4905
4873
  switch( (*p) ) {
4906
4874
  case 32: goto tr315;
4907
4875
  case 34: goto tr316;
@@ -4925,14 +4893,14 @@ case 131:
4925
4893
  goto tr318;
4926
4894
  goto tr216;
4927
4895
  tr303:
4928
- #line 109 "hpricot_scan.rl"
4896
+ #line 115 "hpricot_scan.rl"
4929
4897
  { SET(aval, p); }
4930
4898
  goto st132;
4931
4899
  st132:
4932
4900
  if ( ++p == pe )
4933
4901
  goto _test_eof132;
4934
4902
  case 132:
4935
- #line 4936 "hpricot_scan.c"
4903
+ #line 4904 "hpricot_scan.c"
4936
4904
  switch( (*p) ) {
4937
4905
  case 32: goto tr315;
4938
4906
  case 34: goto tr322;
@@ -4956,18 +4924,18 @@ case 132:
4956
4924
  goto tr318;
4957
4925
  goto tr216;
4958
4926
  tr301:
4959
- #line 105 "hpricot_scan.rl"
4927
+ #line 111 "hpricot_scan.rl"
4960
4928
  { mark_aval = p; }
4961
4929
  goto st133;
4962
4930
  tr289:
4963
- #line 114 "hpricot_scan.rl"
4931
+ #line 120 "hpricot_scan.rl"
4964
4932
  { SET(akey, p); }
4965
4933
  goto st133;
4966
4934
  st133:
4967
4935
  if ( ++p == pe )
4968
4936
  goto _test_eof133;
4969
4937
  case 133:
4970
- #line 4971 "hpricot_scan.c"
4938
+ #line 4939 "hpricot_scan.c"
4971
4939
  switch( (*p) ) {
4972
4940
  case 13: goto tr308;
4973
4941
  case 32: goto tr308;
@@ -4985,17 +4953,17 @@ case 133:
4985
4953
  goto tr308;
4986
4954
  goto tr210;
4987
4955
  tr324:
4988
- #line 110 "hpricot_scan.rl"
4989
- {
4956
+ #line 116 "hpricot_scan.rl"
4957
+ {
4990
4958
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
4991
4959
  else { SET(aval, p); }
4992
4960
  }
4993
4961
  goto st134;
4994
4962
  tr286:
4995
- #line 114 "hpricot_scan.rl"
4963
+ #line 120 "hpricot_scan.rl"
4996
4964
  { SET(akey, p); }
4997
- #line 110 "hpricot_scan.rl"
4998
- {
4965
+ #line 116 "hpricot_scan.rl"
4966
+ {
4999
4967
  if (*(p-1) == '"' || *(p-1) == '\'') { SET(aval, p-1); }
5000
4968
  else { SET(aval, p); }
5001
4969
  }
@@ -5004,7 +4972,7 @@ st134:
5004
4972
  if ( ++p == pe )
5005
4973
  goto _test_eof134;
5006
4974
  case 134:
5007
- #line 5008 "hpricot_scan.c"
4975
+ #line 4976 "hpricot_scan.c"
5008
4976
  switch( (*p) ) {
5009
4977
  case 13: goto tr323;
5010
4978
  case 32: goto tr323;
@@ -5034,14 +5002,14 @@ case 134:
5034
5002
  goto tr282;
5035
5003
  goto st97;
5036
5004
  tr275:
5037
- #line 109 "hpricot_scan.rl"
5005
+ #line 115 "hpricot_scan.rl"
5038
5006
  { SET(aval, p); }
5039
5007
  goto st135;
5040
5008
  st135:
5041
5009
  if ( ++p == pe )
5042
5010
  goto _test_eof135;
5043
5011
  case 135:
5044
- #line 5045 "hpricot_scan.c"
5012
+ #line 5013 "hpricot_scan.c"
5045
5013
  switch( (*p) ) {
5046
5014
  case 13: goto tr326;
5047
5015
  case 32: goto tr326;
@@ -5079,14 +5047,14 @@ case 136:
5079
5047
  }
5080
5048
  goto tr216;
5081
5049
  tr251:
5082
- #line 109 "hpricot_scan.rl"
5050
+ #line 115 "hpricot_scan.rl"
5083
5051
  { SET(aval, p); }
5084
5052
  goto st137;
5085
5053
  st137:
5086
5054
  if ( ++p == pe )
5087
5055
  goto _test_eof137;
5088
5056
  case 137:
5089
- #line 5090 "hpricot_scan.c"
5057
+ #line 5058 "hpricot_scan.c"
5090
5058
  switch( (*p) ) {
5091
5059
  case 32: goto tr330;
5092
5060
  case 39: goto tr331;
@@ -5109,14 +5077,14 @@ case 137:
5109
5077
  goto tr332;
5110
5078
  goto tr328;
5111
5079
  tr248:
5112
- #line 105 "hpricot_scan.rl"
5080
+ #line 111 "hpricot_scan.rl"
5113
5081
  { mark_aval = p; }
5114
5082
  goto st138;
5115
5083
  st138:
5116
5084
  if ( ++p == pe )
5117
5085
  goto _test_eof138;
5118
5086
  case 138:
5119
- #line 5120 "hpricot_scan.c"
5087
+ #line 5088 "hpricot_scan.c"
5120
5088
  switch( (*p) ) {
5121
5089
  case 13: goto tr277;
5122
5090
  case 32: goto tr277;
@@ -5134,14 +5102,14 @@ case 138:
5134
5102
  goto tr277;
5135
5103
  goto tr247;
5136
5104
  tr185:
5137
- #line 109 "hpricot_scan.rl"
5105
+ #line 115 "hpricot_scan.rl"
5138
5106
  { SET(aval, p); }
5139
5107
  goto st139;
5140
5108
  st139:
5141
5109
  if ( ++p == pe )
5142
5110
  goto _test_eof139;
5143
5111
  case 139:
5144
- #line 5145 "hpricot_scan.c"
5112
+ #line 5113 "hpricot_scan.c"
5145
5113
  switch( (*p) ) {
5146
5114
  case 32: goto tr336;
5147
5115
  case 34: goto tr331;
@@ -5211,14 +5179,14 @@ case 143:
5211
5179
  }
5212
5180
  goto tr328;
5213
5181
  tr120:
5214
- #line 105 "hpricot_scan.rl"
5182
+ #line 111 "hpricot_scan.rl"
5215
5183
  { mark_aval = p; }
5216
5184
  goto st144;
5217
5185
  st144:
5218
5186
  if ( ++p == pe )
5219
5187
  goto _test_eof144;
5220
5188
  case 144:
5221
- #line 5222 "hpricot_scan.c"
5189
+ #line 5190 "hpricot_scan.c"
5222
5190
  switch( (*p) ) {
5223
5191
  case 13: goto tr148;
5224
5192
  case 32: goto tr148;
@@ -5257,7 +5225,7 @@ st146:
5257
5225
  if ( ++p == pe )
5258
5226
  goto _test_eof146;
5259
5227
  case 146:
5260
- #line 5261 "hpricot_scan.c"
5228
+ #line 5229 "hpricot_scan.c"
5261
5229
  switch( (*p) ) {
5262
5230
  case 32: goto st212;
5263
5231
  case 63: goto st146;
@@ -5295,7 +5263,7 @@ st147:
5295
5263
  if ( ++p == pe )
5296
5264
  goto _test_eof147;
5297
5265
  case 147:
5298
- #line 5299 "hpricot_scan.c"
5266
+ #line 5267 "hpricot_scan.c"
5299
5267
  switch( (*p) ) {
5300
5268
  case 32: goto st212;
5301
5269
  case 63: goto st146;
@@ -5374,7 +5342,7 @@ st213:
5374
5342
  if ( ++p == pe )
5375
5343
  goto _test_eof213;
5376
5344
  case 213:
5377
- #line 5378 "hpricot_scan.c"
5345
+ #line 5346 "hpricot_scan.c"
5378
5346
  switch( (*p) ) {
5379
5347
  case 32: goto tr348;
5380
5348
  case 118: goto st150;
@@ -5466,14 +5434,14 @@ case 158:
5466
5434
  goto tr359;
5467
5435
  goto tr349;
5468
5436
  tr359:
5469
- #line 105 "hpricot_scan.rl"
5437
+ #line 111 "hpricot_scan.rl"
5470
5438
  { mark_aval = p; }
5471
5439
  goto st159;
5472
5440
  st159:
5473
5441
  if ( ++p == pe )
5474
5442
  goto _test_eof159;
5475
5443
  case 159:
5476
- #line 5477 "hpricot_scan.c"
5444
+ #line 5445 "hpricot_scan.c"
5477
5445
  switch( (*p) ) {
5478
5446
  case 34: goto tr360;
5479
5447
  case 95: goto st159;
@@ -5491,14 +5459,14 @@ case 159:
5491
5459
  goto st159;
5492
5460
  goto tr349;
5493
5461
  tr360:
5494
- #line 115 "hpricot_scan.rl"
5462
+ #line 121 "hpricot_scan.rl"
5495
5463
  { SET(aval, p); ATTR(ID2SYM(rb_intern("version")), aval); }
5496
5464
  goto st160;
5497
5465
  st160:
5498
5466
  if ( ++p == pe )
5499
5467
  goto _test_eof160;
5500
5468
  case 160:
5501
- #line 5502 "hpricot_scan.c"
5469
+ #line 5470 "hpricot_scan.c"
5502
5470
  switch( (*p) ) {
5503
5471
  case 32: goto st161;
5504
5472
  case 62: goto tr363;
@@ -5611,14 +5579,14 @@ case 172:
5611
5579
  goto tr377;
5612
5580
  goto tr349;
5613
5581
  tr377:
5614
- #line 105 "hpricot_scan.rl"
5582
+ #line 111 "hpricot_scan.rl"
5615
5583
  { mark_aval = p; }
5616
5584
  goto st173;
5617
5585
  st173:
5618
5586
  if ( ++p == pe )
5619
5587
  goto _test_eof173;
5620
5588
  case 173:
5621
- #line 5622 "hpricot_scan.c"
5589
+ #line 5590 "hpricot_scan.c"
5622
5590
  switch( (*p) ) {
5623
5591
  case 34: goto tr378;
5624
5592
  case 95: goto st173;
@@ -5636,14 +5604,14 @@ case 173:
5636
5604
  goto st173;
5637
5605
  goto tr349;
5638
5606
  tr378:
5639
- #line 116 "hpricot_scan.rl"
5607
+ #line 122 "hpricot_scan.rl"
5640
5608
  { SET(aval, p); ATTR(ID2SYM(rb_intern("encoding")), aval); }
5641
5609
  goto st174;
5642
5610
  st174:
5643
5611
  if ( ++p == pe )
5644
5612
  goto _test_eof174;
5645
5613
  case 174:
5646
- #line 5647 "hpricot_scan.c"
5614
+ #line 5615 "hpricot_scan.c"
5647
5615
  switch( (*p) ) {
5648
5616
  case 32: goto st175;
5649
5617
  case 62: goto tr363;
@@ -5761,14 +5729,14 @@ case 187:
5761
5729
  }
5762
5730
  goto tr349;
5763
5731
  tr393:
5764
- #line 105 "hpricot_scan.rl"
5732
+ #line 111 "hpricot_scan.rl"
5765
5733
  { mark_aval = p; }
5766
5734
  goto st188;
5767
5735
  st188:
5768
5736
  if ( ++p == pe )
5769
5737
  goto _test_eof188;
5770
5738
  case 188:
5771
- #line 5772 "hpricot_scan.c"
5739
+ #line 5740 "hpricot_scan.c"
5772
5740
  if ( (*p) == 111 )
5773
5741
  goto st189;
5774
5742
  goto tr349;
@@ -5780,14 +5748,14 @@ case 189:
5780
5748
  goto tr396;
5781
5749
  goto tr349;
5782
5750
  tr396:
5783
- #line 117 "hpricot_scan.rl"
5751
+ #line 123 "hpricot_scan.rl"
5784
5752
  { SET(aval, p); ATTR(ID2SYM(rb_intern("standalone")), aval); }
5785
5753
  goto st190;
5786
5754
  st190:
5787
5755
  if ( ++p == pe )
5788
5756
  goto _test_eof190;
5789
5757
  case 190:
5790
- #line 5791 "hpricot_scan.c"
5758
+ #line 5759 "hpricot_scan.c"
5791
5759
  switch( (*p) ) {
5792
5760
  case 32: goto st190;
5793
5761
  case 62: goto tr363;
@@ -5797,14 +5765,14 @@ case 190:
5797
5765
  goto st190;
5798
5766
  goto tr349;
5799
5767
  tr394:
5800
- #line 105 "hpricot_scan.rl"
5768
+ #line 111 "hpricot_scan.rl"
5801
5769
  { mark_aval = p; }
5802
5770
  goto st191;
5803
5771
  st191:
5804
5772
  if ( ++p == pe )
5805
5773
  goto _test_eof191;
5806
5774
  case 191:
5807
- #line 5808 "hpricot_scan.c"
5775
+ #line 5776 "hpricot_scan.c"
5808
5776
  if ( (*p) == 101 )
5809
5777
  goto st192;
5810
5778
  goto tr349;
@@ -5825,14 +5793,14 @@ case 193:
5825
5793
  }
5826
5794
  goto tr349;
5827
5795
  tr399:
5828
- #line 105 "hpricot_scan.rl"
5796
+ #line 111 "hpricot_scan.rl"
5829
5797
  { mark_aval = p; }
5830
5798
  goto st194;
5831
5799
  st194:
5832
5800
  if ( ++p == pe )
5833
5801
  goto _test_eof194;
5834
5802
  case 194:
5835
- #line 5836 "hpricot_scan.c"
5803
+ #line 5804 "hpricot_scan.c"
5836
5804
  if ( (*p) == 111 )
5837
5805
  goto st195;
5838
5806
  goto tr349;
@@ -5844,14 +5812,14 @@ case 195:
5844
5812
  goto tr396;
5845
5813
  goto tr349;
5846
5814
  tr400:
5847
- #line 105 "hpricot_scan.rl"
5815
+ #line 111 "hpricot_scan.rl"
5848
5816
  { mark_aval = p; }
5849
5817
  goto st196;
5850
5818
  st196:
5851
5819
  if ( ++p == pe )
5852
5820
  goto _test_eof196;
5853
5821
  case 196:
5854
- #line 5855 "hpricot_scan.c"
5822
+ #line 5823 "hpricot_scan.c"
5855
5823
  if ( (*p) == 101 )
5856
5824
  goto st197;
5857
5825
  goto tr349;
@@ -5873,14 +5841,14 @@ case 198:
5873
5841
  goto tr403;
5874
5842
  goto tr349;
5875
5843
  tr403:
5876
- #line 105 "hpricot_scan.rl"
5844
+ #line 111 "hpricot_scan.rl"
5877
5845
  { mark_aval = p; }
5878
5846
  goto st199;
5879
5847
  st199:
5880
5848
  if ( ++p == pe )
5881
5849
  goto _test_eof199;
5882
5850
  case 199:
5883
- #line 5884 "hpricot_scan.c"
5851
+ #line 5852 "hpricot_scan.c"
5884
5852
  switch( (*p) ) {
5885
5853
  case 39: goto tr378;
5886
5854
  case 95: goto st199;
@@ -5916,14 +5884,14 @@ case 200:
5916
5884
  goto tr405;
5917
5885
  goto tr349;
5918
5886
  tr405:
5919
- #line 105 "hpricot_scan.rl"
5887
+ #line 111 "hpricot_scan.rl"
5920
5888
  { mark_aval = p; }
5921
5889
  goto st201;
5922
5890
  st201:
5923
5891
  if ( ++p == pe )
5924
5892
  goto _test_eof201;
5925
5893
  case 201:
5926
- #line 5927 "hpricot_scan.c"
5894
+ #line 5895 "hpricot_scan.c"
5927
5895
  switch( (*p) ) {
5928
5896
  case 39: goto tr360;
5929
5897
  case 95: goto st201;
@@ -5972,7 +5940,7 @@ st214:
5972
5940
  case 214:
5973
5941
  #line 1 "hpricot_scan.rl"
5974
5942
  {ts = p;}
5975
- #line 5976 "hpricot_scan.c"
5943
+ #line 5944 "hpricot_scan.c"
5976
5944
  switch( (*p) ) {
5977
5945
  case 10: goto tr423;
5978
5946
  case 45: goto tr424;
@@ -5986,7 +5954,7 @@ st215:
5986
5954
  if ( ++p == pe )
5987
5955
  goto _test_eof215;
5988
5956
  case 215:
5989
- #line 5990 "hpricot_scan.c"
5957
+ #line 5958 "hpricot_scan.c"
5990
5958
  if ( (*p) == 45 )
5991
5959
  goto st202;
5992
5960
  goto tr425;
@@ -6029,7 +5997,7 @@ st216:
6029
5997
  case 216:
6030
5998
  #line 1 "hpricot_scan.rl"
6031
5999
  {ts = p;}
6032
- #line 6033 "hpricot_scan.c"
6000
+ #line 6001 "hpricot_scan.c"
6033
6001
  switch( (*p) ) {
6034
6002
  case 10: goto tr428;
6035
6003
  case 93: goto tr429;
@@ -6043,7 +6011,7 @@ st217:
6043
6011
  if ( ++p == pe )
6044
6012
  goto _test_eof217;
6045
6013
  case 217:
6046
- #line 6047 "hpricot_scan.c"
6014
+ #line 6015 "hpricot_scan.c"
6047
6015
  if ( (*p) == 93 )
6048
6016
  goto st203;
6049
6017
  goto tr430;
@@ -6082,7 +6050,7 @@ st218:
6082
6050
  case 218:
6083
6051
  #line 1 "hpricot_scan.rl"
6084
6052
  {ts = p;}
6085
- #line 6086 "hpricot_scan.c"
6053
+ #line 6054 "hpricot_scan.c"
6086
6054
  switch( (*p) ) {
6087
6055
  case 10: goto tr433;
6088
6056
  case 62: goto tr434;
@@ -6542,8 +6510,8 @@ case 219:
6542
6510
  }
6543
6511
 
6544
6512
  }
6545
- #line 564 "hpricot_scan.rl"
6546
-
6513
+ #line 532 "hpricot_scan.rl"
6514
+
6547
6515
  if (cs == hpricot_scan_error) {
6548
6516
  if (buf != NULL)
6549
6517
  free(buf);
@@ -6556,7 +6524,7 @@ case 219:
6556
6524
  rb_raise(rb_eHpricotParseError, "parse error on line %d.\n" NO_WAY_SERIOUSLY, curline);
6557
6525
  }
6558
6526
  }
6559
-
6527
+
6560
6528
  if (done && ele_open)
6561
6529
  {
6562
6530
  ele_open = 0;
@@ -6617,66 +6585,103 @@ case 219:
6617
6585
  return Qnil;
6618
6586
  }
6619
6587
 
6620
- void Init_hpricot_scan()
6588
+ static VALUE
6589
+ alloc_hpricot_struct(VALUE klass)
6621
6590
  {
6622
- mHpricot = rb_define_module("Hpricot");
6623
- rb_define_attr(rb_singleton_class(mHpricot), "buffer_size", 1, 1);
6624
- rb_define_singleton_method(mHpricot, "scan", hpricot_scan, -1);
6625
- rb_define_singleton_method(mHpricot, "css", hpricot_css, 3);
6626
- rb_eHpricotParseError = rb_define_class_under(mHpricot, "ParseError", rb_eStandardError);
6591
+ VALUE size;
6592
+ long n;
6593
+ NEWOBJ(st, struct RStruct);
6594
+ OBJSETUP(st, klass, T_STRUCT);
6627
6595
 
6628
- cDoc = rb_define_class_under(mHpricot, "Doc", rb_cObject);
6629
- rb_define_alloc_func(cDoc, hpricot_ele_alloc);
6630
- rb_define_method(cDoc, "children", hpricot_ele_get_children, 0);
6631
- rb_define_method(cDoc, "children=", hpricot_ele_set_children, 1);
6596
+ size = rb_struct_iv_get(klass, "__size__");
6597
+ n = FIX2LONG(size);
6632
6598
 
6633
- cBaseEle = rb_define_class_under(mHpricot, "BaseEle", rb_cObject);
6634
- rb_define_alloc_func(cBaseEle, hpricot_ele_alloc);
6635
- rb_define_method(cBaseEle, "raw_string", hpricot_ele_get_raw, 0);
6636
- rb_define_method(cBaseEle, "clear_raw", hpricot_ele_clear_raw, 0);
6637
- rb_define_method(cBaseEle, "parent", hpricot_ele_get_parent, 0);
6638
- rb_define_method(cBaseEle, "parent=", hpricot_ele_set_parent, 1);
6639
- cCData = rb_define_class_under(mHpricot, "CData", cBaseEle);
6640
- rb_define_method(cCData, "content", hpricot_ele_get_tag, 0);
6641
- rb_define_method(cCData, "content=", hpricot_ele_set_tag, 1);
6642
- cComment = rb_define_class_under(mHpricot, "Comment", cBaseEle);
6643
- rb_define_method(cComment, "content", hpricot_ele_get_tag, 0);
6644
- rb_define_method(cComment, "content=", hpricot_ele_set_tag, 1);
6645
- cDocType = rb_define_class_under(mHpricot, "DocType", cBaseEle);
6646
- rb_define_method(cDocType, "target", hpricot_ele_get_tag, 0);
6647
- rb_define_method(cDocType, "target=", hpricot_ele_set_tag, 1);
6648
- rb_define_method(cDocType, "public_id", hpricot_ele_get_public_id, 0);
6649
- rb_define_method(cDocType, "public_id=", hpricot_ele_set_public_id, 1);
6650
- rb_define_method(cDocType, "system_id", hpricot_ele_get_system_id, 0);
6651
- rb_define_method(cDocType, "system_id=", hpricot_ele_set_system_id, 1);
6652
- cElem = rb_define_class_under(mHpricot, "Elem", cBaseEle);
6653
- rb_define_method(cElem, "raw_attributes", hpricot_ele_get_attr, 0);
6654
- rb_define_method(cElem, "raw_attributes=", hpricot_ele_set_attr, 1);
6655
- rb_define_method(cElem, "children", hpricot_ele_get_children, 0);
6656
- rb_define_method(cElem, "children=", hpricot_ele_set_children, 1);
6657
- rb_define_method(cElem, "etag", hpricot_ele_get_etag, 0);
6658
- rb_define_method(cElem, "etag=", hpricot_ele_set_etag, 1);
6659
- rb_define_method(cElem, "name", hpricot_ele_get_tag, 0);
6660
- rb_define_method(cElem, "name=", hpricot_ele_set_tag, 1);
6661
- cETag = rb_define_class_under(mHpricot, "ETag", cBaseEle);
6662
- rb_define_method(cETag, "name", hpricot_ele_get_tag, 0);
6663
- rb_define_method(cETag, "name=", hpricot_ele_set_tag, 1);
6664
- cBogusETag = rb_define_class_under(mHpricot, "BogusETag", cETag);
6665
- cText = rb_define_class_under(mHpricot, "Text", cBaseEle);
6666
- rb_define_method(cText, "content", hpricot_ele_get_tag, 0);
6667
- rb_define_method(cText, "content=", hpricot_ele_set_tag, 1);
6668
- cXMLDecl = rb_define_class_under(mHpricot, "XMLDecl", cBaseEle);
6669
- rb_define_method(cXMLDecl, "encoding", hpricot_ele_get_encoding, 0);
6670
- rb_define_method(cXMLDecl, "encoding=", hpricot_ele_set_encoding, 1);
6671
- rb_define_method(cXMLDecl, "standalone", hpricot_ele_get_standalone, 0);
6672
- rb_define_method(cXMLDecl, "standalone=", hpricot_ele_set_standalone, 1);
6673
- rb_define_method(cXMLDecl, "version", hpricot_ele_get_version, 0);
6674
- rb_define_method(cXMLDecl, "version=", hpricot_ele_set_version, 1);
6675
- cProcIns = rb_define_class_under(mHpricot, "ProcIns", cBaseEle);
6676
- rb_define_method(cProcIns, "target", hpricot_ele_get_tag, 0);
6677
- rb_define_method(cProcIns, "target=", hpricot_ele_set_tag, 1);
6678
- rb_define_method(cProcIns, "content", hpricot_ele_get_attr, 0);
6679
- rb_define_method(cProcIns, "content=", hpricot_ele_set_attr, 1);
6599
+ #ifndef RSTRUCT_EMBED_LEN_MAX
6600
+ st->ptr = ALLOC_N(VALUE, n);
6601
+ rb_mem_clear(st->ptr, n);
6602
+ st->len = n;
6603
+ #else
6604
+ if (0 < n && n <= RSTRUCT_EMBED_LEN_MAX) {
6605
+ RBASIC(st)->flags &= ~RSTRUCT_EMBED_LEN_MASK;
6606
+ RBASIC(st)->flags |= n << RSTRUCT_EMBED_LEN_SHIFT;
6607
+ rb_mem_clear(st->as.ary, n);
6608
+ } else {
6609
+ st->as.heap.ptr = ALLOC_N(VALUE, n);
6610
+ rb_mem_clear(st->as.heap.ptr, n);
6611
+ st->as.heap.len = n;
6612
+ }
6613
+ #endif
6614
+
6615
+ return (VALUE)st;
6616
+ }
6617
+
6618
+ static VALUE hpricot_struct_ref0(VALUE obj) {return H_ELE_GET(obj, 0);}
6619
+ static VALUE hpricot_struct_ref1(VALUE obj) {return H_ELE_GET(obj, 1);}
6620
+ static VALUE hpricot_struct_ref2(VALUE obj) {return H_ELE_GET(obj, 2);}
6621
+ static VALUE hpricot_struct_ref3(VALUE obj) {return H_ELE_GET(obj, 3);}
6622
+ static VALUE hpricot_struct_ref4(VALUE obj) {return H_ELE_GET(obj, 4);}
6623
+ static VALUE hpricot_struct_ref5(VALUE obj) {return H_ELE_GET(obj, 5);}
6624
+ static VALUE hpricot_struct_ref6(VALUE obj) {return H_ELE_GET(obj, 6);}
6625
+ static VALUE hpricot_struct_ref7(VALUE obj) {return H_ELE_GET(obj, 7);}
6626
+ static VALUE hpricot_struct_ref8(VALUE obj) {return H_ELE_GET(obj, 8);}
6627
+ static VALUE hpricot_struct_ref9(VALUE obj) {return H_ELE_GET(obj, 9);}
6628
+
6629
+ static VALUE (*ref_func[10])() = {
6630
+ hpricot_struct_ref0,
6631
+ hpricot_struct_ref1,
6632
+ hpricot_struct_ref2,
6633
+ hpricot_struct_ref3,
6634
+ hpricot_struct_ref4,
6635
+ hpricot_struct_ref5,
6636
+ hpricot_struct_ref6,
6637
+ hpricot_struct_ref7,
6638
+ hpricot_struct_ref8,
6639
+ hpricot_struct_ref9,
6640
+ };
6641
+
6642
+ static VALUE hpricot_struct_set0(VALUE obj, VALUE val) {return H_ELE_SET(obj, 0, val);}
6643
+ static VALUE hpricot_struct_set1(VALUE obj, VALUE val) {return H_ELE_SET(obj, 1, val);}
6644
+ static VALUE hpricot_struct_set2(VALUE obj, VALUE val) {return H_ELE_SET(obj, 2, val);}
6645
+ static VALUE hpricot_struct_set3(VALUE obj, VALUE val) {return H_ELE_SET(obj, 3, val);}
6646
+ static VALUE hpricot_struct_set4(VALUE obj, VALUE val) {return H_ELE_SET(obj, 4, val);}
6647
+ static VALUE hpricot_struct_set5(VALUE obj, VALUE val) {return H_ELE_SET(obj, 5, val);}
6648
+ static VALUE hpricot_struct_set6(VALUE obj, VALUE val) {return H_ELE_SET(obj, 6, val);}
6649
+ static VALUE hpricot_struct_set7(VALUE obj, VALUE val) {return H_ELE_SET(obj, 7, val);}
6650
+ static VALUE hpricot_struct_set8(VALUE obj, VALUE val) {return H_ELE_SET(obj, 8, val);}
6651
+ static VALUE hpricot_struct_set9(VALUE obj, VALUE val) {return H_ELE_SET(obj, 9, val);}
6652
+
6653
+ static VALUE (*set_func[10])() = {
6654
+ hpricot_struct_set0,
6655
+ hpricot_struct_set1,
6656
+ hpricot_struct_set2,
6657
+ hpricot_struct_set3,
6658
+ hpricot_struct_set4,
6659
+ hpricot_struct_set5,
6660
+ hpricot_struct_set6,
6661
+ hpricot_struct_set7,
6662
+ hpricot_struct_set8,
6663
+ hpricot_struct_set9,
6664
+ };
6665
+
6666
+ static VALUE
6667
+ make_hpricot_struct(VALUE members)
6668
+ {
6669
+ int i = 0;
6670
+ VALUE klass = rb_class_new(rb_cObject);
6671
+ rb_iv_set(klass, "__size__", INT2NUM(RARRAY_LEN(members)));
6672
+ rb_define_alloc_func(klass, alloc_hpricot_struct);
6673
+ rb_define_singleton_method(klass, "new", rb_class_new_instance, -1);
6674
+ for (i = 0; i < RARRAY_LEN(members); i++) {
6675
+ ID id = SYM2ID(RARRAY_PTR(members)[i]);
6676
+ rb_define_method_id(klass, id, ref_func[i], 0);
6677
+ rb_define_method_id(klass, rb_id_attrset(id), set_func[i], 1);
6678
+ }
6679
+ return klass;
6680
+ }
6681
+
6682
+ void Init_hpricot_scan()
6683
+ {
6684
+ VALUE structElem, structAttr, structBasic;
6680
6685
 
6681
6686
  s_ElementContent = rb_intern("ElementContent");
6682
6687
  symAllow = ID2SYM(rb_intern("allow"));
@@ -6686,19 +6691,78 @@ void Init_hpricot_scan()
6686
6691
  s_parent = rb_intern("parent");
6687
6692
  s_read = rb_intern("read");
6688
6693
  s_to_str = rb_intern("to_str");
6689
- iv_parent = rb_intern("parent");
6690
6694
  sym_xmldecl = ID2SYM(rb_intern("xmldecl"));
6691
6695
  sym_doctype = ID2SYM(rb_intern("doctype"));
6692
6696
  sym_procins = ID2SYM(rb_intern("procins"));
6693
6697
  sym_stag = ID2SYM(rb_intern("stag"));
6694
6698
  sym_etag = ID2SYM(rb_intern("etag"));
6695
6699
  sym_emptytag = ID2SYM(rb_intern("emptytag"));
6700
+ sym_allowed = ID2SYM(rb_intern("allowed"));
6701
+ sym_children = ID2SYM(rb_intern("children"));
6696
6702
  sym_comment = ID2SYM(rb_intern("comment"));
6697
6703
  sym_cdata = ID2SYM(rb_intern("cdata"));
6704
+ sym_name = ID2SYM(rb_intern("name"));
6705
+ sym_parent = ID2SYM(rb_intern("parent"));
6706
+ sym_raw_attributes = ID2SYM(rb_intern("raw_attributes"));
6707
+ sym_raw_string = ID2SYM(rb_intern("raw_string"));
6708
+ sym_tagno = ID2SYM(rb_intern("tagno"));
6698
6709
  sym_text = ID2SYM(rb_intern("text"));
6699
6710
  sym_EMPTY = ID2SYM(rb_intern("EMPTY"));
6700
6711
  sym_CDATA = ID2SYM(rb_intern("CDATA"));
6701
6712
 
6713
+ mHpricot = rb_define_module("Hpricot");
6714
+ rb_define_attr(rb_singleton_class(mHpricot), "buffer_size", 1, 1);
6715
+ rb_define_singleton_method(mHpricot, "scan", hpricot_scan, -1);
6716
+ rb_define_singleton_method(mHpricot, "css", hpricot_css, 3);
6717
+ rb_eHpricotParseError = rb_define_class_under(mHpricot, "ParseError", rb_eStandardError);
6718
+
6719
+ structElem = make_hpricot_struct(rb_ary_new3(8, sym_name, sym_parent,
6720
+ sym_raw_attributes, sym_etag, sym_raw_string, sym_allowed,
6721
+ sym_tagno, sym_children));
6722
+ structAttr = make_hpricot_struct(rb_ary_new3(3, sym_name, sym_parent, sym_raw_attributes));
6723
+ structBasic = make_hpricot_struct(rb_ary_new3(2, sym_name, sym_parent));
6724
+
6725
+ cDoc = rb_define_class_under(mHpricot, "Doc", structElem);
6726
+ cCData = rb_define_class_under(mHpricot, "CData", structBasic);
6727
+ rb_define_method(cCData, "content", hpricot_ele_get_name, 0);
6728
+ rb_define_method(cCData, "content=", hpricot_ele_set_name, 1);
6729
+ cComment = rb_define_class_under(mHpricot, "Comment", structBasic);
6730
+ rb_define_method(cComment, "content", hpricot_ele_get_name, 0);
6731
+ rb_define_method(cComment, "content=", hpricot_ele_set_name, 1);
6732
+ cDocType = rb_define_class_under(mHpricot, "DocType", structAttr);
6733
+ rb_define_method(cDocType, "raw_string", hpricot_ele_get_name, 0);
6734
+ rb_define_method(cDocType, "clear_raw", hpricot_ele_clear_name, 0);
6735
+ rb_define_method(cDocType, "target", hpricot_ele_get_target, 0);
6736
+ rb_define_method(cDocType, "target=", hpricot_ele_set_target, 1);
6737
+ rb_define_method(cDocType, "public_id", hpricot_ele_get_public_id, 0);
6738
+ rb_define_method(cDocType, "public_id=", hpricot_ele_set_public_id, 1);
6739
+ rb_define_method(cDocType, "system_id", hpricot_ele_get_system_id, 0);
6740
+ rb_define_method(cDocType, "system_id=", hpricot_ele_set_system_id, 1);
6741
+ cElem = rb_define_class_under(mHpricot, "Elem", structElem);
6742
+ rb_define_method(cElem, "clear_raw", hpricot_ele_clear_raw, 0);
6743
+ cBogusETag = rb_define_class_under(mHpricot, "BogusETag", structAttr);
6744
+ rb_define_method(cBogusETag, "raw_string", hpricot_ele_get_attr, 0);
6745
+ rb_define_method(cBogusETag, "clear_raw", hpricot_ele_clear_attr, 0);
6746
+ cText = rb_define_class_under(mHpricot, "Text", structBasic);
6747
+ rb_define_method(cText, "raw_string", hpricot_ele_get_name, 0);
6748
+ rb_define_method(cText, "clear_raw", hpricot_ele_clear_name, 0);
6749
+ rb_define_method(cText, "content", hpricot_ele_get_name, 0);
6750
+ rb_define_method(cText, "content=", hpricot_ele_set_name, 1);
6751
+ cXMLDecl = rb_define_class_under(mHpricot, "XMLDecl", structAttr);
6752
+ rb_define_method(cXMLDecl, "raw_string", hpricot_ele_get_name, 0);
6753
+ rb_define_method(cXMLDecl, "clear_raw", hpricot_ele_clear_name, 0);
6754
+ rb_define_method(cXMLDecl, "encoding", hpricot_ele_get_encoding, 0);
6755
+ rb_define_method(cXMLDecl, "encoding=", hpricot_ele_set_encoding, 1);
6756
+ rb_define_method(cXMLDecl, "standalone", hpricot_ele_get_standalone, 0);
6757
+ rb_define_method(cXMLDecl, "standalone=", hpricot_ele_set_standalone, 1);
6758
+ rb_define_method(cXMLDecl, "version", hpricot_ele_get_version, 0);
6759
+ rb_define_method(cXMLDecl, "version=", hpricot_ele_set_version, 1);
6760
+ cProcIns = rb_define_class_under(mHpricot, "ProcIns", structAttr);
6761
+ rb_define_method(cProcIns, "target", hpricot_ele_get_name, 0);
6762
+ rb_define_method(cProcIns, "target=", hpricot_ele_set_name, 1);
6763
+ rb_define_method(cProcIns, "content", hpricot_ele_get_attr, 0);
6764
+ rb_define_method(cProcIns, "content=", hpricot_ele_set_attr, 1);
6765
+
6702
6766
  rb_const_set(mHpricot, rb_intern("ProcInsParse"),
6703
6767
  reProcInsParse = rb_eval_string("/\\A<\\?(\\S+)\\s+(.+)/m"));
6704
6768
  }