Changeset 87

Show
Ignore:
Timestamp:
10/16/2006 14:25:24 (2 years ago)
Author:
tec
Message:
  • lib/markaby/builder.rb: stopped adding instance variables from helpers/assigns to Markaby::Builder
  • test/test_markaby.rb: changed tests to support this
Location:
trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/lib/markaby/builder.rb

    r85 r87  
    6262      @streams = [[]] 
    6363      @assigns = assigns 
     64      @helpers = helpers 
    6465      @elements = {} 
    65  
    66       @@default.each do |k, v| 
    67         instance_variable_set("@#{k}", @assigns[k] || v) 
    68       end 
    69  
    70       if helpers.nil? 
    71         @helpers = nil 
    72       else 
    73         @helpers = helpers.dup 
    74         for iv in helpers.instance_variables 
    75           instance_variable_set(iv, helpers.instance_variable_get(iv)) 
    76         end 
    77       end 
    78  
    79       unless assigns.nil? || assigns.empty? 
    80         for iv, val in assigns 
    81           instance_variable_set("@#{iv}", val) 
    82           unless @helpers.nil? 
    83             @helpers.instance_variable_set("@#{iv}", val) 
    84           end 
    85         end 
    86       end 
    8766 
    8867      @builder = ::Builder::XmlMarkup.new(:indent => @indent, :target => @streams.last) 
    8968      class << @builder 
    9069        attr_accessor :target, :level 
     70      end 
     71 
     72      @@default.each do |k, v| 
     73        instance_variable_set("@#{k}", @assigns[k] || v) 
    9174      end 
    9275 
     
    11497    # 
    11598    def capture(&block) 
    116       @streams.push(builder.target = []) 
     99      @streams.push(@builder.target = []) 
    117100      @builder.level += 1 
    118101      str = instance_eval(&block) 
     
    120103      @streams.pop 
    121104      @builder.level -= 1 
    122       builder.target = @streams.last 
     105      @builder.target = @streams.last 
    123106      str 
    124107    end 
     
    178161          r 
    179162        end 
     163      elsif @assigns.has_key?(sym) 
     164        @assigns[sym] 
     165      elsif @helpers.instance_variables.include?("@#{sym}") 
     166        @helpers.instance_variable_get("@#{sym}") 
    180167      elsif ::Builder::XmlMarkup.instance_methods.include?(sym.to_s)  
    181168        @builder.__send__(sym, *args, &block) 
    182       elsif instance_variables.include?("@#{sym}") 
    183         instance_variable_get("@#{sym}") 
    184169      elsif @tagset.nil? 
    185170        tag!(sym, *args, &block) 
  • trunk/test/test_markaby.rb

    r86 r87  
    5858    assert_equal html, mab { div { @name = 'Steve'; h1 @name; div { @name = 'Gerald'; h2 @name }; h3 @name } } 
    5959    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 } } 
    6161  end 
    6262 
    63   def test_ivars_without_at_symbol 
    64     assert_equal "<h1>Hello World</h1>", mab { @message = 'Hello World'; h1 message } 
    65   end 
    66    
    6763  def test_helpers 
    6864    Markaby::Builder.ignored_helpers.clear