Changeset 87
- Timestamp:
- 10/16/2006 14:25:24 (2 years ago)
- Location:
- trunk
- Files:
-
- 2 modified
-
lib/markaby/builder.rb (modified) (4 diffs)
-
test/test_markaby.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/markaby/builder.rb
r85 r87 62 62 @streams = [[]] 63 63 @assigns = assigns 64 @helpers = helpers 64 65 @elements = {} 65 66 @@default.each do |k, v|67 instance_variable_set("@#{k}", @assigns[k] || v)68 end69 70 if helpers.nil?71 @helpers = nil72 else73 @helpers = helpers.dup74 for iv in helpers.instance_variables75 instance_variable_set(iv, helpers.instance_variable_get(iv))76 end77 end78 79 unless assigns.nil? || assigns.empty?80 for iv, val in assigns81 instance_variable_set("@#{iv}", val)82 unless @helpers.nil?83 @helpers.instance_variable_set("@#{iv}", val)84 end85 end86 end87 66 88 67 @builder = ::Builder::XmlMarkup.new(:indent => @indent, :target => @streams.last) 89 68 class << @builder 90 69 attr_accessor :target, :level 70 end 71 72 @@default.each do |k, v| 73 instance_variable_set("@#{k}", @assigns[k] || v) 91 74 end 92 75 … … 114 97 # 115 98 def capture(&block) 116 @streams.push( builder.target = [])99 @streams.push(@builder.target = []) 117 100 @builder.level += 1 118 101 str = instance_eval(&block) … … 120 103 @streams.pop 121 104 @builder.level -= 1 122 builder.target = @streams.last105 @builder.target = @streams.last 123 106 str 124 107 end … … 178 161 r 179 162 end 163 elsif @assigns.has_key?(sym) 164 @assigns[sym] 165 elsif @helpers.instance_variables.include?("@#{sym}") 166 @helpers.instance_variable_get("@#{sym}") 180 167 elsif ::Builder::XmlMarkup.instance_methods.include?(sym.to_s) 181 168 @builder.__send__(sym, *args, &block) 182 elsif instance_variables.include?("@#{sym}")183 instance_variable_get("@#{sym}")184 169 elsif @tagset.nil? 185 170 tag!(sym, *args, &block) -
trunk/test/test_markaby.rb
r86 r87 58 58 assert_equal html, mab { div { @name = 'Steve'; h1 @name; div { @name = 'Gerald'; h2 @name }; h3 @name } } 59 59 assert_equal html, mab { div { @name = 'Steve'; h1 @name; self << capture { div { @name = 'Gerald'; h2 @name } }; h3 @name } } 60 assert_equal html, mab(:name => 'Steve') { div { h1 @name; self << capture { div { @name = 'Gerald'; h2 @name } }; h3 @name } }60 assert_equal html, mab(:name => 'Steve') { div { h1 name; self << capture { div { @name = 'Gerald'; h2 @name } }; h3 @name } } 61 61 end 62 62 63 def test_ivars_without_at_symbol64 assert_equal "<h1>Hello World</h1>", mab { @message = 'Hello World'; h1 message }65 end66 67 63 def test_helpers 68 64 Markaby::Builder.ignored_helpers.clear