Changeset 83

Show
Ignore:
Timestamp:
10/16/2006 13:39:00 (2 years ago)
Author:
tec
Message:
  • lib/markaby/builder.rb: get rid of warnings and clean up formatting
  • lib/markaby/metaid.rb: get rid of warnings and hide from rdoc
  • Rakefile: add rake warnings task
Location:
trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/Rakefile

    r80 r83  
    1919test_file = "test/test_markaby.rb" 
    2020setup_gem("markaby", VERS,  "Tim Fletcher and _why", summary, [['builder', '>=2.0.0']], test_file) 
     21 
     22desc "List any Markaby specific warnings" 
     23task :warnings do 
     24  `ruby -w test/test_markaby.rb 2>&1`.split(/\n/).each do |line| 
     25    next unless line =~ /warning:/ 
     26    next if line =~ /builder-/ 
     27    puts line 
     28  end 
     29end 
  • trunk/lib/markaby/builder.rb

    r80 r83  
    8888      @builder = ::Builder::XmlMarkup.new(:indent => @indent, :target => @streams.last) 
    8989      class << @builder 
    90           attr_accessor :target, :level 
    91       end 
    92  
    93       if block 
    94         text(capture(&block)) 
    95       end 
     90        attr_accessor :target, :level 
     91      end 
     92 
     93      text(capture(&block)) if block 
    9694    end 
    9795 
     
    153151      end 
    154152      if block 
    155         str = capture &block 
     153        str = capture(&block) 
    156154        block = proc { text(str) } 
    157155      end 
     
    212210        end 
    213211      end 
    214       if not @tagset.self_closing.include?(sym) and args.first.respond_to?(:to_hash) 
    215         block ||= proc{} 
    216       end 
    217212      tag!(sym, *args, &block) 
    218213    end 
     
    226221    end 
    227222 
     223    remove_method :head 
     224     
    228225    # Builds a head tag.  Adds a <tt>meta</tt> tag inside with Content-Type 
    229226    # set to <tt>text/html; charset=utf-8</tt>. 
     
    240237    def xhtml_transitional(&block) 
    241238      self.tagset = Markaby::XHTMLTransitional 
    242       xhtml_html &block 
     239      xhtml_html(&block) 
    243240    end 
    244241 
     
    246243    def xhtml_strict(&block) 
    247244      self.tagset = Markaby::XHTMLStrict 
    248       xhtml_html &block 
     245      xhtml_html(&block) 
    249246    end 
    250247 
     
    259256    def fragment 
    260257      stream = @streams.last 
    261       f1 = stream.length 
     258      start = stream.length 
    262259      yield 
    263       f2 = stream.length - f1 
    264       Fragment.new(stream, f1, f2) 
     260      length = stream.length - start 
     261      Fragment.new(stream, start, length) 
    265262    end 
    266263 
     
    273270  # For a more practical explanation, check out the README. 
    274271  class Fragment < ::Builder::BlankSlate 
    275     def initialize(s, a, b) 
    276       @s, @f1, @f2 = s, a, b  
    277     end 
    278     def method_missing(*a) 
    279       unless @str 
    280         @str = @s[@f1, @f2].to_s   
    281         @s[@f1, @f2] = [nil] * @f2 
    282         @str 
    283       end 
    284       @str.send(*a) 
     272    def initialize(*args) 
     273      @stream, @start, @length = args 
     274    end 
     275    def method_missing(*args) 
     276      # We can't do @stream.slice!(@start, @length), 
     277      # as it would invalidate the @starts and @lengths of other Fragment instances. 
     278      @str = @stream[@start, @length].to_s 
     279      @stream[@start, @length] = [nil] * @length 
     280      def self.method_missing(*args, &block) 
     281        @str.send(*args, &block) 
     282      end 
     283      @str.send(*args, &block) 
    285284    end 
    286285  end 
  • trunk/lib/markaby/metaid.rb

    r1 r83  
    11# metaprogramming assistant -- metaid.rb 
    2 class Object 
     2class Object # :nodoc: 
    33  # The hidden singleton lurks behind everyone 
    44  def metaclass; class << self; self; end; end 
    5   def meta_eval &blk; metaclass.instance_eval &blk; end 
     5  def meta_eval(&blk); metaclass.instance_eval(&blk); end 
    66   
    77  # Adds methods to a metaclass 
    8   def meta_def name, &blk 
    9     meta_eval { define_method name, &blk } 
     8  def meta_def(name, &blk) 
     9    meta_eval { define_method(name, &blk) } 
    1010  end 
    1111   
    1212  # Defines an instance method within a class 
    13   def class_def name, &blk 
    14     class_eval { define_method name, &blk } 
     13  def class_def(name, &blk) 
     14    class_eval { define_method(name, &blk) } 
    1515  end 
    1616end