zafu 0.7.6 → 0.7.7
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -1
- data/lib/zafu/info.rb +1 -1
- data/lib/zafu/markup.rb +11 -3
- data/lib/zafu/process/ajax.rb +11 -9
- data/lib/zafu/process/conditional.rb +1 -0
- data/lib/zafu/process/ruby_less_processing.rb +19 -2
- data/test/markup_test.rb +10 -0
- data/test/zafu/meta.yml +12 -3
- data/zafu.gemspec +61 -64
- metadata +8 -9
- data/.gitignore +0 -2
data/History.txt
CHANGED
data/lib/zafu/info.rb
CHANGED
data/lib/zafu/markup.rb
CHANGED
@@ -4,7 +4,7 @@ module Zafu
|
|
4
4
|
# A Markup object is used to hold information on the tag used (<li>), it's parameters (.. class='xxx') and
|
5
5
|
# indentation.
|
6
6
|
class Markup
|
7
|
-
EMPTY_TAGS = %w{meta input link}
|
7
|
+
EMPTY_TAGS = %w{meta input link img}
|
8
8
|
STEAL_PARAMS = {
|
9
9
|
'link' => [:href, :charset, :rel, :type, :media, :rev, :target],
|
10
10
|
'script' => [:type, :charset, :defer],
|
@@ -63,10 +63,14 @@ module Zafu
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def initialize(tag)
|
66
|
+
def initialize(tag, params = nil)
|
67
67
|
@done = false
|
68
68
|
@tag = tag
|
69
|
-
|
69
|
+
if params
|
70
|
+
self.params = params
|
71
|
+
else
|
72
|
+
@params = OrderedHash.new
|
73
|
+
end
|
70
74
|
@dyn_params = OrderedHash.new
|
71
75
|
end
|
72
76
|
|
@@ -241,6 +245,10 @@ module Zafu
|
|
241
245
|
(@space_before || '') + res + (@space_after || '')
|
242
246
|
end
|
243
247
|
|
248
|
+
def to_s
|
249
|
+
wrap(nil)
|
250
|
+
end
|
251
|
+
|
244
252
|
def steal_keys
|
245
253
|
(STEAL_PARAMS[@tag] || []) + STEAL_PARAMS[:other]
|
246
254
|
end
|
data/lib/zafu/process/ajax.rb
CHANGED
@@ -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}.#{
|
36
|
+
out "<% if (#{var} = #{finder[:method]}) || (#{node}.#{finder[:class].first <= 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
|
|
@@ -55,12 +55,10 @@ module Zafu
|
|
55
55
|
)
|
56
56
|
|
57
57
|
# Render 'else' clauses
|
58
|
-
|
59
|
-
out wrap(
|
60
|
-
expand_with(
|
58
|
+
else_clauses = expand_with(
|
61
59
|
:in_if => true,
|
62
|
-
:only => ['elsif', 'else']
|
63
|
-
|
60
|
+
:only => ['elsif', 'else'],
|
61
|
+
:markup => @markup
|
64
62
|
)
|
65
63
|
|
66
64
|
# 2. Save 'each' template
|
@@ -270,7 +268,8 @@ module Zafu
|
|
270
268
|
if ['context', 'each', 'block'].include?(method)
|
271
269
|
# do not propagate 'form',etc up
|
272
270
|
all.reject do |k,v|
|
273
|
-
|
271
|
+
# FIXME: Zena leakage
|
272
|
+
['form','unlink', 'count'].include?(k)
|
274
273
|
end
|
275
274
|
elsif ['if', 'case'].include?(method) || (method =~ /^[A-Z]/)
|
276
275
|
# conditional
|
@@ -338,6 +337,9 @@ module Zafu
|
|
338
337
|
['block', 'drop'].include?(each_block.single_child_method)
|
339
338
|
end
|
340
339
|
|
340
|
+
def context_for_partial(cont)
|
341
|
+
context_without_vars.merge(cont)
|
342
|
+
end
|
341
343
|
private
|
342
344
|
|
343
345
|
# Find a block to update on the page
|
@@ -354,7 +356,7 @@ module Zafu
|
|
354
356
|
end
|
355
357
|
|
356
358
|
def store_block(block, cont = {})
|
357
|
-
cont =
|
359
|
+
cont, prefix = context_for_partial(cont)
|
358
360
|
|
359
361
|
# Create new node context
|
360
362
|
node = cont[:node].as_main(ActiveRecord::Base)
|
@@ -369,7 +371,7 @@ module Zafu
|
|
369
371
|
|
370
372
|
# We overwrite all context: no merge.
|
371
373
|
with_context(cont, false) do
|
372
|
-
template = expand_block(block)
|
374
|
+
template = prefix.to_s + expand_block(block)
|
373
375
|
end
|
374
376
|
|
375
377
|
out helper.save_erb_to_url(template, cont[:saved_template])
|
@@ -94,7 +94,9 @@ module Zafu
|
|
94
94
|
end
|
95
95
|
|
96
96
|
def get_attribute_or_eval(use_string_block = true)
|
97
|
-
if attribute = @params[:
|
97
|
+
if attribute = @params[:date]
|
98
|
+
return parser_continue("'date' parameter is deprecated. Please use 'attr' or 'eval'.")
|
99
|
+
elsif attribute = @params[:attr]
|
98
100
|
code = "this.#{attribute}"
|
99
101
|
elsif code = @params[:eval] || @params[:test]
|
100
102
|
elsif text = @params[:text]
|
@@ -110,19 +112,32 @@ module Zafu
|
|
110
112
|
return parser_continue(err.message, code)
|
111
113
|
end
|
112
114
|
|
115
|
+
# Pass default values as parameters in @context as :param_XXXX
|
116
|
+
def r_default
|
117
|
+
cont = {}
|
118
|
+
@params.each do |k, v|
|
119
|
+
cont[:"params_#{k}"] = v
|
120
|
+
end
|
121
|
+
expand_with cont
|
122
|
+
end
|
123
|
+
|
113
124
|
private
|
114
125
|
# Extract arguments from params
|
115
126
|
def extract_from_params(*keys)
|
116
127
|
res = []
|
117
128
|
|
118
129
|
keys.each do |key|
|
119
|
-
next unless value =
|
130
|
+
next unless value = param(key.to_sym)
|
120
131
|
res << ":#{key} => #{RubyLess.translate_string(self, value)}"
|
121
132
|
end
|
122
133
|
|
123
134
|
res.empty? ? nil : res
|
124
135
|
end
|
125
136
|
|
137
|
+
def param(key, default = nil)
|
138
|
+
@params[key] || @context[:"params_#{key}"] || default
|
139
|
+
end
|
140
|
+
|
126
141
|
# Method resolution. The first matching method is returned. Order of evaluation is
|
127
142
|
# 1. find node_context (@page, @image, self)
|
128
143
|
# 2. set var (set_xxx = '...')
|
@@ -217,6 +232,8 @@ module Zafu
|
|
217
232
|
else
|
218
233
|
out "<%= #{res} %>"
|
219
234
|
end
|
235
|
+
elsif res.klass == Boolean
|
236
|
+
expand_if(res)
|
220
237
|
elsif @blocks.empty?
|
221
238
|
out "<%= #{res} %>"
|
222
239
|
elsif res.could_be_nil?
|
data/test/markup_test.rb
CHANGED
@@ -296,6 +296,16 @@ class MarkupTest < Test::Unit::TestCase
|
|
296
296
|
end
|
297
297
|
end
|
298
298
|
end
|
299
|
+
|
300
|
+
context 'To string' do
|
301
|
+
subject do
|
302
|
+
Markup.new('img', :src => '/foo/bar.png')
|
303
|
+
end
|
304
|
+
|
305
|
+
should 'render' do
|
306
|
+
assert_equal "<img src='/foo/bar.png'/>", subject.to_s
|
307
|
+
end
|
308
|
+
end
|
299
309
|
|
300
310
|
context 'Wrapping some text' do
|
301
311
|
setup do
|
data/test/zafu/meta.yml
CHANGED
@@ -1,12 +1,17 @@
|
|
1
1
|
some_template:
|
2
|
-
src: "<div id='a'>a</div><div id='b'>b</div>"
|
3
|
-
tem: "<div id='a'>a</div><div id='b'
|
2
|
+
src: "<div id='a'>a</div><div id='b' do='link'>b</div>"
|
3
|
+
tem: "<div id='a'>a</div><div id='b'><%= make_link(@node) %></div>"
|
4
4
|
|
5
5
|
include_with_part:
|
6
6
|
# part 'a' is moved around
|
7
7
|
src: "<r:include template='/some/template'><r:with part='a'/><r:with part='b'>new b:<r:include template='/some/template' part='a'/></r:with></r:include>"
|
8
8
|
tem: "<div id='b'>new b:<div id='a'>a</div></div>"
|
9
9
|
|
10
|
+
include_with_part_change_class:
|
11
|
+
# part 'a' is moved around
|
12
|
+
src: "<r:include template='/some/template'><div class='foobar' do='with' part='b'>new b</div></r:include>"
|
13
|
+
tem: "<div id='a'>a</div><div id='b' class='foobar'><%= make_link(@node) %></div>"
|
14
|
+
|
10
15
|
include_missing_part:
|
11
16
|
# part 'a' is moved around
|
12
17
|
src: "<r:include template='/some/template' part='bad'/>"
|
@@ -14,4 +19,8 @@ include_missing_part:
|
|
14
19
|
|
15
20
|
missing_template:
|
16
21
|
src: "<r:include template='Foo'/>"
|
17
|
-
tem: "/template 'Foo' not found/"
|
22
|
+
tem: "/template 'Foo' not found/"
|
23
|
+
|
24
|
+
include_part:
|
25
|
+
src: "xxx <r:include template='/some/template' part='b'/>"
|
26
|
+
tem: "xxx <div id='b'><%= make_link(@node) %></div>"
|
data/zafu.gemspec
CHANGED
@@ -1,91 +1,88 @@
|
|
1
1
|
# Generated by jeweler
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{zafu}
|
8
|
-
s.version = "0.7.
|
8
|
+
s.version = "0.7.7"
|
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-
|
12
|
+
s.date = %q{2011-04-15}
|
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 = [
|
16
16
|
"README.rdoc"
|
17
17
|
]
|
18
18
|
s.files = [
|
19
|
-
".
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
"zafu.gemspec"
|
19
|
+
"History.txt",
|
20
|
+
"README.rdoc",
|
21
|
+
"Rakefile",
|
22
|
+
"lib/zafu.rb",
|
23
|
+
"lib/zafu/all.rb",
|
24
|
+
"lib/zafu/compiler.rb",
|
25
|
+
"lib/zafu/controller_methods.rb",
|
26
|
+
"lib/zafu/handler.rb",
|
27
|
+
"lib/zafu/info.rb",
|
28
|
+
"lib/zafu/markup.rb",
|
29
|
+
"lib/zafu/mock_helper.rb",
|
30
|
+
"lib/zafu/node_context.rb",
|
31
|
+
"lib/zafu/ordered_hash.rb",
|
32
|
+
"lib/zafu/parser.rb",
|
33
|
+
"lib/zafu/parsing_rules.rb",
|
34
|
+
"lib/zafu/process/ajax.rb",
|
35
|
+
"lib/zafu/process/conditional.rb",
|
36
|
+
"lib/zafu/process/context.rb",
|
37
|
+
"lib/zafu/process/forms.rb",
|
38
|
+
"lib/zafu/process/html.rb",
|
39
|
+
"lib/zafu/process/ruby_less_processing.rb",
|
40
|
+
"lib/zafu/security.rb",
|
41
|
+
"lib/zafu/template.rb",
|
42
|
+
"lib/zafu/test_helper.rb",
|
43
|
+
"lib/zafu/view_methods.rb",
|
44
|
+
"rails/init.rb",
|
45
|
+
"script/console",
|
46
|
+
"script/destroy",
|
47
|
+
"script/generate",
|
48
|
+
"test/markup_test.rb",
|
49
|
+
"test/mock/classes.rb",
|
50
|
+
"test/mock/core_ext.rb",
|
51
|
+
"test/mock/params.rb",
|
52
|
+
"test/mock/process.rb",
|
53
|
+
"test/mock/test_compiler.rb",
|
54
|
+
"test/node_context_test.rb",
|
55
|
+
"test/ordered_hash_test.rb",
|
56
|
+
"test/ruby_less_test.rb",
|
57
|
+
"test/test_helper.rb",
|
58
|
+
"test/zafu/ajax.yml",
|
59
|
+
"test/zafu/asset.yml",
|
60
|
+
"test/zafu/basic.yml",
|
61
|
+
"test/zafu/markup.yml",
|
62
|
+
"test/zafu/meta.yml",
|
63
|
+
"test/zafu/security.yml",
|
64
|
+
"test/zafu_test.rb",
|
65
|
+
"zafu.gemspec"
|
67
66
|
]
|
68
67
|
s.homepage = %q{http://zenadmin.org/zafu}
|
69
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
70
68
|
s.require_paths = ["lib"]
|
71
|
-
s.rubygems_version = %q{1.
|
69
|
+
s.rubygems_version = %q{1.6.1}
|
72
70
|
s.summary = %q{Provides a powerful templating language based on xhtml for rails}
|
73
71
|
s.test_files = [
|
74
72
|
"test/markup_test.rb",
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
73
|
+
"test/mock/classes.rb",
|
74
|
+
"test/mock/core_ext.rb",
|
75
|
+
"test/mock/params.rb",
|
76
|
+
"test/mock/process.rb",
|
77
|
+
"test/mock/test_compiler.rb",
|
78
|
+
"test/node_context_test.rb",
|
79
|
+
"test/ordered_hash_test.rb",
|
80
|
+
"test/ruby_less_test.rb",
|
81
|
+
"test/test_helper.rb",
|
82
|
+
"test/zafu_test.rb"
|
85
83
|
]
|
86
84
|
|
87
85
|
if s.respond_to? :specification_version then
|
88
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
89
86
|
s.specification_version = 3
|
90
87
|
|
91
88
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
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:
|
5
|
-
prerelease:
|
4
|
+
hash: 13
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 7
|
10
|
+
version: 0.7.7
|
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-
|
18
|
+
date: 2011-04-15 00:00:00 +02:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -73,7 +73,6 @@ extensions: []
|
|
73
73
|
extra_rdoc_files:
|
74
74
|
- README.rdoc
|
75
75
|
files:
|
76
|
-
- .gitignore
|
77
76
|
- History.txt
|
78
77
|
- README.rdoc
|
79
78
|
- Rakefile
|
@@ -126,8 +125,8 @@ homepage: http://zenadmin.org/zafu
|
|
126
125
|
licenses: []
|
127
126
|
|
128
127
|
post_install_message:
|
129
|
-
rdoc_options:
|
130
|
-
|
128
|
+
rdoc_options: []
|
129
|
+
|
131
130
|
require_paths:
|
132
131
|
- lib
|
133
132
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -151,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
150
|
requirements: []
|
152
151
|
|
153
152
|
rubyforge_project:
|
154
|
-
rubygems_version: 1.
|
153
|
+
rubygems_version: 1.6.1
|
155
154
|
signing_key:
|
156
155
|
specification_version: 3
|
157
156
|
summary: Provides a powerful templating language based on xhtml for rails
|
data/.gitignore
DELETED