erbal 1.2.rc3 → 1.2.rc4

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -67,7 +67,7 @@ Erubis: 2.6.6
67
67
 
68
68
  Erbal: 1.1
69
69
 
70
- => Parsing Benchmark
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
- => eval() Benchmark
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 243 "parser.c"
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 256 "parser.rl"
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 258 "parser.c"
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 318 "parser.c"
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 340 "parser.c"
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 376 "parser.c"
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 400 "parser.c"
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 430 "parser.c"
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 445 "parser.c"
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 463 "parser.c"
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 262 "parser.rl"
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
@@ -2,7 +2,7 @@ require 'rake/gempackagetask'
2
2
  require 'yaml'
3
3
 
4
4
  WIN_SUFFIX = ENV['WIN_SUFFIX'] || 'i386-mswin32'
5
- ERBAL_VERSION = '1.2.rc3'
5
+ ERBAL_VERSION = '1.2.rc4'
6
6
 
7
7
  task :clean => :clobber_package
8
8
 
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: 977940508
5
- prerelease: true
4
+ hash: 15424237
5
+ prerelease: 4
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - rc3
10
- version: 1.2.rc3
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-08 00:00:00 +11:00
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.3.7
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