zafu 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.7.6
2
+
3
+ * Enhancements
4
+ * Enabled empty do (ignore method)
5
+ * Fixed white-space parsing (replaced all <% .. -%> for <% .. %>)
6
+
1
7
  == 0.7.5 2011-01-15
2
8
 
3
9
  * Enhancements
data/lib/zafu/info.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Zafu
2
- VERSION = '0.7.5'
2
+ VERSION = '0.7.6'
3
3
  end
4
4
 
data/lib/zafu/parser.rb CHANGED
@@ -13,9 +13,9 @@ module Zafu
13
13
  # 'after_wrap' is called by the 'wrap' method from within the method handler, 'after_process' is called
14
14
  # at the very end. Example:
15
15
  #
16
- # <% if var = Node.all -%> | <---
17
- # <li>...</li> <--- content for after_wrap | <--- content for after_process
18
- # <% end -%> | <---
16
+ # <% if var = Node.all %> | <---
17
+ # <li>...</li> <--- content for after_wrap | <--- content for after_process
18
+ # <% end %> | <---
19
19
  #
20
20
 
21
21
 
@@ -50,13 +50,16 @@ module Zafu
50
50
  if @params =~ /\A([^>]*?)do\s*=('|")([^\2]*?[^\\])\2([^>]*)\Z/
51
51
  #puts $~.to_a.inspect
52
52
  # we have a sub 'do'
53
+ params = $1
54
+ sub_params = $4
55
+ sub_method = $3.gsub("\\#{$2}", $2)
53
56
 
54
- @params = Markup.parse_params($1)
57
+ @params = Markup.parse_params(params)
55
58
 
56
59
  # We need this flag to detect cases cases like <r:with part='list' do='other list finder'/>
57
60
  @sub_do = true
58
61
 
59
- opts = {:method=>$3, :params=>$4}
62
+ opts = {:method => sub_method, :params => sub_params}
60
63
 
61
64
  # the matching zafu tag will be parsed by the last 'do', we must inform it to halt properly :
62
65
  opts[:end_tag] = @end_tag
@@ -193,11 +196,12 @@ module Zafu
193
196
  opts.merge!(:text=>'') if $3 != ''
194
197
  make(:void, opts)
195
198
  #elsif @text =~ /\A<(\w+)([^>]*?)do\s*=('([^>]*?[^\\]|)'|"([^>]*?[^\\]|)")([^>]*?)(\/?)>/
196
- elsif @text =~ /\A<(\w+)([^>]*?)do\s*=('|")([^\3]*?[^\\])\3([^>]*?)(\/?)>/
199
+ elsif @text =~ /\A<(\w+)([^>]*?)do\s*=('|")([^\3]*?[^\\]|)\3([^>]*?)(\/?)>/
197
200
  #puts "DO:#{$~.to_a.inspect}" # do tag
198
201
  eat $&
199
- opts.merge!(:method=> $4, :html_tag=>$1, :html_tag_params=>$2, :params=>$5)
200
- opts.merge!(:text=>'') if $6 != ''
202
+ reg = $~
203
+ opts.merge!(:method=> reg[4].gsub("\\#{reg[3]}", reg[3]), :html_tag=>reg[1], :html_tag_params=>reg[2], :params=>reg[5])
204
+ opts.merge!(:text=>'') if reg[6] != ''
201
205
  make(:void, opts)
202
206
  elsif @options[:form] && @text =~ /\A<(input|select|textarea|form)([^>]*?)(\/?)>/
203
207
  eat $&
@@ -33,7 +33,7 @@ module Zafu
33
33
 
34
34
  # 1. Render inline
35
35
  # assign [] to var
36
- out "<% if (#{var} = #{finder[:method]}) || (#{node}.#{node.will_be?(Comment) ? "can_comment?" : "can_write?"} && #{var}=[]) -%>"
36
+ out "<% if (#{var} = #{finder[:method]}) || (#{node}.#{node.will_be?(Comment) ? "can_comment?" : "can_write?"} && #{var}=[]) %>"
37
37
  # The list is not empty or we have enough rights to add new elements.
38
38
  set_dom_prefix
39
39
 
@@ -76,7 +76,7 @@ module Zafu
76
76
 
77
77
  store_block(form_block, cont)
78
78
  end
79
- out "<% end -%>"
79
+ out "<% end %>"
80
80
  else
81
81
  super
82
82
  end
@@ -101,17 +101,17 @@ module Zafu
101
101
  #else
102
102
  # # no form, render, edit and add are not ajax
103
103
  # if descendant('add') || descendant('add_document')
104
- # out "<% if (#{list_var} = #{list_finder}) || (#{node}.#{node.will_be?(Comment) ? "can_comment?" : "can_write?"} && #{list_var}=[]) -%>"
104
+ # out "<% if (#{list_var} = #{list_finder}) || (#{node}.#{node.will_be?(Comment) ? "can_comment?" : "can_write?"} && #{list_var}=[]) %>"
105
105
  # elsif list_finder != 'nil'
106
- # out "<% if #{list_var} = #{list_finder} -%>"
106
+ # out "<% if #{list_var} = #{list_finder} %>"
107
107
  # else
108
- # out "<% if nil -%>"
108
+ # out "<% if nil %>"
109
109
  # end
110
110
  #
111
111
  #
112
112
  # out render_html_tag(expand_with(:list=>list_var, :in_if => false))
113
113
  # out expand_with(:in_if=>true, :only=>['elsif', 'else'], :html_tag => @html_tag, :html_tag_params => @html_tag_params)
114
- # out "<% end -%>"
114
+ # out "<% end %>"
115
115
  #end
116
116
  end
117
117
 
@@ -159,7 +159,7 @@ module Zafu
159
159
 
160
160
  link = wrap(make_link(:default_text => _('edit'), :update => each_block, :action => 'edit'))
161
161
 
162
- out "<% if #{node}.can_write? -%>#{link}<% end -%>"
162
+ out "<% if #{node}.can_write? %>#{link}<% end %>"
163
163
  end
164
164
 
165
165
  #if @context[:template_url]
@@ -179,9 +179,9 @@ module Zafu
179
179
  return '' if @context[:make_form]
180
180
 
181
181
  if node.will_be?(Comment)
182
- out "<% if #{node.up(Node)}.can_comment? -%>"
182
+ out "<% if #{node.up(Node)}.can_comment? %>"
183
183
  else
184
- out "<% if #{node.up(Node)}.can_write? -%>"
184
+ out "<% if #{node.up(Node)}.can_write? %>"
185
185
  end
186
186
 
187
187
  unless descendant('add_btn')
@@ -216,9 +216,9 @@ module Zafu
216
216
  # FIXME: BUG if we set <r:form klass='Post'/> the user cannot select class with menu...
217
217
 
218
218
  # FIXME: inspect '@context[:form]' to see if it contains v_klass ?
219
- out "<% if #{new_node} = secure(Node) { Node.new_node('class' => '#{new_node.klass}') } -%>"
219
+ out "<% if #{new_node} = secure(Node) { Node.new_node('class' => '#{new_node.klass}') } %>"
220
220
  else
221
- out "<% if #{new_node} = #{new_node.class_name}.new -%>"
221
+ out "<% if #{new_node} = #{new_node.class_name}.new %>"
222
222
  end
223
223
 
224
224
  form_block = @context[:form]
@@ -236,13 +236,13 @@ module Zafu
236
236
  # Node context = new node
237
237
  :node => new_node
238
238
  )
239
- out "<% end -%>"
239
+ out "<% end %>"
240
240
  else
241
241
  # no ajax
242
242
  @markup.append_param(:class, 'btn_add') if @markup.tag
243
243
  out wrap(expand_with)
244
244
  end
245
- out "<% end -%>"
245
+ out "<% end %>"
246
246
  end
247
247
 
248
248
  def r_add_btn
@@ -41,10 +41,10 @@ module Zafu
41
41
  @markup.set_dyn_param(k, v)
42
42
  end
43
43
 
44
- out "<% elsif #{cond} -%>#{wrap(res)}" # do not propagate
44
+ out "<% elsif #{cond} %>#{wrap(res)}" # do not propagate
45
45
  else
46
46
  @markup.done = true # never wrap else/elsif clause
47
- out "<% elsif #{cond} -%>#{res}" # do not propagate
47
+ out "<% elsif #{cond} %>#{res}" # do not propagate
48
48
  end
49
49
  end
50
50
 
@@ -57,7 +57,7 @@ module Zafu
57
57
  # * +alt_markup+ - (optional) alternative markup to use for the 'else', 'elsif' clauses.
58
58
  def expand_if(condition, new_node_context = self.node, alt_markup = @markup)
59
59
  res = ""
60
- res << "<% if #{condition} -%>"
60
+ res << "<% if #{condition} %>"
61
61
 
62
62
  with_context(:node => new_node_context) do
63
63
  res << wrap(expand_with)
@@ -65,7 +65,7 @@ module Zafu
65
65
 
66
66
  only = method == 'case' ? %r{^[A-Z]|else|elsif|when} : %w{else elsif when}
67
67
  res << expand_with(:in_if => true, :only => only, :markup => alt_markup)
68
- res << "<% end -%>"
68
+ res << "<% end %>"
69
69
  res
70
70
  end
71
71
 
@@ -7,8 +7,8 @@ module Zafu
7
7
  def r_each
8
8
  if node.list_context?
9
9
  if @params[:alt_class] || @params[:join]
10
- out "<% #{var}_max_index = #{node}.size - 1 -%>" if @params[:alt_reverse]
11
- out "<% #{node}.each_with_index do |#{var},#{var}_index| -%>"
10
+ out "<% #{var}_max_index = #{node}.size - 1 %>" if @params[:alt_reverse]
11
+ out "<% #{node}.each_with_index do |#{var},#{var}_index| %>"
12
12
 
13
13
  if join = @params[:join]
14
14
  join = RubyLess.translate_string(self, join)
@@ -28,7 +28,7 @@ module Zafu
28
28
  @markup.tag ||= 'div'
29
29
  end
30
30
  else
31
- out "<% #{node}.each do |#{var}| -%>"
31
+ out "<% #{node}.each do |#{var}| %>"
32
32
  end
33
33
 
34
34
 
@@ -49,7 +49,7 @@ module Zafu
49
49
 
50
50
  out wrap(expand_with)
51
51
  end
52
- out "<% end -%>"
52
+ out "<% end %>"
53
53
  else
54
54
  out expand_with
55
55
  end
@@ -104,7 +104,7 @@ module Zafu
104
104
  end
105
105
  else
106
106
  res = ''
107
- res << "<% #{var} = #{finder[:method]} -%>"
107
+ res << "<% #{var} = #{finder[:method]} %>"
108
108
  open_node_context(finder, :node => node.move_to(var, finder[:class], finder), :form => nil) do
109
109
  res << wrap(expand_with)
110
110
  end
@@ -115,7 +115,7 @@ module Zafu
115
115
  # f.xxx
116
116
  yield(opts.merge(:in_form => true))
117
117
  # close form
118
- out opts[:form_helper] ? "<% end -%>" : '</form>'
118
+ out opts[:form_helper] ? "<% end %>" : '</form>'
119
119
  end
120
120
 
121
121
  def form_error_messages(f)
@@ -116,6 +116,12 @@ module Zafu
116
116
  expand_with
117
117
  end
118
118
 
119
+ def steal_and_eval_html_params_for(markup, params)
120
+ markup.steal_keys.each do |key|
121
+ next unless value = params.delete(key)
122
+ append_markup_attr(markup, key, value)
123
+ end
124
+ end
119
125
  #def r_form
120
126
  # res = "<#{@markup.tag}#{params_to_html(@params)}"
121
127
  # @markup.done = true
data/test/zafu/basic.yml CHANGED
@@ -1,3 +1,15 @@
1
+ use_block_as_param:
2
+ src: "<r:raw>this and thatn</r:raw>"
3
+ tem: "<%= raw(\"this and thatn\") %>"
4
+
1
5
  out_post:
2
6
  src: "<r:link post_string='Monday'/>"
3
- tem: "<%= make_link(@node) %>Monday"
7
+ tem: "<%= make_link(@node) %>Monday"
8
+
9
+ empty_do:
10
+ src: "this is <li do=''>not</li>good"
11
+ tem: "this is good"
12
+
13
+ do_with_escaped_quote:
14
+ src: "<li do='raw(\'blah\')'>blah</li>"
15
+ tem: "<li><%= raw(\"blah\") %></li>"
data/test/zafu/markup.yml CHANGED
@@ -1,4 +1,4 @@
1
1
 
2
2
  double_do_should_not_propagate_markup:
3
3
  src: "<div id='top' do='root' do='link'/>"
4
- tem: "<% if var1 = @node.root -%><div id='top'><%= make_link(var1) %></div><% end -%>"
4
+ tem: "<% if var1 = @node.root %><div id='top'><%= make_link(var1) %></div><% end %>"
data/test/zafu_test.rb CHANGED
@@ -15,9 +15,12 @@ class ZafuTest < Test::Unit::TestCase
15
15
  include RubyLess
16
16
  safe_method :hello => String
17
17
  safe_method :one => {:class => String, :method => "dummy_one"}
18
+ safe_context :friend => Dummy
18
19
  end
19
20
  safe_method :dum => Dummy
21
+ safe_method :list => [Dummy]
20
22
  safe_method :dum2 => {:class => Dummy, :nil => true}
23
+ safe_method [:raw, String] => String
21
24
 
22
25
  context 'Compilation in a model' do
23
26
  setup do
@@ -33,12 +36,12 @@ class ZafuTest < Test::Unit::TestCase
33
36
  end
34
37
 
35
38
  should 'change node context by following safe_method types' do
36
- assert_equal '<% var1 = dum -%><%= var1.hello %>', zafu_erb("<r:dum do='hello'/>")
39
+ assert_equal '<% var1 = dum %><%= var1.hello %>', zafu_erb("<r:dum do='hello'/>")
37
40
  end
38
41
 
39
42
  context 'that can be nil' do
40
43
  should 'wrap context in if' do
41
- assert_equal '<% if var1 = dum2 -%><%= var1.hello %><% end -%>', zafu_erb("<r:dum2 do='hello'/>")
44
+ assert_equal '<% if var1 = dum2 %><%= var1.hello %><% end %>', zafu_erb("<r:dum2 do='hello'/>")
42
45
  end
43
46
  end
44
47
  end
data/zafu.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{zafu}
8
- s.version = "0.7.5"
8
+ s.version = "0.7.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gaspard Bucher"]
12
- s.date = %q{2011-01-15}
12
+ s.date = %q{2011-02-11}
13
13
  s.description = %q{Provides a powerful templating language based on xhtml for rails}
14
14
  s.email = %q{gaspard@teti.ch}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zafu
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
- - 5
10
- version: 0.7.5
9
+ - 6
10
+ version: 0.7.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gaspard Bucher
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-01-15 00:00:00 +01:00
18
+ date: 2011-02-11 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency