cml 1.4.2

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.
Files changed (61) hide show
  1. data/.document +5 -0
  2. data/.gitignore +5 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +18 -0
  5. data/Rakefile +56 -0
  6. data/VERSION +1 -0
  7. data/cml.gemspec +129 -0
  8. data/lib/cml/converters/jsawesome.rb +103 -0
  9. data/lib/cml/gold.rb +33 -0
  10. data/lib/cml/liquid_filters.rb +13 -0
  11. data/lib/cml/parser.rb +160 -0
  12. data/lib/cml/tag.rb +308 -0
  13. data/lib/cml/tags/checkbox.rb +77 -0
  14. data/lib/cml/tags/checkboxes.rb +38 -0
  15. data/lib/cml/tags/group.rb +25 -0
  16. data/lib/cml/tags/hidden.rb +17 -0
  17. data/lib/cml/tags/iterate.rb +86 -0
  18. data/lib/cml/tags/meta.rb +12 -0
  19. data/lib/cml/tags/multiple_text.rb +11 -0
  20. data/lib/cml/tags/option.rb +29 -0
  21. data/lib/cml/tags/radio.rb +48 -0
  22. data/lib/cml/tags/radios.rb +36 -0
  23. data/lib/cml/tags/ratings.rb +61 -0
  24. data/lib/cml/tags/search.rb +97 -0
  25. data/lib/cml/tags/select.rb +50 -0
  26. data/lib/cml/tags/text.rb +45 -0
  27. data/lib/cml/tags/textarea.rb +45 -0
  28. data/lib/cml/tags/thumb.rb +25 -0
  29. data/lib/cml/tags/unknown.rb +21 -0
  30. data/lib/cml.rb +15 -0
  31. data/spec/complex_spec.rb +127 -0
  32. data/spec/converters/jsawesome_spec.rb +75 -0
  33. data/spec/fixtures/complex.cml +23 -0
  34. data/spec/fixtures/html.cml +34 -0
  35. data/spec/fixtures/invalid.cml +10 -0
  36. data/spec/fixtures/script-style.cml +12 -0
  37. data/spec/fixtures/segfault.cml +1 -0
  38. data/spec/gold_spec.rb +29 -0
  39. data/spec/meta_spec.rb +47 -0
  40. data/spec/normalize_spec.rb +214 -0
  41. data/spec/show_data_spec.rb +308 -0
  42. data/spec/sorta_match.rb +41 -0
  43. data/spec/spec_helper.rb +26 -0
  44. data/spec/tags/checkbox_spec.rb +155 -0
  45. data/spec/tags/checkboxes_spec.rb +171 -0
  46. data/spec/tags/group_spec.rb +108 -0
  47. data/spec/tags/hidden_spec.rb +17 -0
  48. data/spec/tags/iterate_spec.rb +259 -0
  49. data/spec/tags/meta_spec.rb +14 -0
  50. data/spec/tags/multiple_text_spec.rb +40 -0
  51. data/spec/tags/radios_spec.rb +81 -0
  52. data/spec/tags/ratings_spec.rb +79 -0
  53. data/spec/tags/search_spec.rb +132 -0
  54. data/spec/tags/select_spec.rb +76 -0
  55. data/spec/tags/tag_spec.rb +93 -0
  56. data/spec/tags/text_spec.rb +66 -0
  57. data/spec/tags/textarea_spec.rb +58 -0
  58. data/spec/tags/thumb_spec.rb +20 -0
  59. data/spec/tags/unknown_spec.rb +19 -0
  60. data/spec/validation_spec.rb +62 -0
  61. metadata +182 -0
@@ -0,0 +1,62 @@
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 "bombs on bad parse" do
25
+ @p = Parser.new(<<-HTML)
26
+ <cml:radios label="Cool">
27
+ <cml:radio label="one"/>
28
+ <cml:radio label="two"/>
29
+ </cml:checkboxes>
30
+ HTML
31
+ @p.should_not be_valid
32
+ @p.errors.should == ["Malformed CML (3). Opening and ending tag mismatch: radios line 1 and checkboxes on line 4 column 22."]
33
+ end
34
+
35
+ it "oks duplicate radios if duplicate set" do
36
+ @p = Parser.new(<<-HTML)
37
+ <cml:radios label="Cool">
38
+ <cml:radio label="Yes"/>
39
+ <cml:radio label="Yes" duplicate="true"/>
40
+ </cml:radios>
41
+ HTML
42
+ @p.valid?
43
+ @p.should be_valid
44
+ end
45
+
46
+ it "doesn't ok duplicate radios if duplicate not set" do
47
+ @p = Parser.new(<<-HTML)
48
+ <cml:radios label="Cool">
49
+ <cml:radio label="Nice"/>
50
+ <cml:radio label="Fun" value="Nice"/>
51
+ </cml:radios>
52
+ HTML
53
+ @p.valid?
54
+ @p.should_not be_valid
55
+ @p.errors.should == ["<cml:radio label=\"Fun\" value=\"Nice\" name=\"cool\" validates=\"\"/> a child of <cml:radios label=\"Cool\"> has a duplicated value, please specify a unique value attribute."]
56
+ end
57
+
58
+ it "oks valid cml" do
59
+ @p = Parser.new(File.read(File.dirname(__FILE__) + "/fixtures/complex.cml"), {:prefix => "u12345"})
60
+ @p.should be_valid
61
+ end
62
+ end
metadata ADDED
@@ -0,0 +1,182 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cml
3
+ version: !ruby/object:Gem::Version
4
+ hash: 3
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 4
9
+ - 2
10
+ version: 1.4.2
11
+ platform: ruby
12
+ authors:
13
+ - Chris Van Pelt
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-02-28 00:00:00 -08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: liquid
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 2
32
+ - 0
33
+ - 0
34
+ version: 2.0.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: nokogiri
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 3
46
+ segments:
47
+ - 1
48
+ - 4
49
+ - 2
50
+ version: 1.4.2
51
+ type: :runtime
52
+ version_requirements: *id002
53
+ description: CML let's you easily create form elements and custom interfaces for the CrowdFlower Croud Labor platform
54
+ email: vanpelt@doloreslabs.com
55
+ executables: []
56
+
57
+ extensions: []
58
+
59
+ extra_rdoc_files:
60
+ - LICENSE
61
+ - README.rdoc
62
+ files:
63
+ - .document
64
+ - .gitignore
65
+ - LICENSE
66
+ - README.rdoc
67
+ - Rakefile
68
+ - VERSION
69
+ - cml.gemspec
70
+ - lib/cml.rb
71
+ - lib/cml/converters/jsawesome.rb
72
+ - lib/cml/gold.rb
73
+ - lib/cml/liquid_filters.rb
74
+ - lib/cml/parser.rb
75
+ - lib/cml/tag.rb
76
+ - lib/cml/tags/checkbox.rb
77
+ - lib/cml/tags/checkboxes.rb
78
+ - lib/cml/tags/group.rb
79
+ - lib/cml/tags/hidden.rb
80
+ - lib/cml/tags/iterate.rb
81
+ - lib/cml/tags/meta.rb
82
+ - lib/cml/tags/multiple_text.rb
83
+ - lib/cml/tags/option.rb
84
+ - lib/cml/tags/radio.rb
85
+ - lib/cml/tags/radios.rb
86
+ - lib/cml/tags/ratings.rb
87
+ - lib/cml/tags/search.rb
88
+ - lib/cml/tags/select.rb
89
+ - lib/cml/tags/text.rb
90
+ - lib/cml/tags/textarea.rb
91
+ - lib/cml/tags/thumb.rb
92
+ - lib/cml/tags/unknown.rb
93
+ - spec/complex_spec.rb
94
+ - spec/converters/jsawesome_spec.rb
95
+ - spec/fixtures/complex.cml
96
+ - spec/fixtures/html.cml
97
+ - spec/fixtures/invalid.cml
98
+ - spec/fixtures/script-style.cml
99
+ - spec/fixtures/segfault.cml
100
+ - spec/gold_spec.rb
101
+ - spec/meta_spec.rb
102
+ - spec/normalize_spec.rb
103
+ - spec/show_data_spec.rb
104
+ - spec/sorta_match.rb
105
+ - spec/spec_helper.rb
106
+ - spec/tags/checkbox_spec.rb
107
+ - spec/tags/checkboxes_spec.rb
108
+ - spec/tags/group_spec.rb
109
+ - spec/tags/hidden_spec.rb
110
+ - spec/tags/iterate_spec.rb
111
+ - spec/tags/meta_spec.rb
112
+ - spec/tags/multiple_text_spec.rb
113
+ - spec/tags/radios_spec.rb
114
+ - spec/tags/ratings_spec.rb
115
+ - spec/tags/search_spec.rb
116
+ - spec/tags/select_spec.rb
117
+ - spec/tags/tag_spec.rb
118
+ - spec/tags/text_spec.rb
119
+ - spec/tags/textarea_spec.rb
120
+ - spec/tags/thumb_spec.rb
121
+ - spec/tags/unknown_spec.rb
122
+ - spec/validation_spec.rb
123
+ has_rdoc: true
124
+ homepage: http://github.com/dolores/cml
125
+ licenses: []
126
+
127
+ post_install_message:
128
+ rdoc_options:
129
+ - --charset=UTF-8
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
141
+ required_rubygems_version: !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ hash: 3
147
+ segments:
148
+ - 0
149
+ version: "0"
150
+ requirements: []
151
+
152
+ rubyforge_project:
153
+ rubygems_version: 1.4.2
154
+ signing_key:
155
+ specification_version: 3
156
+ summary: CML is CrowdFlower Markup Language
157
+ test_files:
158
+ - spec/complex_spec.rb
159
+ - spec/converters/jsawesome_spec.rb
160
+ - spec/gold_spec.rb
161
+ - spec/meta_spec.rb
162
+ - spec/normalize_spec.rb
163
+ - spec/show_data_spec.rb
164
+ - spec/sorta_match.rb
165
+ - spec/spec_helper.rb
166
+ - spec/tags/checkbox_spec.rb
167
+ - spec/tags/checkboxes_spec.rb
168
+ - spec/tags/group_spec.rb
169
+ - spec/tags/hidden_spec.rb
170
+ - spec/tags/iterate_spec.rb
171
+ - spec/tags/meta_spec.rb
172
+ - spec/tags/multiple_text_spec.rb
173
+ - spec/tags/radios_spec.rb
174
+ - spec/tags/ratings_spec.rb
175
+ - spec/tags/search_spec.rb
176
+ - spec/tags/select_spec.rb
177
+ - spec/tags/tag_spec.rb
178
+ - spec/tags/text_spec.rb
179
+ - spec/tags/textarea_spec.rb
180
+ - spec/tags/thumb_spec.rb
181
+ - spec/tags/unknown_spec.rb
182
+ - spec/validation_spec.rb