Changeset 1223

Show
Ignore:
Timestamp:
12/09/07 14:58:23 (1 year ago)
Author:
mikem836
Message:

formatter syntactic diabetes - fix for #363

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ruport/trunk/lib/ruport/formatter.rb

    r1222 r1223  
    159159        end     
    160160      end 
    161     end    
     161    end 
     162     
     163    # Allows you to implement stages in your formatter using the 
     164    # following syntax: 
     165    # 
     166    #   class ReversedText < Ruport::Formatter  
     167    #      renders :txt, :for => ReverseRenderer 
     168    #       
     169    #      build :reversed_header do 
     170    #         output << "#{options.header_text}\n" 
     171    #         output << "The reversed text will follow\n" 
     172    #      end 
     173    #  
     174    #      build :reversed_body do 
     175    #         output << data.reverse << "\n" 
     176    #      end 
     177    #   end 
     178    # 
     179    def self.build(stage,&block) 
     180      define_method "build_#{stage}", &block 
     181    end 
    162182     
    163183    # Allows the options specified to be accessed directly. 
  • ruport/trunk/test/renderer_test.rb

    r1215 r1223  
    167167  end      
    168168   
     169end 
     170 
     171 
     172class TestFormatterUsingBuild < Test::Unit::TestCase 
     173  # This formatter uses the build syntax 
     174  class UsesBuild < Ruport::Formatter 
     175     renders :text_using_build, :for => VanillaRenderer  
     176      
     177     build :header do 
     178       output << "header\n" 
     179     end 
     180 
     181     build :body do 
     182       output << "body\n" 
     183     end 
     184 
     185     build :footer do 
     186       output << "footer\n" 
     187     end      
     188  end 
     189 
     190  def test_should_render_using_build_syntax 
     191    assert_equal "header\nbody\nfooter\n", 
     192      VanillaRenderer.render_text_using_build 
     193    VanillaRenderer.render_text_using_build do |rend| 
     194      assert rend.formatter.respond_to?(:build_header) 
     195      assert rend.formatter.respond_to?(:build_body) 
     196      assert rend.formatter.respond_to?(:build_footer) 
     197    end 
     198  end 
    169199end 
    170200