factoryform 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. data/History.txt +20 -0
  2. data/README.rdoc +2 -0
  3. data/Rakefile +41 -0
  4. data/VERSION +1 -0
  5. data/factoryform.gemspec +144 -0
  6. data/init.rb +2 -0
  7. data/lib/factoryform.rb +25 -0
  8. data/lib/factoryform/boolean.rb +17 -0
  9. data/lib/factoryform/currency.rb +7 -0
  10. data/lib/factoryform/date_answer.rb +10 -0
  11. data/lib/factoryform/descriptive_content.rb +17 -0
  12. data/lib/factoryform/email.rb +11 -0
  13. data/lib/factoryform/field.rb +29 -0
  14. data/lib/factoryform/form.rb +127 -0
  15. data/lib/factoryform/image_data.rb +13 -0
  16. data/lib/factoryform/long_answer.rb +12 -0
  17. data/lib/factoryform/multiple_choice.rb +39 -0
  18. data/lib/factoryform/number.rb +11 -0
  19. data/lib/factoryform/rating.rb +23 -0
  20. data/lib/factoryform/short_answer.rb +11 -0
  21. data/lib/factoryform/text_data.rb +11 -0
  22. data/lib/factoryform/time_answer.rb +11 -0
  23. data/lib/factoryform/url.rb +10 -0
  24. data/lib/factoryform/utils.rb +13 -0
  25. data/rdoc/classes/Array.html +171 -0
  26. data/rdoc/classes/FactoryForm.html +192 -0
  27. data/rdoc/classes/FactoryForm/Boolean.html +166 -0
  28. data/rdoc/classes/FactoryForm/Currency.html +113 -0
  29. data/rdoc/classes/FactoryForm/DateAnswer.html +149 -0
  30. data/rdoc/classes/FactoryForm/DescriptiveContent.html +173 -0
  31. data/rdoc/classes/FactoryForm/DuplicateIDException.html +117 -0
  32. data/rdoc/classes/FactoryForm/Email.html +150 -0
  33. data/rdoc/classes/FactoryForm/Field.html +205 -0
  34. data/rdoc/classes/FactoryForm/Form.html +477 -0
  35. data/rdoc/classes/FactoryForm/ImageData.html +178 -0
  36. data/rdoc/classes/FactoryForm/LongAnswer.html +162 -0
  37. data/rdoc/classes/FactoryForm/MultipleChoice.html +241 -0
  38. data/rdoc/classes/FactoryForm/Number.html +149 -0
  39. data/rdoc/classes/FactoryForm/ParameterExpectedException.html +118 -0
  40. data/rdoc/classes/FactoryForm/Rating.html +188 -0
  41. data/rdoc/classes/FactoryForm/ShortAnswer.html +150 -0
  42. data/rdoc/classes/FactoryForm/TextData.html +173 -0
  43. data/rdoc/classes/FactoryForm/TimeAnswer.html +149 -0
  44. data/rdoc/classes/FactoryForm/Url.html +149 -0
  45. data/rdoc/created.rid +1 -0
  46. data/rdoc/files/README_rdoc.html +108 -0
  47. data/rdoc/files/lib/factoryform/boolean_rb.html +101 -0
  48. data/rdoc/files/lib/factoryform/currency_rb.html +101 -0
  49. data/rdoc/files/lib/factoryform/date_answer_rb.html +101 -0
  50. data/rdoc/files/lib/factoryform/descriptive_content_rb.html +101 -0
  51. data/rdoc/files/lib/factoryform/email_rb.html +101 -0
  52. data/rdoc/files/lib/factoryform/field_rb.html +101 -0
  53. data/rdoc/files/lib/factoryform/form_rb.html +111 -0
  54. data/rdoc/files/lib/factoryform/image_data_rb.html +101 -0
  55. data/rdoc/files/lib/factoryform/long_answer_rb.html +101 -0
  56. data/rdoc/files/lib/factoryform/multiple_choice_rb.html +101 -0
  57. data/rdoc/files/lib/factoryform/number_rb.html +101 -0
  58. data/rdoc/files/lib/factoryform/rating_rb.html +101 -0
  59. data/rdoc/files/lib/factoryform/short_answer_rb.html +101 -0
  60. data/rdoc/files/lib/factoryform/text_data_rb.html +101 -0
  61. data/rdoc/files/lib/factoryform/time_answer_rb.html +101 -0
  62. data/rdoc/files/lib/factoryform/url_rb.html +101 -0
  63. data/rdoc/files/lib/factoryform/utils_rb.html +101 -0
  64. data/rdoc/files/lib/factoryform_rb.html +101 -0
  65. data/rdoc/fr_class_index.html +46 -0
  66. data/rdoc/fr_file_index.html +45 -0
  67. data/rdoc/fr_method_index.html +55 -0
  68. data/rdoc/index.html +26 -0
  69. data/rdoc/rdoc-style.css +208 -0
  70. data/test/boolean_test.rb +10 -0
  71. data/test/currency_test.rb +9 -0
  72. data/test/date_answer_test.rb +10 -0
  73. data/test/descriptive_content_test.rb +14 -0
  74. data/test/field_test.rb +19 -0
  75. data/test/form_test.rb +166 -0
  76. data/test/image_data_test.rb +18 -0
  77. data/test/long_answer_test.rb +54 -0
  78. data/test/multiple_choice_test.rb +61 -0
  79. data/test/number_test.rb +11 -0
  80. data/test/rating_test.rb +21 -0
  81. data/test/short_answer_test.rb +83 -0
  82. data/test/test_helper.rb +2 -0
  83. data/test/text_data_test.rb +17 -0
  84. data/test/time_answer_test.rb +10 -0
  85. data/test/url_test.rb +11 -0
  86. metadata +197 -0
@@ -0,0 +1,13 @@
1
+ module FactoryForm
2
+ class ImageData < Field
3
+ attr_accessor :alt, :url
4
+
5
+ def initialize(options = {})
6
+ options[:field_type] = "image_data"
7
+ @url = options[:url] || options[:label]
8
+ @alt = options[:alt] || options[:label]
9
+ super(options)
10
+ end
11
+ end
12
+ end
13
+
@@ -0,0 +1,12 @@
1
+ module FactoryForm
2
+ class LongAnswer < Field
3
+ attr_accessor :min_chars
4
+ def initialize(options={})
5
+ options[:field_type] = "long_answer"
6
+ super(options)
7
+ @min_chars = options[:options][:min_chars] || 500 # Default number of chars 500
8
+ end
9
+ end
10
+ end
11
+
12
+
@@ -0,0 +1,39 @@
1
+ module FactoryForm
2
+ class MultipleChoice < Field
3
+ attr_accessor :values # Option values
4
+ # attr_accessor :type # select_box, check_box, radio_button(:default)
5
+ FIELD_TYPE = ["select_box", "check_box", "radio_button"]
6
+
7
+ def initialize(options={})
8
+ options[:field_type] ||= "radio_button"
9
+ super(options)
10
+
11
+ # Unique is always false
12
+ @unique = false
13
+
14
+ if options[:values] && options[:values].length > 1
15
+ @values = options[:values]
16
+ else
17
+ raise(ParameterExpectedException, "Missing option values (at least two)")
18
+ end
19
+
20
+
21
+ check_field_type
22
+ end
23
+
24
+ def add_option(value)
25
+ @values.push(value)
26
+ end
27
+
28
+ def remove_option(value)
29
+ @values.delete(value)
30
+ end
31
+
32
+ private
33
+ def check_field_type
34
+ raise(ArgumentError, "Invalid Field Type, Expected one of select_box, check_box, radio_button") if !FIELD_TYPE.include?(@field_type)
35
+ end
36
+
37
+ end
38
+ end
39
+
@@ -0,0 +1,11 @@
1
+ module FactoryForm
2
+ class Number < ShortAnswer
3
+ def initialize(options={})
4
+ options[:field_type] = "short_answer"
5
+ super(options)
6
+ @validation_format = "number"
7
+ end
8
+ end
9
+ end
10
+
11
+
@@ -0,0 +1,23 @@
1
+ module FactoryForm
2
+ # Rating has different scales
3
+ class Rating < Field
4
+ attr_accessor :scale, :from_label, :to_label
5
+
6
+ def initialize(options={})
7
+ options[:field_type] = "rating"
8
+ super(options)
9
+
10
+ # Default is 2 for number of scales
11
+ if options[:scale] && options[:scale].to_i > 1
12
+ self.scale = options[:scale].to_i
13
+ else
14
+ raise(ParameterExpectedException, "Missing rating scale (should be greater than or equal to 2)")
15
+ end
16
+
17
+ self.from_label = options[:from_label] || ""
18
+ self.to_label = options[:to_label] || ""
19
+
20
+ end
21
+ end
22
+ end
23
+
@@ -0,0 +1,11 @@
1
+ module FactoryForm
2
+ class ShortAnswer < Field
3
+ def initialize(options={})
4
+ options[:field_type] = options[:field_type] || "short_answer"
5
+ super(options)
6
+ # extra attributes for ShortAnswer
7
+
8
+ end
9
+ end
10
+ end
11
+
@@ -0,0 +1,11 @@
1
+ module FactoryForm
2
+ class TextData < Field
3
+ attr_accessor :value
4
+
5
+ def initialize(options = {})
6
+ options[:field_type] = "text_data"
7
+ @value = options[:value] || options[:label]
8
+ super(options)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module FactoryForm
2
+ class TimeAnswer< ShortAnswer
3
+ def initialize(options={})
4
+ options[:field_type] = "short_answer"
5
+ super(options)
6
+ @validation_format = "time"
7
+ end
8
+ end
9
+ end
10
+
11
+
@@ -0,0 +1,10 @@
1
+ module FactoryForm
2
+ class Url < ShortAnswer
3
+ def initialize(options={})
4
+ options[:field_type] = "short_answer"
5
+ super(options)
6
+ @validation_format = "url"
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,13 @@
1
+ class Array
2
+ def move(from, to)
3
+ insert(to, delete_at(from))
4
+ end
5
+
6
+ def move_object(obj, to)
7
+ return self if index(obj).nil? # return original array if obj not found
8
+ move(index(obj), to)
9
+ end
10
+ end
11
+
12
+
13
+
@@ -0,0 +1,171 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Array</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Array</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/factoryform/utils_rb.html">
59
+ lib/factoryform/utils.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000001">move</a>&nbsp;&nbsp;
90
+ <a href="#M000002">move_object</a>&nbsp;&nbsp;
91
+ </div>
92
+ </div>
93
+
94
+ </div>
95
+
96
+
97
+ <!-- if includes -->
98
+
99
+ <div id="section">
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+ <!-- if method_list -->
109
+ <div id="methods">
110
+ <h3 class="section-bar">Public Instance methods</h3>
111
+
112
+ <div id="method-M000001" class="method-detail">
113
+ <a name="M000001"></a>
114
+
115
+ <div class="method-heading">
116
+ <a href="#M000001" class="method-signature">
117
+ <span class="method-name">move</span><span class="method-args">(from, to)</span>
118
+ </a>
119
+ </div>
120
+
121
+ <div class="method-description">
122
+ <p><a class="source-toggle" href="#"
123
+ onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
124
+ <div class="method-source-code" id="M000001-source">
125
+ <pre>
126
+ <span class="ruby-comment cmt"># File lib/factoryform/utils.rb, line 2</span>
127
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">move</span>(<span class="ruby-identifier">from</span>, <span class="ruby-identifier">to</span>)
128
+ <span class="ruby-identifier">insert</span>(<span class="ruby-identifier">to</span>, <span class="ruby-identifier">delete_at</span>(<span class="ruby-identifier">from</span>))
129
+ <span class="ruby-keyword kw">end</span>
130
+ </pre>
131
+ </div>
132
+ </div>
133
+ </div>
134
+
135
+ <div id="method-M000002" class="method-detail">
136
+ <a name="M000002"></a>
137
+
138
+ <div class="method-heading">
139
+ <a href="#M000002" class="method-signature">
140
+ <span class="method-name">move_object</span><span class="method-args">(obj, to)</span>
141
+ </a>
142
+ </div>
143
+
144
+ <div class="method-description">
145
+ <p><a class="source-toggle" href="#"
146
+ onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
147
+ <div class="method-source-code" id="M000002-source">
148
+ <pre>
149
+ <span class="ruby-comment cmt"># File lib/factoryform/utils.rb, line 6</span>
150
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">move_object</span>(<span class="ruby-identifier">obj</span>, <span class="ruby-identifier">to</span>)
151
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">index</span>(<span class="ruby-identifier">obj</span>).<span class="ruby-identifier">nil?</span> <span class="ruby-comment cmt"># return original array if obj not found</span>
152
+ <span class="ruby-identifier">move</span>(<span class="ruby-identifier">index</span>(<span class="ruby-identifier">obj</span>), <span class="ruby-identifier">to</span>)
153
+ <span class="ruby-keyword kw">end</span>
154
+ </pre>
155
+ </div>
156
+ </div>
157
+ </div>
158
+
159
+
160
+ </div>
161
+
162
+
163
+ </div>
164
+
165
+
166
+ <div id="validator-badges">
167
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
168
+ </div>
169
+
170
+ </body>
171
+ </html>
@@ -0,0 +1,192 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: FactoryForm</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">FactoryForm</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/factoryform/boolean_rb.html">
59
+ lib/factoryform/boolean.rb
60
+ </a>
61
+ <br />
62
+ <a href="../files/lib/factoryform/currency_rb.html">
63
+ lib/factoryform/currency.rb
64
+ </a>
65
+ <br />
66
+ <a href="../files/lib/factoryform/date_answer_rb.html">
67
+ lib/factoryform/date_answer.rb
68
+ </a>
69
+ <br />
70
+ <a href="../files/lib/factoryform/descriptive_content_rb.html">
71
+ lib/factoryform/descriptive_content.rb
72
+ </a>
73
+ <br />
74
+ <a href="../files/lib/factoryform/email_rb.html">
75
+ lib/factoryform/email.rb
76
+ </a>
77
+ <br />
78
+ <a href="../files/lib/factoryform/field_rb.html">
79
+ lib/factoryform/field.rb
80
+ </a>
81
+ <br />
82
+ <a href="../files/lib/factoryform/form_rb.html">
83
+ lib/factoryform/form.rb
84
+ </a>
85
+ <br />
86
+ <a href="../files/lib/factoryform/image_data_rb.html">
87
+ lib/factoryform/image_data.rb
88
+ </a>
89
+ <br />
90
+ <a href="../files/lib/factoryform/long_answer_rb.html">
91
+ lib/factoryform/long_answer.rb
92
+ </a>
93
+ <br />
94
+ <a href="../files/lib/factoryform/multiple_choice_rb.html">
95
+ lib/factoryform/multiple_choice.rb
96
+ </a>
97
+ <br />
98
+ <a href="../files/lib/factoryform/number_rb.html">
99
+ lib/factoryform/number.rb
100
+ </a>
101
+ <br />
102
+ <a href="../files/lib/factoryform/rating_rb.html">
103
+ lib/factoryform/rating.rb
104
+ </a>
105
+ <br />
106
+ <a href="../files/lib/factoryform/short_answer_rb.html">
107
+ lib/factoryform/short_answer.rb
108
+ </a>
109
+ <br />
110
+ <a href="../files/lib/factoryform/text_data_rb.html">
111
+ lib/factoryform/text_data.rb
112
+ </a>
113
+ <br />
114
+ <a href="../files/lib/factoryform/time_answer_rb.html">
115
+ lib/factoryform/time_answer.rb
116
+ </a>
117
+ <br />
118
+ <a href="../files/lib/factoryform/url_rb.html">
119
+ lib/factoryform/url.rb
120
+ </a>
121
+ <br />
122
+ <a href="../files/lib/factoryform_rb.html">
123
+ lib/factoryform.rb
124
+ </a>
125
+ <br />
126
+ </td>
127
+ </tr>
128
+
129
+ </table>
130
+ </div>
131
+ <!-- banner header -->
132
+
133
+ <div id="bodyContent">
134
+
135
+
136
+
137
+ <div id="contextContent">
138
+
139
+
140
+
141
+ </div>
142
+
143
+
144
+ </div>
145
+
146
+
147
+ <!-- if includes -->
148
+
149
+ <div id="section">
150
+
151
+ <div id="class-list">
152
+ <h3 class="section-bar">Classes and Modules</h3>
153
+
154
+ Class <a href="FactoryForm/Boolean.html" class="link">FactoryForm::Boolean</a><br />
155
+ Class <a href="FactoryForm/Currency.html" class="link">FactoryForm::Currency</a><br />
156
+ Class <a href="FactoryForm/DateAnswer.html" class="link">FactoryForm::DateAnswer</a><br />
157
+ Class <a href="FactoryForm/DescriptiveContent.html" class="link">FactoryForm::DescriptiveContent</a><br />
158
+ Class <a href="FactoryForm/DuplicateIDException.html" class="link">FactoryForm::DuplicateIDException</a><br />
159
+ Class <a href="FactoryForm/Email.html" class="link">FactoryForm::Email</a><br />
160
+ Class <a href="FactoryForm/Field.html" class="link">FactoryForm::Field</a><br />
161
+ Class <a href="FactoryForm/Form.html" class="link">FactoryForm::Form</a><br />
162
+ Class <a href="FactoryForm/ImageData.html" class="link">FactoryForm::ImageData</a><br />
163
+ Class <a href="FactoryForm/LongAnswer.html" class="link">FactoryForm::LongAnswer</a><br />
164
+ Class <a href="FactoryForm/MultipleChoice.html" class="link">FactoryForm::MultipleChoice</a><br />
165
+ Class <a href="FactoryForm/Number.html" class="link">FactoryForm::Number</a><br />
166
+ Class <a href="FactoryForm/ParameterExpectedException.html" class="link">FactoryForm::ParameterExpectedException</a><br />
167
+ Class <a href="FactoryForm/Rating.html" class="link">FactoryForm::Rating</a><br />
168
+ Class <a href="FactoryForm/ShortAnswer.html" class="link">FactoryForm::ShortAnswer</a><br />
169
+ Class <a href="FactoryForm/TextData.html" class="link">FactoryForm::TextData</a><br />
170
+ Class <a href="FactoryForm/TimeAnswer.html" class="link">FactoryForm::TimeAnswer</a><br />
171
+ Class <a href="FactoryForm/Url.html" class="link">FactoryForm::Url</a><br />
172
+
173
+ </div>
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+ <!-- if method_list -->
182
+
183
+
184
+ </div>
185
+
186
+
187
+ <div id="validator-badges">
188
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
189
+ </div>
190
+
191
+ </body>
192
+ </html>