factoryform 0.1.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.
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>