Changeset 1004

Show
Ignore:
Timestamp:
2008-05-23 13:04:01 (8 months ago)
Author:
gaspard
Message:

Added support for multiple tz definitions alternative: <r:show date='created_at' format='%H:%M' time_zone='[d_tz]' time_zone='Europe/Zurich'/>

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/parser/lib/rules/zena.rb

    r1003 r1004  
    217217        tz = '' 
    218218        if tz_name = @params[:time_zone] 
    219           if tz_name =~ /^\[(\w+)\]$/ 
    220             tz = ", #{node_attribute($1)}" 
    221           else 
    222             begin 
    223               TZInfo::Timezone.get(tz_name) 
    224             rescue TZInfo::InvalidTimezoneIdentifier 
    225               return parser_error("invalid timezone #{tz_name.inspect}") 
     219          tz_list = @params.reject {|k,v| !(k.to_s =~ /^time_zone\d*$/)}.to_a.sort {|a,b| a[0].to_s <=> b[0].to_s }.map do |k,tz_name| 
     220            if tz_name =~ /^\[(\w+)\]$/ 
     221              node_attribute($1) 
     222            else 
     223              begin 
     224                TZInfo::Timezone.get(tz_name) 
     225              rescue TZInfo::InvalidTimezoneIdentifier 
     226                return parser_error("invalid timezone #{tz_name.inspect}") 
     227              end 
     228              tz_name.inspect 
    226229            end 
    227             tz = ", #{tz_name.inspect}" 
    228           end 
     230          end 
     231          tz = ", #{tz_list.join(' || ')}" 
    229232        end 
    230233        attribute_method = "format_date(#{node_attribute(@params[:date])}, #{format.inspect}#{tz})" 
  • trunk/lib/parser/test/zazen.yml

    r999 r1004  
    139139  res: "<p>download: [make_link id:|30_std.data| title:|small|], [make_link id:|30.data| title:|full|].</p>" 
    140140 
     141textile_link: 
     142  src: "See \"trac\":http://dev.zenadmin.org/report/3." 
     143  res: "<" 
     144 
    141145wiki_link: 
    142146  src: "why use ?ruby? ?" 
  • trunk/test/fixtures/dyn_attributes.yml

    r865 r1004  
    3030  id:            5 
    3131  owner_id:      30 
     32  owner_table:   'versions' 
    3233  key:           'assigned' 
    3334  value:         'gaspard' 
     35 
     36cleanWater_en_d_tz: 
     37  id:             6 
     38  owner_id:       11 
     39  owner_table:   'versions' 
     40  key:            'tz' 
     41  value:          'Asia/Jakarta' 
  • trunk/test/helpers/zena_parser/basic.yml

    r1003 r1004  
    798798  res: "01:00 / 07:00" 
    799799 
     800date_tz_field: 
     801  context: 
     802    node: 'projects' 
     803  src: "<r:pages do='each' join=', '><r:show attr='name'/>: <r:show date='created_at' format='%H:%M' time_zone='[d_tz]' time_zone='Europe/Zurich'/> | <r:show date='created_at' format='%H:%M' time_zone='UTC'/></r:pages>" 
     804  res: "cleanWater: 07:00 | 00:00, wiki: 01:00 | 00:00" 
     805 
    800806dictionary_fr: 
    801807  context: