dolores-cml 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,30 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "CML Radios" do
4
+ it "should render basic radios" do
5
+ cml = <<-HTML
6
+ <cml:radios label="Cool radios">
7
+ <cml:radio label="Wanna do it?"/>
8
+ <cml:radio label="Sure?"/>
9
+ <cml:radio label="Not really..." value="nope" checked="true"/>
10
+ </cml:radios>
11
+ HTML
12
+ @p = Parser.new(cml, :prefix => "u12345")
13
+ @p.to_html.should sorta_match(<<-HTML)
14
+ <div class="cml" id="u12345">
15
+ <div class="radios">
16
+ <h2 class="legend">Cool radios</h2>
17
+ <label>
18
+ <input type="radio" value="Wanna do it?" name="u12345[cool_radios]" class="cool_radios"/> Wanna do it?
19
+ </label>
20
+ <label>
21
+ <input type="radio" value="Sure?" name="u12345[cool_radios]" class="cool_radios"/> Sure?
22
+ </label>
23
+ <label>
24
+ <input type="radio" value="nope" checked="checked" name="u12345[cool_radios]" class="cool_radios"/> Sure?
25
+ </label>
26
+ </div>
27
+ </div>
28
+ HTML
29
+ end
30
+ end
@@ -0,0 +1,50 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "CML Select" do
4
+ it "should render basic select" do
5
+ cml = <<-HTML
6
+ <cml:select label="Basic">
7
+ <cml:option>One</option>
8
+ <cml:option>Two</option>
9
+ <cml:option>Three</option>
10
+ </cml:select>
11
+ HTML
12
+ @p = Parser.new(cml, :prefix => "u12345")
13
+ @p.to_html.should sorta_match(<<-HTML)
14
+ <div class="cml" id="u12345">
15
+ <div class="select">
16
+ <label>Basic</label>
17
+ <select name="u12345[basic]" class="basic">
18
+ <option>One</option>
19
+ <option>Two</option>
20
+ <option>Three</option>
21
+ </select>
22
+ </div>
23
+ </div>
24
+ HTML
25
+ end
26
+
27
+ it "should render complex select" do
28
+ cml = <<-HTML
29
+ <cml:select label="Basic" default="Choose an option">
30
+ <cml:option value="oney">One</option>
31
+ <cml:option selected="true">Two</option>
32
+ <cml:option label="Awesome"/>
33
+ </cml:select>
34
+ HTML
35
+ @p = Parser.new(cml, :prefix => "u12345")
36
+ @p.to_html.should sorta_match(<<-HTML)
37
+ <div class="cml" id="u12345">
38
+ <div class="select">
39
+ <label>Basic</label>
40
+ <select name="u12345[basic]" class="basic">
41
+ <option value="">Choose an option</option>
42
+ <option value="oney">One</option>
43
+ <option selected="selected">Two</option>
44
+ <option>Awesome</option>
45
+ </select>
46
+ </div>
47
+ </div>
48
+ HTML
49
+ end
50
+ end
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "CML Text" do
4
+ it "should render basic text" do
5
+ cml = <<-HTML
6
+ <cml:text label="Coolio"/>
7
+ HTML
8
+ @p = Parser.new(cml, :prefix => "u12345")
9
+ @p.to_html.should sorta_match(<<-HTML)
10
+ <div class="cml" id="u12345">
11
+ <div class="text">
12
+ <label>Coolio</label>
13
+ <input type="text" value="" name="u12345[coolio]" class="coolio"/>
14
+ </div>
15
+ </div>
16
+ HTML
17
+ end
18
+
19
+ it "should render text with classes and instructions tag" do
20
+ cml = <<-HTML
21
+ <cml:text label="Coolio" class="small">
22
+ <cml:instructions>Just be <b>cool</b> bro!</cml:instructions>
23
+ </cml:text>
24
+ HTML
25
+ @p = Parser.new(cml, :prefix => "u12345")
26
+ @p.to_html.should sorta_match(<<-HTML)
27
+ <div class="cml" id="u12345">
28
+ <div class="text">
29
+ <label>Coolio</label>
30
+ <input type="text" class="coolio small" value="" name="u12345[coolio]" />
31
+ <p class="instructions">Just be <b>cool</b> bro!</p>
32
+ </div>
33
+ </div>
34
+ HTML
35
+ end
36
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "CML Textarea" do
4
+ it "should render basic text" do
5
+ cml = <<-HTML
6
+ <cml:textarea label="Sweet dude man!" value="4 sure"/>
7
+ HTML
8
+ @p = Parser.new(cml, :prefix => "u12345")
9
+ @p.to_html.should sorta_match(<<-HTML)
10
+ <div class="cml" id="u12345">
11
+ <div class="textarea">
12
+ <label>Sweet dude man!</label>
13
+ <textarea name="u12345[sweet_dude_man]" class="sweet_dude_man">4 sure</textarea>
14
+ </div>
15
+ </div>
16
+ HTML
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe "CML Unknown" do
4
+ it "should render unknown field" do
5
+ cml = <<-HTML
6
+ <cml:crazy name="secret">
7
+ Something
8
+ </cml:crazy>
9
+ HTML
10
+ @p = Parser.new(cml, :prefix => "u12345")
11
+ @p.to_html.should sorta_match(<<-HTML)
12
+ <div class="cml" id="u12345">
13
+ <div class="crazy unknown">
14
+ Something
15
+ </div>
16
+ </div>
17
+ HTML
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+
3
+ describe "CML Validation" do
4
+ it "adds errors if invalid" do
5
+ @p = Parser.new(File.read(File.dirname(__FILE__) + "/fixtures/invalid.cml"), {:prefix => "u12345"})
6
+ @p.should_not be_valid
7
+ @p.errors.should == [
8
+ "<cml:checkbox label=\"\" value=\"yes\" gold=\"true\"/> does not have a label or name specified.",
9
+ "<cml:text label=\"Awesome\" validates=\"required email\"/> has a duplicated name, please specify a unique name attribute.",
10
+ "<cml:option label=\"Rad\"/> a child of <cml:select label=\"Awesome\"> has a duplicated value, please specify a unique value attribute."
11
+ ]
12
+ end
13
+
14
+ it "oks no duplicate checkbox" do
15
+ @p = Parser.new(<<-HTML)
16
+ <cml:checkboxes label="Cool">
17
+ <cml:checkbox label="one"/>
18
+ <cml:checkbox label="two"/>
19
+ </cml:checkboxes>
20
+ HTML
21
+ @p.should be_valid
22
+ end
23
+
24
+ it "oks valid cml" do
25
+ @p = Parser.new(File.read(File.dirname(__FILE__) + "/fixtures/complex.cml"), {:prefix => "u12345"})
26
+ @p.should be_valid
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,140 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dolores-cml
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Van Pelt
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-08-25 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: liquid
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.0.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: nokogiri
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.3.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: json_pure
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.1.3
44
+ version:
45
+ description: CML let's you easily create form elements and custom interfaces for the CrowdFlower Croud Labor platform
46
+ email: vanpelt@doloreslabs.com
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - LICENSE
53
+ - README.rdoc
54
+ files:
55
+ - .document
56
+ - .gitignore
57
+ - LICENSE
58
+ - README.rdoc
59
+ - Rakefile
60
+ - VERSION
61
+ - cml.gemspec
62
+ - lib/cml.rb
63
+ - lib/cml/converters/jsawesome.rb
64
+ - lib/cml/liquid_filters.rb
65
+ - lib/cml/parser.rb
66
+ - lib/cml/tag.rb
67
+ - lib/cml/tags/checkbox.rb
68
+ - lib/cml/tags/checkboxes.rb
69
+ - lib/cml/tags/group.rb
70
+ - lib/cml/tags/hidden.rb
71
+ - lib/cml/tags/meta.rb
72
+ - lib/cml/tags/option.rb
73
+ - lib/cml/tags/radio.rb
74
+ - lib/cml/tags/radios.rb
75
+ - lib/cml/tags/ratings.rb
76
+ - lib/cml/tags/select.rb
77
+ - lib/cml/tags/text.rb
78
+ - lib/cml/tags/textarea.rb
79
+ - lib/cml/tags/unknown.rb
80
+ - spec/complex_spec.rb
81
+ - spec/converters/jsawesome_spec.rb
82
+ - spec/fixtures/complex.cml
83
+ - spec/fixtures/invalid.cml
84
+ - spec/meta_spec.rb
85
+ - spec/sorta_match.rb
86
+ - spec/spec_helper.rb
87
+ - spec/tags/checkbox_spec.rb
88
+ - spec/tags/checkboxes_spec.rb
89
+ - spec/tags/group_spec.rb
90
+ - spec/tags/hidden_spec.rb
91
+ - spec/tags/meta_spec.rb
92
+ - spec/tags/radios_spec.rb
93
+ - spec/tags/select_spec.rb
94
+ - spec/tags/text_spec.rb
95
+ - spec/tags/textarea_spec.rb
96
+ - spec/tags/unknown_spec.rb
97
+ - spec/validation_spec.rb
98
+ has_rdoc: false
99
+ homepage: http://github.com/dolores/cml
100
+ post_install_message:
101
+ rdoc_options:
102
+ - --charset=UTF-8
103
+ require_paths:
104
+ - lib
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: "0"
110
+ version:
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: "0"
116
+ version:
117
+ requirements: []
118
+
119
+ rubyforge_project:
120
+ rubygems_version: 1.2.0
121
+ signing_key:
122
+ specification_version: 3
123
+ summary: CML is CrowdFlower Markup Language
124
+ test_files:
125
+ - spec/complex_spec.rb
126
+ - spec/converters/jsawesome_spec.rb
127
+ - spec/meta_spec.rb
128
+ - spec/sorta_match.rb
129
+ - spec/spec_helper.rb
130
+ - spec/tags/checkbox_spec.rb
131
+ - spec/tags/checkboxes_spec.rb
132
+ - spec/tags/group_spec.rb
133
+ - spec/tags/hidden_spec.rb
134
+ - spec/tags/meta_spec.rb
135
+ - spec/tags/radios_spec.rb
136
+ - spec/tags/select_spec.rb
137
+ - spec/tags/text_spec.rb
138
+ - spec/tags/textarea_spec.rb
139
+ - spec/tags/unknown_spec.rb
140
+ - spec/validation_spec.rb