Changeset 591

Show
Ignore:
Timestamp:
2007-06-01 17:14:29 (2 years ago)
Author:
gaspard
Message:

[new] zafu ignore tag can be written as <li do=>blah</li>
[change] lang links now use 'em' instead of 'b' for current lang
[new] added options for lang_links and show_path zafu tags

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/app/helpers/application_helper.rb

    r590 r591  
    874874  def show_path(opts={}) 
    875875    node = opts[:node] || @node 
     876    tag  = opts[:tag] || 'li' 
     877    join = opts[:join] || ' / ' 
    876878    nav = [] 
    877879    node.ancestors.each do |obj| 
     
    880882     
    881883    nav << "<a href='#{url_for(zen_path(node))}' class='current'>#{node.name}</a>" 
    882     res = "<ul class='path'>" 
    883     "#{res}<li>#{nav.join(" / </li><li>")}</li></ul>" 
     884    res = "#{res}<#{tag}>#{nav.join("</#{tag}>#{join}<#{tag}>")}</#{tag}>" 
    884885  end 
    885886   
     
    969970      "" 
    970971    else 
     972      if opts[:tag] 
     973        tag_in  = "<#{opts[:tag]}>" 
     974        tag_out = "</#{opts[:tag]}>" 
     975      else 
     976        tag_in = tag_out = '' 
     977      end 
    971978      res = [] 
    972979      visitor.site.lang_list.sort.each do |l| 
    973980        if l == lang 
    974           res << "<b>#{l}</b>" 
     981          if opts[:tag] 
     982            res << "<#{opts[:tag]} class='on'>#{l}" + tag_out 
     983          else 
     984            res << "<em>#{l}</em>" 
     985          end 
    975986        else 
    976987          if visitor.is_anon? && params[:prefix] 
    977             res << link_to(l, :overwrite_params => {:prefix => l}) 
     988            res << tag_in + link_to(l, :overwrite_params => {:prefix => l}) + tag_out 
    978989          else 
    979             res << link_to(l, :overwrite_params => {:lang   => l}) 
     990            res << tag_in + link_to(l, :overwrite_params => {:lang   => l}) + tag_out 
    980991          end 
    981992        end 
    982993      end 
    983       res.join(' | ') 
     994      res.join(opts[:join] || ' | ') 
    984995    end 
    985996  end 
  • trunk/lib/parser/lib/rules/zafu.rb

    r560 r591  
    8080     
    8181    def r_ignore 
    82       super 
    8382      @html_tag_done = true 
    84       "" 
    85     end 
     83      '' 
     84    end 
     85     
     86    alias r_ r_ignore 
    8687     
    8788    def r_rename_asset 
     
    247248      # puts "TAG(#{@method}): [#{@text}]" 
    248249      if @text =~ /\A<r:([\w_]+)([^>]*?)(\/?)>/ 
    249         # puts "RTAG:#{$~.to_a.inspect}}" # ztag 
     250        # puts "RTAG:#{$~.to_a.inspect}" # ztag 
    250251        eat $& 
    251252        opts.merge!(:method=>$1, :params=>$2) 
    252253        opts.merge!(:text=>'') if $3 != '' 
    253254        make(:void, opts) 
    254       elsif @text =~ /\A<(\w+)([^>]*?)do\s*=('|")([^\3]*?[^\\])\3([^>]*?)(\/?)>/ 
    255         # puts "DO:[#{$&}]}" # do tag 
     255      elsif @text =~ /\A<(\w+)([^>]*?)do\s*=('([^>]*?[^\\]|)'|"([^>]*?[^\\]|)")([^>]*?)(\/?)>/ 
     256        # puts "DO:#{$~.to_a.inspect}" # do tag 
    256257        eat $& 
    257         opts.merge!(:method=>$4, :html_tag=>$1, :html_tag_params=>$2, :params=>$5
    258         opts.merge!(:text=>'') if $6 != '' 
     258        opts.merge!(:method=>($4||$5), :html_tag=>$1, :html_tag_params=>$2, :params=>$6
     259        opts.merge!(:text=>'') if $7 != '' 
    259260        make(:void, opts) 
    260261      elsif @end_tag && @text =~ /\A<#{@end_tag}([^>]*?)(\/?)>/ 
    261         # puts "SAME:[#{$&}]}" # simple html tag same as end_tag 
     262        # puts "SAME:#{$~.to_a.inspect}" # simple html tag same as end_tag 
    262263        flush $& 
    263264        @end_tag_count += 1 unless $2 == '/' 
    264265      elsif @text =~ /\A<(link|img|script)/ 
    265         # puts "HTML:[#{$&}]}" # html 
     266        # puts "HTML:[#{$&}]" # html 
    266267        make(:asset) 
    267268      elsif @text =~ /\A[^>]*?>/ 
  • trunk/lib/parser/lib/rules/zena.rb

    r590 r591  
    1 class ActiveRecord::Base 
    2   @@_zafu_readable ||= {} # defined for each class 
    3   @@_zafu_readable_attributes ||= {} # full list with inherited attributes 
     1begin 
     2  class ActiveRecord::Base 
     3    @@_zafu_readable ||= {} # defined for each class 
     4    @@_zafu_readable_attributes ||= {} # full list with inherited attributes 
    45   
    5   def self.zafu_readable(*list) 
    6     @@_zafu_readable[self] ||= [] 
    7     @@_zafu_readable[self] = (@@_zafu_readable[self] + list.map{|l| l.to_s}).uniq 
     6    def self.zafu_readable(*list) 
     7      @@_zafu_readable[self] ||= [] 
     8      @@_zafu_readable[self] = (@@_zafu_readable[self] + list.map{|l| l.to_s}).uniq 
     9    end 
     10   
     11    def self.zafu_readable_attributes 
     12      @@_zafu_readable_attributes[self] ||= if superclass == ActiveRecord::Base 
     13        @@_zafu_readable[self] || [] 
     14      else 
     15        (superclass.zafu_readable_attributes + (@@_zafu_readable[self] || [])).uniq.sort 
     16      end 
     17    end 
     18   
     19    def self.zafu_readable?(sym) 
     20      if sym.to_s =~ /(.*_for)_zips$/ 
     21      return true if defined_role[$1] 
     22      elsif sym.to_s =~ /(.*)_zips$/   
     23        return true if defined_role[$1.pluralize] 
     24      elsif sym.to_s =~ /(.*)_zip$/ 
     25        return true if defined_role[$1] 
     26      end 
     27      self.zafu_readable_attributes.include?(sym.to_s) 
     28    end 
     29   
     30    def zafu_read(sym) 
     31      return "'#{sym}' not readable" unless self.class.zafu_readable?(sym) 
     32      self.send(sym) 
     33    end 
    834  end 
    9    
    10   def self.zafu_readable_attributes 
    11     @@_zafu_readable_attributes[self] ||= if superclass == ActiveRecord::Base 
    12       @@_zafu_readable[self] || [] 
    13     else 
    14       (superclass.zafu_readable_attributes + (@@_zafu_readable[self] || [])).uniq.sort 
    15     end 
    16   end 
    17    
    18   def self.zafu_readable?(sym) 
    19     if sym.to_s =~ /(.*_for)_zips$/ 
    20     return true if defined_role[$1] 
    21     elsif sym.to_s =~ /(.*)_zips$/   
    22       return true if defined_role[$1.pluralize] 
    23     elsif sym.to_s =~ /(.*)_zip$/ 
    24       return true if defined_role[$1] 
    25     end 
    26     self.zafu_readable_attributes.include?(sym.to_s) 
    27   end 
    28    
    29   def zafu_read(sym) 
    30     return "'#{sym}' not readable" unless self.class.zafu_readable?(sym) 
    31     self.send(sym) 
    32   end 
     35rescue NameError 
     36  puts "Testing out of Rails, ActiveRecord uninitialized." 
    3337end 
    3438 
     
    4246          class_eval <<-END 
    4347            def r_#{name} 
    44               "<%= #{name}(:node=>\#{node}) %>" 
     48              "<%= #{name}(:node=>\#{node}\#{params_to_erb(@params)}) %>" 
    4549            end 
    4650          END 
  • trunk/lib/parser/test/parser_test.rb

    r560 r591  
    4444  testfile :zafu, :zafu_asset, :zafu_insight, :zazen 
    4545  def test_single 
    46     do_test('zafu', 'include_part_far_away') 
     46    do_test('zafu', 'ignore_do_empty') 
    4747  end 
    4848   
  • trunk/lib/parser/test/zafu.yml

    r560 r591  
    1414  src: "<div class='test'><p>some <i>funny</i> text</p></div>" 
    1515  res: "<div class='test'><p>some <i>funny</i> text</p></div>" 
     16 
     17ignore_tag: 
     18  src: "there is <li do='ignore'>delete me</li>nothing" 
     19  res: "there is nothing" 
     20 
     21ignore_do_empty: 
     22  src: "there is <li do=''>delete me</li>nothing left" 
     23  res: "there is nothing left" 
    1624 
    1725hello_skip_content: 
  • trunk/test/helpers/basic.yml

    r590 r591  
    225225  src: "<div id='lang' do='lang_links'><a>en</a> | <b>fr</b></div>" 
    226226  tem: "<div id='lang'><%= lang_links(:node=>@node) %></div>" 
    227   res: "/<div id='lang'><b>en.*\|.*test_render.*=fr/" 
     227  res: "/<div id='lang'><em>en.*\|.*test_render.*=fr/" 
    228228 
    229229show_path: