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 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