erbal 1.0.rc4 → 1.0.rc6

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.
@@ -15,7 +15,11 @@ VALUE rb_erbal_alloc(VALUE klass) {
15
15
  return obj;
16
16
  }
17
17
 
18
- VALUE rb_erbal_initialize(VALUE self, VALUE str, VALUE buffer_name, VALUE options) {
18
+ VALUE rb_erbal_initialize(int argc, VALUE *argv, VALUE self) {
19
+ VALUE str, buffer_name, options;
20
+
21
+ rb_scan_args(argc, argv, "21", &str, &buffer_name, &options);
22
+
19
23
  Check_Type(str, T_STRING);
20
24
  Check_Type(buffer_name, T_STRING);
21
25
 
@@ -24,7 +28,7 @@ VALUE rb_erbal_initialize(VALUE self, VALUE str, VALUE buffer_name, VALUE option
24
28
  parser->buffer_name = buffer_name;
25
29
  parser->str = str;
26
30
 
27
- if (options == Qtrue) {
31
+ if (NIL_P(options)) {
28
32
  parser->options = rb_hash_new();
29
33
  } else {
30
34
  Check_Type(options, T_HASH);
@@ -45,6 +49,6 @@ VALUE rb_erbal_parse(VALUE self) {
45
49
  void Init_erbal() {
46
50
  cErbal = rb_define_class("Erbal", rb_cObject);
47
51
  rb_define_alloc_func(cErbal, rb_erbal_alloc);
48
- rb_define_method(cErbal, "initialize", rb_erbal_initialize, 3);
52
+ rb_define_method(cErbal, "initialize", rb_erbal_initialize, -1);
49
53
  rb_define_method(cErbal, "parse", rb_erbal_parse, 0);
50
54
  }
@@ -122,7 +122,7 @@ inline VALUE erbal_escape_special_chars(erbal_parser *parser, int shift) {
122
122
 
123
123
  inline void erbal_concat_chars_seen(erbal_parser *parser, int shift) {
124
124
  if (parser->chars_seen != 0) {
125
- if (parser->in_buffer_shift) {
125
+ if (parser->in_buffer_shift && parser->state == OUTSIDE_TAG) {
126
126
  rb_str_concat(parser->src, erbal_escape_special_chars(parser, shift));
127
127
  } else {
128
128
  rb_str_buf_cat(parser->src, ((p + shift) - parser->chars_seen), parser->chars_seen);
@@ -157,7 +157,7 @@ inline void erbal_parser_finish(erbal_parser *parser) {
157
157
  }
158
158
 
159
159
  rb_str_concat(parser->src, parser->buffer_name);
160
-
160
+
161
161
  if (parser->debug) {
162
162
  printf("ERBAL DEBUG: %s\n", RSTRING(rb_inspect(parser->src))->ptr);
163
163
  }
@@ -121,7 +121,7 @@ inline VALUE erbal_escape_special_chars(erbal_parser *parser, int shift) {
121
121
 
122
122
  inline void erbal_concat_chars_seen(erbal_parser *parser, int shift) {
123
123
  if (parser->chars_seen != 0) {
124
- if (parser->in_buffer_shift) {
124
+ if (parser->in_buffer_shift && parser->state == OUTSIDE_TAG) {
125
125
  rb_str_concat(parser->src, erbal_escape_special_chars(parser, shift));
126
126
  } else {
127
127
  rb_str_buf_cat(parser->src, ((p + shift) - parser->chars_seen), parser->chars_seen);
@@ -156,7 +156,7 @@ inline void erbal_parser_finish(erbal_parser *parser) {
156
156
  }
157
157
 
158
158
  rb_str_concat(parser->src, parser->buffer_name);
159
-
159
+
160
160
  if (parser->debug) {
161
161
  printf("ERBAL DEBUG: %s\n", RSTRING(rb_inspect(parser->src))->ptr);
162
162
  }
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Erbal do
4
4
  def erbal_parse(str)
5
- Erbal.new(str, '@out', {:debug => false}).parse
5
+ Erbal.new(str, '@out').parse
6
6
  end
7
7
 
8
8
  def erubis_parse(str)
@@ -63,7 +63,7 @@ describe Erbal do
63
63
  erbal_parse("1 + 1 is <%= 1 + 1 %>, and 2 + 2 is <%= 2 + 2 %>. Easy!").should == "@out = '';@out << %Q`1 + 1 is \#{ 1 + 1 }, and 2 + 2 is \#{ 2 + 2 }. Easy!`;@out"
64
64
  end
65
65
 
66
- it "should escape a hash character that signifies the start of a string interpolation" do
66
+ it "should escape a hash character that signifies the start of a string interpolation when outside tags" do
67
67
  erbal_parse("<%= 1 + 1 -%> wee \#{1 + 3}").should == "@out = '';@out << %Q`\#{ 1 + 1 } wee \\\#{1 + 3}`;@out"
68
68
  eval(erbal_parse("<%= 1 + 1 -%> wee \#{1 + 3}")).should == eval(erubis_parse("<%= 1 + 1 -%> wee \#{1 + 3}"))
69
69
 
@@ -77,6 +77,11 @@ describe Erbal do
77
77
  eval(erbal_parse('<%= 1 + 1 -%> wee #{1 + 3}')).should == eval(erubis_parse('<%= 1 + 1 -%> wee #{1 + 3}'))
78
78
  end
79
79
 
80
+ it "should not escape a hash character that signifies the start of a string interpolation when inside tags" do
81
+ erbal_parse('<%= "#{1 + 1}" -%>').should == "@out = '';@out << %Q`\#{ \"\#{1 + 1}\" }`;@out"
82
+ eval(erbal_parse('<%= "#{1 + 1}" -%>')).should == eval(erubis_parse('<%= "#{1 + 1}" -%>'))
83
+ end
84
+
80
85
  it "should escape a backtick character that signifies the end off a buffer shift" do
81
86
  erbal_parse("weeee `").should == "@out = '';@out << %Q`weeee \\``;@out"
82
87
  eval(erbal_parse("weeee `")).should == eval(erubis_parse("weeee `"));
@@ -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.0.rc4'
5
+ ERBAL_VERSION = '1.0.rc6'
6
6
 
7
7
  task :clean => :clobber_package
8
8
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erbal
3
3
  version: !ruby/object:Gem::Version
4
- hash: 977940501
4
+ hash: 977940499
5
5
  prerelease: true
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - rc4
10
- version: 1.0.rc4
9
+ - rc6
10
+ version: 1.0.rc6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ian Leitch
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-29 00:00:00 +11:00
18
+ date: 2010-12-30 00:00:00 +11:00
19
19
  default_executable:
20
20
  dependencies: []
21
21