erbal 1.2.rc3 → 1.2.rc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +2 -2
- data/ext/erbal/erbal.c +20 -0
- data/ext/erbal/parser.c +12 -30
- data/ext/erbal/parser.h +1 -1
- data/ext/erbal/parser.rl +1 -19
- data/tasks/gem.rake +1 -1
- metadata +7 -6
data/README.rdoc
CHANGED
@@ -67,7 +67,7 @@ Erubis: 2.6.6
|
|
67
67
|
|
68
68
|
Erbal: 1.1
|
69
69
|
|
70
|
-
|
70
|
+
<b>Parsing Benchmark</b>
|
71
71
|
|
72
72
|
=> Erb
|
73
73
|
0.851 0.853 0.848 0.847 0.849 0.847
|
@@ -85,7 +85,7 @@ Erbal: 1.1
|
|
85
85
|
0.036 0.039 0.066 0.038 0.067 0.039
|
86
86
|
=> Average: 0.047
|
87
87
|
|
88
|
-
|
88
|
+
<b>eval() Benchmark</b>
|
89
89
|
|
90
90
|
=> Erb
|
91
91
|
0.203 0.192 0.180 0.180 0.179 0.191
|
data/ext/erbal/erbal.c
CHANGED
@@ -10,6 +10,7 @@ void rb_erbal_free(erbal_parser *parser) {
|
|
10
10
|
void rb_erbal_mark(erbal_parser *parser) {
|
11
11
|
rb_gc_mark_maybe(parser->str);
|
12
12
|
rb_gc_mark_maybe(parser->src);
|
13
|
+
rb_gc_mark_maybe(parser->initial_src);
|
13
14
|
rb_gc_mark_maybe(parser->buffer_name);
|
14
15
|
rb_gc_mark_maybe(parser->options);
|
15
16
|
rb_gc_mark_maybe(parser->safe_concat_method);
|
@@ -65,6 +66,25 @@ VALUE rb_erbal_initialize(int argc, VALUE *argv, VALUE self) {
|
|
65
66
|
rb_erbal_setup_option(self, parser, &parser->unsafe_concat_method, "unsafe_concat_method", "concat");
|
66
67
|
rb_erbal_setup_option(self, parser, &parser->safe_concat_keyword, "safe_concat_keyword", "");
|
67
68
|
|
69
|
+
if (strcmp(RSTRING(parser->safe_concat_method)->ptr, RSTRING(parser->unsafe_concat_method)->ptr) == 0) {
|
70
|
+
parser->concat_methods_identical = 1;
|
71
|
+
} else {
|
72
|
+
parser->concat_methods_identical = 0;
|
73
|
+
}
|
74
|
+
|
75
|
+
parser->initial_src = rb_str_dup(parser->buffer_name);
|
76
|
+
|
77
|
+
VALUE buffer_init_val = rb_hash_aref(parser->options, ID2SYM(rb_intern("buffer_initial_value")));
|
78
|
+
|
79
|
+
if (!NIL_P(buffer_init_val)) {
|
80
|
+
Check_Type(buffer_init_val, T_STRING);
|
81
|
+
rb_str_buf_cat(parser->initial_src, " = ", 3);
|
82
|
+
rb_str_concat(parser->initial_src, buffer_init_val);
|
83
|
+
rb_str_buf_cat(parser->initial_src, ";", 1);
|
84
|
+
} else {
|
85
|
+
rb_str_buf_cat(parser->initial_src, " = '';", 6);
|
86
|
+
}
|
87
|
+
|
68
88
|
return self;
|
69
89
|
}
|
70
90
|
|
data/ext/erbal/parser.c
CHANGED
@@ -218,28 +218,10 @@ void erbal_parser_init(VALUE self, erbal_parser *parser) {
|
|
218
218
|
parser->state->chars_seen = 0;
|
219
219
|
parser->state->concat = OUTSIDE_CONCAT;
|
220
220
|
parser->state->tag = OUTSIDE_TAG;
|
221
|
-
|
222
|
-
if (strcmp(RSTRING(parser->safe_concat_method)->ptr, RSTRING(parser->unsafe_concat_method)->ptr) == 0) {
|
223
|
-
parser->concat_methods_identical = 1;
|
224
|
-
} else {
|
225
|
-
parser->concat_methods_identical = 0;
|
226
|
-
}
|
227
|
-
|
228
|
-
parser->src = rb_str_dup(parser->buffer_name);
|
229
|
-
|
230
|
-
VALUE buffer_init_val = rb_hash_aref(parser->options, ID2SYM(rb_intern("buffer_initial_value")));
|
231
|
-
|
232
|
-
if (!NIL_P(buffer_init_val)) {
|
233
|
-
Check_Type(buffer_init_val, T_STRING);
|
234
|
-
rb_str_buf_cat(parser->src, " = ", 3);
|
235
|
-
rb_str_concat(parser->src, buffer_init_val);
|
236
|
-
rb_str_buf_cat(parser->src, ";", 1);
|
237
|
-
} else {
|
238
|
-
rb_str_buf_cat(parser->src, " = '';", 6);
|
239
|
-
}
|
221
|
+
parser->src = rb_str_dup(parser->initial_src);
|
240
222
|
|
241
223
|
|
242
|
-
#line
|
224
|
+
#line 225 "parser.c"
|
243
225
|
{
|
244
226
|
cs = erbal_parser_start;
|
245
227
|
ts = 0;
|
@@ -247,14 +229,14 @@ void erbal_parser_init(VALUE self, erbal_parser *parser) {
|
|
247
229
|
act = 0;
|
248
230
|
}
|
249
231
|
|
250
|
-
#line
|
232
|
+
#line 238 "parser.rl"
|
251
233
|
}
|
252
234
|
|
253
235
|
void erbal_parser_exec(erbal_parser *parser) {
|
254
236
|
p = RSTRING(parser->str)->ptr;
|
255
237
|
pe = p + strlen(p);
|
256
238
|
|
257
|
-
#line
|
239
|
+
#line 240 "parser.c"
|
258
240
|
{
|
259
241
|
if ( p == pe )
|
260
242
|
goto _test_eof;
|
@@ -314,7 +296,7 @@ st4:
|
|
314
296
|
case 4:
|
315
297
|
#line 1 "NONE"
|
316
298
|
{ts = p;}
|
317
|
-
#line
|
299
|
+
#line 300 "parser.c"
|
318
300
|
switch( (*p) ) {
|
319
301
|
case 37: goto st5;
|
320
302
|
case 45: goto tr10;
|
@@ -336,7 +318,7 @@ st6:
|
|
336
318
|
if ( ++p == pe )
|
337
319
|
goto _test_eof6;
|
338
320
|
case 6:
|
339
|
-
#line
|
321
|
+
#line 322 "parser.c"
|
340
322
|
if ( (*p) == 37 )
|
341
323
|
goto st0;
|
342
324
|
goto tr12;
|
@@ -372,7 +354,7 @@ st9:
|
|
372
354
|
if ( ++p == pe )
|
373
355
|
goto _test_eof9;
|
374
356
|
case 9:
|
375
|
-
#line
|
357
|
+
#line 358 "parser.c"
|
376
358
|
switch( (*p) ) {
|
377
359
|
case 32: goto tr21;
|
378
360
|
case 33: goto tr22;
|
@@ -396,7 +378,7 @@ st1:
|
|
396
378
|
if ( ++p == pe )
|
397
379
|
goto _test_eof1;
|
398
380
|
case 1:
|
399
|
-
#line
|
381
|
+
#line 382 "parser.c"
|
400
382
|
switch( (*p) ) {
|
401
383
|
case 32: goto st1;
|
402
384
|
case 33: goto tr4;
|
@@ -426,7 +408,7 @@ st2:
|
|
426
408
|
if ( ++p == pe )
|
427
409
|
goto _test_eof2;
|
428
410
|
case 2:
|
429
|
-
#line
|
411
|
+
#line 412 "parser.c"
|
430
412
|
if ( (*p) == 32 )
|
431
413
|
goto tr6;
|
432
414
|
goto tr2;
|
@@ -441,7 +423,7 @@ st10:
|
|
441
423
|
if ( ++p == pe )
|
442
424
|
goto _test_eof10;
|
443
425
|
case 10:
|
444
|
-
#line
|
426
|
+
#line 427 "parser.c"
|
445
427
|
if ( (*p) == 32 )
|
446
428
|
goto st10;
|
447
429
|
goto tr24;
|
@@ -459,7 +441,7 @@ st3:
|
|
459
441
|
if ( ++p == pe )
|
460
442
|
goto _test_eof3;
|
461
443
|
case 3:
|
462
|
-
#line
|
444
|
+
#line 445 "parser.c"
|
463
445
|
if ( (*p) == 32 )
|
464
446
|
goto tr6;
|
465
447
|
if ( 97 <= (*p) && (*p) <= 122 )
|
@@ -497,6 +479,6 @@ case 3:
|
|
497
479
|
|
498
480
|
}
|
499
481
|
|
500
|
-
#line
|
482
|
+
#line 244 "parser.rl"
|
501
483
|
erbal_parser_finish(parser);
|
502
484
|
}
|
data/ext/erbal/parser.h
CHANGED
@@ -13,7 +13,7 @@ typedef struct parser_state {
|
|
13
13
|
typedef struct erbal_parser {
|
14
14
|
parser_state *state;
|
15
15
|
unsigned int debug, concat_methods_identical;
|
16
|
-
VALUE str, src, buffer_name, options, safe_concat_method, unsafe_concat_method, keyword, safe_concat_keyword;
|
16
|
+
VALUE str, src, initial_src, buffer_name, options, safe_concat_method, unsafe_concat_method, keyword, safe_concat_keyword;
|
17
17
|
char *keyword_start, *keyword_end, *keyword_trailing_whitespace, *keyword_preceding_whitespace;
|
18
18
|
} erbal_parser;
|
19
19
|
|
data/ext/erbal/parser.rl
CHANGED
@@ -232,25 +232,7 @@ void erbal_parser_init(VALUE self, erbal_parser *parser) {
|
|
232
232
|
parser->state->chars_seen = 0;
|
233
233
|
parser->state->concat = OUTSIDE_CONCAT;
|
234
234
|
parser->state->tag = OUTSIDE_TAG;
|
235
|
-
|
236
|
-
if (strcmp(RSTRING(parser->safe_concat_method)->ptr, RSTRING(parser->unsafe_concat_method)->ptr) == 0) {
|
237
|
-
parser->concat_methods_identical = 1;
|
238
|
-
} else {
|
239
|
-
parser->concat_methods_identical = 0;
|
240
|
-
}
|
241
|
-
|
242
|
-
parser->src = rb_str_dup(parser->buffer_name);
|
243
|
-
|
244
|
-
VALUE buffer_init_val = rb_hash_aref(parser->options, ID2SYM(rb_intern("buffer_initial_value")));
|
245
|
-
|
246
|
-
if (!NIL_P(buffer_init_val)) {
|
247
|
-
Check_Type(buffer_init_val, T_STRING);
|
248
|
-
rb_str_buf_cat(parser->src, " = ", 3);
|
249
|
-
rb_str_concat(parser->src, buffer_init_val);
|
250
|
-
rb_str_buf_cat(parser->src, ";", 1);
|
251
|
-
} else {
|
252
|
-
rb_str_buf_cat(parser->src, " = '';", 6);
|
253
|
-
}
|
235
|
+
parser->src = rb_str_dup(parser->initial_src);
|
254
236
|
|
255
237
|
%% write init;
|
256
238
|
}
|
data/tasks/gem.rake
CHANGED
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erbal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 15424237
|
5
|
+
prerelease: 4
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
|
9
|
+
- rc
|
10
|
+
- 4
|
11
|
+
version: 1.2.rc4
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- Ian Leitch
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2011-01-
|
19
|
+
date: 2011-01-10 00:00:00 +11:00
|
19
20
|
default_executable:
|
20
21
|
dependencies: []
|
21
22
|
|
@@ -78,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
78
79
|
requirements: []
|
79
80
|
|
80
81
|
rubyforge_project:
|
81
|
-
rubygems_version: 1.
|
82
|
+
rubygems_version: 1.4.2
|
82
83
|
signing_key:
|
83
84
|
specification_version: 3
|
84
85
|
summary: Very small, very fast Ragel/C based ERB parser
|