tagz 6.0.0 → 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +22 -0
- data/lib/tagz.rb +41 -32
- data/readme.erb +22 -0
- data/tagz.gemspec +1 -1
- data/test/tagz.rb +9 -10
- metadata +2 -2
data/README
CHANGED
@@ -97,6 +97,28 @@ URIS
|
|
97
97
|
http://rubyforge.org/projects/codeforpeople
|
98
98
|
|
99
99
|
HISTORY
|
100
|
+
7.0.0
|
101
|
+
- * IMPORTANT * NOT BACKWARD COMPATIBLE (thus version bump)
|
102
|
+
the tagz functionality itself has not changed, but the defaults for
|
103
|
+
excaping have! now tagz will escape attributes, but NOT content, in the
|
104
|
+
default mode. you can easily configure something else with
|
105
|
+
|
106
|
+
Tagz.escape!(:content => true, :attributes => true)
|
107
|
+
|
108
|
+
which would be like saying
|
109
|
+
|
110
|
+
Tagz.xml_mode!
|
111
|
+
|
112
|
+
or
|
113
|
+
|
114
|
+
Tagz.escape!(:content => false, :attributes => true)
|
115
|
+
|
116
|
+
which would be like saying
|
117
|
+
|
118
|
+
Tagz.html_mode!
|
119
|
+
|
120
|
+
to repeat, the default is 'Tagz.html_mode!'
|
121
|
+
|
100
122
|
6.0.0
|
101
123
|
- reorganize lib to avoid dumping a few constants into the includee - aka
|
102
124
|
don't absolutely minimize namespace pollution. there is now reason to
|
data/lib/tagz.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
unless defined? Tagz
|
2
2
|
|
3
3
|
module Tagz
|
4
|
-
def Tagz.version() '
|
4
|
+
def Tagz.version() '7.0.0' end
|
5
5
|
|
6
6
|
private
|
7
7
|
|
@@ -134,12 +134,11 @@ unless defined? Tagz
|
|
134
134
|
end
|
135
135
|
end
|
136
136
|
|
137
|
-
# escape
|
137
|
+
# escape utils
|
138
138
|
#
|
139
139
|
def Tagz.escapeHTML(*strings)
|
140
140
|
XChar.escape(strings.join)
|
141
141
|
end
|
142
|
-
|
143
142
|
def Tagz.escape(*strings)
|
144
143
|
XChar.escape(strings.join)
|
145
144
|
end
|
@@ -150,66 +149,75 @@ unless defined? Tagz
|
|
150
149
|
previous = @escape_attribute if defined?(@escape_attribute)
|
151
150
|
unless args.empty? and block.nil?
|
152
151
|
value = block ? block : args.shift
|
153
|
-
|
152
|
+
value = Escape if value==true
|
153
|
+
value = NoEscape if(value==false or value==nil)
|
154
|
+
@escape_attribute = value.to_proc
|
154
155
|
return previous
|
155
156
|
end
|
156
157
|
@escape_attribute
|
157
158
|
end
|
158
|
-
|
159
159
|
def Tagz.escape_attributes!(*args, &block)
|
160
160
|
Tagz.escape_attribute!(*args, &block)
|
161
161
|
end
|
162
|
-
|
163
162
|
def Tagz.escape_attribute(value)
|
164
163
|
@escape_attribute.call(value.to_s)
|
165
164
|
end
|
166
165
|
|
167
|
-
# default escape
|
168
|
-
#
|
169
|
-
escape_attribute!{|value| XChar.escape(value)}
|
170
|
-
|
171
166
|
# support for configuring content escaping
|
172
167
|
#
|
173
168
|
def Tagz.escape_content!(*args, &block)
|
174
169
|
previous = @escape_content if defined?(@escape_content)
|
175
170
|
unless args.empty? and block.nil?
|
176
171
|
value = block ? block : args.shift
|
177
|
-
|
172
|
+
value = Escape if value==true
|
173
|
+
value = NoEscape if(value==false or value==nil)
|
174
|
+
@escape_content = value.to_proc
|
178
175
|
return previous
|
179
176
|
end
|
180
177
|
@escape_content
|
181
178
|
end
|
182
|
-
|
183
179
|
def Tagz.escape_contents!(*args, &block)
|
184
180
|
Tagz.escape_content!(*args, &block)
|
185
181
|
end
|
186
|
-
|
187
182
|
def Tagz.escape_content(value)
|
188
183
|
@escape_content.call(value.to_s)
|
189
184
|
end
|
190
185
|
|
191
|
-
#
|
192
|
-
#
|
193
|
-
escape_content!{|value| XChar.escape(value)}
|
194
|
-
|
195
|
-
# make tagz escape nothing
|
186
|
+
# configure tagz escaping
|
196
187
|
#
|
188
|
+
def Tagz.escape!(options = {})
|
189
|
+
options = {:attributes => options, :content => options} unless options.is_a?(Hash)
|
190
|
+
escape_attributes = options[:attributes]||options['attributes']
|
191
|
+
escape_content = options[:content]||options['content']
|
192
|
+
Tagz.escape_attributes!(!!escape_attributes)
|
193
|
+
Tagz.escape_content!(!!escape_content)
|
194
|
+
end
|
197
195
|
def Tagz.i_know_what_the_hell_i_am_doing!
|
198
|
-
|
199
|
-
Tagz.escape_content! false
|
196
|
+
escape!(false)
|
200
197
|
end
|
201
|
-
|
202
|
-
# make tagz escape everything
|
203
|
-
#
|
204
198
|
def Tagz.i_do_not_know_what_the_hell_i_am_doing!
|
205
|
-
|
206
|
-
|
199
|
+
escape!(true)
|
200
|
+
end
|
201
|
+
def Tagz.xml_mode!
|
202
|
+
Tagz.escape!(
|
203
|
+
:attributes => true,
|
204
|
+
:content => true
|
205
|
+
)
|
207
206
|
end
|
207
|
+
def Tagz.html_mode!
|
208
|
+
Tagz.escape!(
|
209
|
+
:attributes => true,
|
210
|
+
:content => false
|
211
|
+
)
|
212
|
+
end
|
213
|
+
|
208
214
|
|
215
|
+
|
216
|
+
# module shortcuts - namespace preserving
|
217
|
+
#
|
209
218
|
def Tagz.globally
|
210
219
|
Globally
|
211
220
|
end
|
212
|
-
|
213
221
|
def Tagz.privately
|
214
222
|
Privately
|
215
223
|
end
|
@@ -378,7 +386,8 @@ unless defined? Tagz
|
|
378
386
|
end
|
379
387
|
end
|
380
388
|
|
381
|
-
NoEscape = lambda{|
|
389
|
+
NoEscape = lambda{|*values| values.join}
|
390
|
+
Escape = lambda{|*values| XChar.escape(values.join)}
|
382
391
|
|
383
392
|
module Globally; include ::Tagz; end
|
384
393
|
module Privately; include ::Tagz; end
|
@@ -391,20 +400,20 @@ unless defined? Tagz
|
|
391
400
|
TagzConstants.const_get(const)
|
392
401
|
end
|
393
402
|
|
403
|
+
# allow access to instance methods via module handle
|
404
|
+
#
|
394
405
|
%w( tagz tagz__ __tagz method_missing ).each{|m| module_function(m)}
|
395
406
|
end
|
396
407
|
|
397
408
|
def Tagz *argv, &block
|
398
|
-
|
399
|
-
::Tagz
|
400
|
-
else
|
401
|
-
Tagz.tagz(*argv, &block)
|
402
|
-
end
|
409
|
+
(argv.empty? and block.nil?) ? ::Tagz : Tagz.tagz(*argv, &block)
|
403
410
|
end
|
404
411
|
|
405
412
|
if defined?(Rails)
|
413
|
+
_=ActionView,ActionView::Base,ActionController,ActionController::Base
|
406
414
|
ActionView::Base.send(:include, Tagz.globally)
|
407
415
|
ActionController::Base.send(:include, Tagz)
|
408
416
|
end
|
409
417
|
|
418
|
+
Tagz.html_mode!
|
410
419
|
end
|
data/readme.erb
CHANGED
@@ -97,6 +97,28 @@ URIS
|
|
97
97
|
http://rubyforge.org/projects/codeforpeople
|
98
98
|
|
99
99
|
HISTORY
|
100
|
+
7.0.0
|
101
|
+
- * IMPORTANT * NOT BACKWARD COMPATIBLE (thus version bump)
|
102
|
+
the tagz functionality itself has not changed, but the defaults for
|
103
|
+
excaping have! now tagz will escape attributes, but NOT content, in the
|
104
|
+
default mode. you can easily configure something else with
|
105
|
+
|
106
|
+
Tagz.escape!(:content => true, :attributes => true)
|
107
|
+
|
108
|
+
which would be like saying
|
109
|
+
|
110
|
+
Tagz.xml_mode!
|
111
|
+
|
112
|
+
or
|
113
|
+
|
114
|
+
Tagz.escape!(:content => false, :attributes => true)
|
115
|
+
|
116
|
+
which would be like saying
|
117
|
+
|
118
|
+
Tagz.html_mode!
|
119
|
+
|
120
|
+
to repeat, the default is 'Tagz.html_mode!'
|
121
|
+
|
100
122
|
6.0.0
|
101
123
|
- reorganize lib to avoid dumping a few constants into the includee - aka
|
102
124
|
don't absolutely minimize namespace pollution. there is now reason to
|
data/tagz.gemspec
CHANGED
data/test/tagz.rb
CHANGED
@@ -474,8 +474,7 @@ class TagzTest < Test::Unit::TestCase
|
|
474
474
|
end
|
475
475
|
|
476
476
|
def test_390
|
477
|
-
expected = '<div class="bar&foo>">foo&
|
478
|
-
# actual = tagz{ div_(:class => 'bar&foo>'){|t| t.h('foo&bar>') } }
|
477
|
+
expected = '<div class="bar&foo>">foo&bar></div>'
|
479
478
|
actual = tagz{ div_(:class => 'bar&foo>'){ 'foo&bar>' } }
|
480
479
|
assert_equal expected, actual
|
481
480
|
|
@@ -485,7 +484,7 @@ class TagzTest < Test::Unit::TestCase
|
|
485
484
|
end
|
486
485
|
|
487
486
|
def test_400
|
488
|
-
expected = '<div><span>foo&
|
487
|
+
expected = '<div><span>foo&bar</span></div>'
|
489
488
|
actual = tagz{ div_{ span_{ 'foo&bar' } } }
|
490
489
|
assert_equal expected, actual
|
491
490
|
end
|
@@ -603,27 +602,27 @@ class TagzTest < Test::Unit::TestCase
|
|
603
602
|
|
604
603
|
actual = nil
|
605
604
|
assert_nothing_raised{ actual=c.a}
|
606
|
-
expected = %(<div>a
|
605
|
+
expected = %(<div>a>b</div>)
|
607
606
|
assert_equal expected, actual
|
608
607
|
|
609
|
-
original = Tagz.escape_content!
|
608
|
+
original = Tagz.escape_content!(true)
|
610
609
|
assert original
|
611
610
|
actual = nil
|
612
611
|
assert_nothing_raised{ actual=c.a}
|
613
|
-
expected = %(<div>a
|
612
|
+
expected = %(<div>a>b</div>)
|
614
613
|
assert_equal expected, actual
|
615
614
|
|
616
|
-
upcased = Tagz.escape_content!
|
615
|
+
upcased = Tagz.escape_content!(lambda{|value| original.call(value).upcase})
|
617
616
|
assert upcased
|
618
617
|
actual = nil
|
619
618
|
assert_nothing_raised{ actual=c.a}
|
620
|
-
expected = %(<div>A
|
619
|
+
expected = %(<div>A>B</div>)
|
621
620
|
assert_equal expected, actual
|
622
621
|
|
623
|
-
Tagz.escape_content!
|
622
|
+
Tagz.escape_content!(original)
|
624
623
|
actual = nil
|
625
624
|
assert_nothing_raised{ actual=c.a}
|
626
|
-
expected = %(<div>a
|
625
|
+
expected = %(<div>a>b</div>)
|
627
626
|
assert_equal expected, actual
|
628
627
|
ensure
|
629
628
|
Tagz.escape_content!(original)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tagz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ara T. Howard
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-26 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|