dolores-cfml 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/cfml.gemspec +2 -2
- data/lib/cfml/parser.rb +6 -3
- data/lib/cfml/tags/checkbox.rb +5 -2
- data/lib/cfml/tags/radio.rb +4 -1
- data/spec/validation_spec.rb +13 -4
- metadata +2 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/cfml.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{cfml}
|
5
|
-
s.version = "0.2.
|
5
|
+
s.version = "0.2.2"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Chris Van Pelt"]
|
9
|
-
s.date = %q{2009-08-
|
9
|
+
s.date = %q{2009-08-23}
|
10
10
|
s.description = %q{CFML let's you easily create form elements and custom interfaces for the CrowdFlower CroudSourcing platform}
|
11
11
|
s.email = %q{vanpelt@doloreslabs.com}
|
12
12
|
s.extra_rdoc_files = [
|
data/lib/cfml/parser.rb
CHANGED
@@ -51,14 +51,17 @@ module CFML
|
|
51
51
|
|
52
52
|
def valid?
|
53
53
|
@errors = []
|
54
|
+
@doc.errors.each do |e|
|
55
|
+
@errors << "Malformed HTML. #{e.message.chomp} on line #{e.line} column #{e.column}."
|
56
|
+
end
|
54
57
|
@tags.select {|t| t.validate? && t.name =~ /^\s*$/ }.each do |t|
|
55
|
-
@errors << [t.to_s.split("\n")[0]
|
58
|
+
@errors << ["#{t.to_s.split("\n")[0]} does not have a label or name specified."]
|
56
59
|
end
|
57
60
|
dupes = @tags.select do |tag|
|
58
61
|
tag.validate? && @tags.select {|t| t.name == tag.name}.length > 1
|
59
62
|
end
|
60
63
|
(dupes[1..-1] || []).each do |t|
|
61
|
-
@errors << [t.to_s.split("\n")[0]
|
64
|
+
@errors << ["#{t.to_s.split("\n")[0]} has a duplicated name, please specify a unique name attribute."]
|
62
65
|
end
|
63
66
|
@tags.each do |t|
|
64
67
|
next unless t.children
|
@@ -66,7 +69,7 @@ module CFML
|
|
66
69
|
t.children.select {|c| c.value == child.value}.length > 1
|
67
70
|
end
|
68
71
|
(dupes[1..-1] || []).each do |c|
|
69
|
-
@errors << [c
|
72
|
+
@errors << ["#{c} a child of #{t.to_s.split("\n")[0]} has a duplicated value, please specify a unique value attribute."]
|
70
73
|
end
|
71
74
|
end
|
72
75
|
@errors.length == 0
|
data/lib/cfml/tags/checkbox.rb
CHANGED
@@ -18,13 +18,16 @@ module CFML
|
|
18
18
|
grouped? ? parsed : super
|
19
19
|
end
|
20
20
|
|
21
|
+
def value
|
22
|
+
(@attrs["value"] || (grouped? ? @attrs["label"] : "true")).to_s
|
23
|
+
end
|
24
|
+
|
21
25
|
def data
|
22
26
|
default = ""
|
23
27
|
if @attrs["default"]
|
24
28
|
default = Hidden.new("<cf:hidden name=\"#{name}\" value=\"#{@attrs["default"]}\"/>", @opts).to_html
|
25
29
|
end
|
26
|
-
super.merge({
|
27
|
-
"value" => (@attrs["value"] || (grouped? ? @attrs["label"] : "true")).to_s,
|
30
|
+
super.merge({
|
28
31
|
"default" => default,
|
29
32
|
"checked" => @attrs["checked"] ? "checked=\"checked\"" : "",
|
30
33
|
"label" => @attrs["label"].to_s})
|
data/lib/cfml/tags/radio.rb
CHANGED
@@ -14,9 +14,12 @@ module CFML
|
|
14
14
|
grouped? ? parsed : super
|
15
15
|
end
|
16
16
|
|
17
|
+
def value
|
18
|
+
(@attrs["value"] || @attrs["label"]).to_s
|
19
|
+
end
|
20
|
+
|
17
21
|
def data
|
18
22
|
super.merge({
|
19
|
-
"value" => (@attrs["value"] || @attrs["label"]).to_s,
|
20
23
|
"checked" => @attrs["checked"] ? "checked=\"checked\"" : "",
|
21
24
|
"label" => @attrs["label"].to_s
|
22
25
|
})
|
data/spec/validation_spec.rb
CHANGED
@@ -5,15 +5,24 @@ describe "CFML Validation" do
|
|
5
5
|
@p = Parser.new(File.read(File.dirname(__FILE__) + "/fixtures/invalid.cfml"), {:prefix => "u12345"})
|
6
6
|
@p.should_not be_valid
|
7
7
|
@p.errors.should == [
|
8
|
-
["<cf:checkbox label=\"\" value=\"yes\" gold=\"true\"/>
|
9
|
-
["<cf:text label=\"Awesome\" validations=\"required email\"/>
|
10
|
-
["<cf:option label=\"Rad\"/>
|
8
|
+
["<cf:checkbox label=\"\" value=\"yes\" gold=\"true\"/> does not have a label or name specified."],
|
9
|
+
["<cf:text label=\"Awesome\" validations=\"required email\"/> has a duplicated name, please specify a unique name attribute."],
|
10
|
+
["<cf:option label=\"Rad\"/> a child of <cf:select label=\"Awesome\"> has a duplicated value, please specify a unique value attribute."]
|
11
11
|
]
|
12
12
|
end
|
13
13
|
|
14
|
+
it "oks no duplicate checkbox" do
|
15
|
+
@p = Parser.new(<<-HTML)
|
16
|
+
<cf:checkboxes label="Cool">
|
17
|
+
<cf:checkbox label="one"/>
|
18
|
+
<cf:checkbox label="two"/>
|
19
|
+
</cf:checkboxes>
|
20
|
+
HTML
|
21
|
+
@p.should be_valid
|
22
|
+
end
|
23
|
+
|
14
24
|
it "oks valid cfml" do
|
15
25
|
@p = Parser.new(File.read(File.dirname(__FILE__) + "/fixtures/complex.cfml"), {:prefix => "u12345"})
|
16
|
-
@p.valid?
|
17
26
|
@p.should be_valid
|
18
27
|
end
|
19
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dolores-cfml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Van Pelt
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-08-
|
12
|
+
date: 2009-08-23 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|