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.
- data/.document +5 -0
- data/.gitignore +5 -0
- data/LICENSE +20 -0
- data/README.rdoc +18 -0
- data/Rakefile +56 -0
- data/VERSION +1 -0
- data/cml.gemspec +103 -0
- data/lib/cml/converters/jsawesome.rb +102 -0
- data/lib/cml/liquid_filters.rb +7 -0
- data/lib/cml/parser.rb +107 -0
- data/lib/cml/tag.rb +134 -0
- data/lib/cml/tags/checkbox.rb +37 -0
- data/lib/cml/tags/checkboxes.rb +24 -0
- data/lib/cml/tags/group.rb +18 -0
- data/lib/cml/tags/hidden.rb +13 -0
- data/lib/cml/tags/meta.rb +12 -0
- data/lib/cml/tags/option.rb +25 -0
- data/lib/cml/tags/radio.rb +29 -0
- data/lib/cml/tags/radios.rb +24 -0
- data/lib/cml/tags/ratings.rb +42 -0
- data/lib/cml/tags/select.rb +23 -0
- data/lib/cml/tags/text.rb +10 -0
- data/lib/cml/tags/textarea.rb +10 -0
- data/lib/cml/tags/unknown.rb +21 -0
- data/lib/cml.rb +9 -0
- data/spec/complex_spec.rb +53 -0
- data/spec/converters/jsawesome_spec.rb +57 -0
- data/spec/fixtures/complex.cml +22 -0
- data/spec/fixtures/invalid.cml +10 -0
- data/spec/meta_spec.rb +31 -0
- data/spec/sorta_match.rb +41 -0
- data/spec/spec_helper.rb +26 -0
- data/spec/tags/checkbox_spec.rb +98 -0
- data/spec/tags/checkboxes_spec.rb +30 -0
- data/spec/tags/group_spec.rb +35 -0
- data/spec/tags/hidden_spec.rb +15 -0
- data/spec/tags/meta_spec.rb +14 -0
- data/spec/tags/radios_spec.rb +30 -0
- data/spec/tags/select_spec.rb +50 -0
- data/spec/tags/text_spec.rb +36 -0
- data/spec/tags/textarea_spec.rb +18 -0
- data/spec/tags/unknown_spec.rb +19 -0
- data/spec/validation_spec.rb +28 -0
- metadata +140 -0
@@ -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
|