Changeset 91

Show
Ignore:
Timestamp:
11/04/2006 06:15:50 (2 years ago)
Author:
tec
Message:
  • lib/markaby/builder.rb: subclass ::Builder::XmlMarkup? for a cleaner #initialize,
    and check for string keys in assigns to support Rails controller instance vars.
  • test/rails_test.rb: test for the latter
  • test/rails/markaby/index.mab: template for the test
Location:
trunk
Files:
1 added
2 modified

Legend:

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

    r88 r91  
    6969      end 
    7070 
    71       @builder = ::Builder::XmlMarkup.new(:indent => @indent, :target => @streams.last) 
    72       class << @builder 
    73         attr_accessor :target, :level 
    74       end 
     71      @builder = XmlMarkup.new(:indent => @indent, :target => @streams.last) 
    7572 
    7673      text(capture(&block)) if block 
     
    8481    # Write a +string+ to the HTML stream without escaping it. 
    8582    def text(string) 
    86       @builder << "#{string}" 
     83      @builder << string.to_s 
    8784      nil 
    8885    end 
     
    163160      elsif @assigns.has_key?(sym) 
    164161        @assigns[sym] 
     162      elsif @assigns.has_key?(stringy_key = sym.to_s) 
     163        # Rails' ActionView assigns hash has string keys for 
     164        # instance variables that are defined in the controller. 
     165        @assigns[stringy_key] 
    165166      elsif @helpers.instance_variables.include?("@#{sym}") 
    166167        @helpers.instance_variable_get("@#{sym}") 
     
    267268  end 
    268269 
     270  class XmlMarkup < ::Builder::XmlMarkup 
     271    attr_accessor :target, :level 
     272  end 
     273   
    269274end 
  • trunk/test/rails_test.rb

    r90 r91  
    88 
    99  def rescue_action(e) raise e end; 
     10 
     11  def index 
     12    @monkey_names = @@locals[:monkeys].map(&:name) 
     13  end 
    1014 
    1115  def partial_rendering 
     
    3236    @controller = MarkabyController.new 
    3337    @controller.template_root = File.join(File.dirname(__FILE__), 'rails') 
     38    @expected_monkey_names = '<ul><li>Frank</li><li>Benny</li><li>Paul</li></ul>' 
     39  end 
     40   
     41  def test_index 
     42    process :index 
     43    assert_response :success 
     44    assert_template 'markaby/index' 
     45    assert_equal @expected_monkey_names, @response.body 
    3446  end 
    3547   
     
    5163 
    5264  def test_inline_helper_rendering 
    53     Markaby::Builder.set :indent, 0 
    5465    process :inline_helper_rendering 
    5566    assert_response :success 
    56     assert_equal '<ul><li>Frank</li><li>Benny</li><li>Paul</li></ul>', @response.body 
     67    assert_equal @expected_monkey_names, @response.body 
    5768  end   
    5869 
    5970  def test_basic_inline_rendering 
    60     Markaby::Builder.set :indent, 0 
    6171    process :basic_inline_rendering 
    6272    assert_response :success 
    63     assert_equal '<ul><li>Frank</li><li>Benny</li><li>Paul</li></ul>', @response.body 
     73    assert_equal @expected_monkey_names, @response.body 
    6474  end   
    6575