aenea 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +39 -0
- data/Rakefile +24 -0
- data/app/assets/config/aenea_manifest.js +0 -0
- data/app/helpers/inline_boolean_input.rb +9 -0
- data/app/helpers/markdown_input.rb +21 -0
- data/app/helpers/non_input_input.rb +7 -0
- data/app/models/concerns/acts_as_only_flagged.rb +65 -0
- data/app/models/concerns/can_be_inactive.rb +8 -0
- data/app/models/concerns/has_external_id.rb +9 -0
- data/app/models/concerns/has_obfuscated_id.rb +51 -0
- data/app/models/concerns/model.rb +51 -0
- data/app/models/concerns/model/belongs_to.rb +38 -0
- data/app/models/concerns/model/enum.rb +24 -0
- data/app/models/concerns/model/has_many.rb +127 -0
- data/app/models/concerns/model/has_one.rb +77 -0
- data/app/models/concerns/sluggable.rb +7 -0
- data/app/models/countries.rb +278 -0
- data/app/models/country_validator.rb +10 -0
- data/app/models/database_function_helper.rb +88 -0
- data/app/models/google_maps_api.rb +19 -0
- data/app/models/google_maps_api/geocode.rb +29 -0
- data/app/models/google_maps_api/time_zone.rb +29 -0
- data/app/models/json_api.rb +16 -0
- data/app/models/phone_number_validator.rb +10 -0
- data/app/models/us_state_validator.rb +10 -0
- data/app/models/us_states.rb +75 -0
- data/app/models/zip_code_validator.rb +12 -0
- data/lib/aenea.rb +12 -0
- data/lib/aenea/active_admin.rb +23 -0
- data/lib/aenea/active_admin/index_as_table.rb +9 -0
- data/lib/aenea/active_admin/index_as_table/sortable_columns.rb +29 -0
- data/lib/aenea/active_admin/resource_controller.rb +9 -0
- data/lib/aenea/active_admin/resource_controller/find_sluggable.rb +21 -0
- data/lib/aenea/active_admin/resource_dsl.rb +11 -0
- data/lib/aenea/active_admin/resource_dsl/sortable_actions.rb +53 -0
- data/lib/aenea/active_admin/resource_dsl/use_parent_actions.rb +79 -0
- data/lib/aenea/date.rb +14 -0
- data/lib/aenea/engine.rb +20 -0
- data/lib/aenea/enum.rb +13 -0
- data/lib/aenea/enum/changes.rb +61 -0
- data/lib/aenea/enum/ext.rb +68 -0
- data/lib/aenea/enum/groups.rb +53 -0
- data/lib/aenea/markdown_attr.rb +43 -0
- data/lib/aenea/time.rb +9 -0
- data/lib/aenea/time_of_day.rb +41 -0
- data/lib/aenea/time_window.rb +86 -0
- data/lib/aenea/version.rb +3 -0
- data/lib/tasks/aenea_tasks.rake +4 -0
- metadata +203 -0
@@ -0,0 +1,77 @@
|
|
1
|
+
module Model
|
2
|
+
module HasOne
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
class Association
|
6
|
+
attr_reader :target, :assoc
|
7
|
+
|
8
|
+
def initialize(target, assoc, options = {})
|
9
|
+
@target = target
|
10
|
+
@assoc = assoc.to_sym
|
11
|
+
|
12
|
+
class_name = options[:class_name] || assoc.to_s.camelize
|
13
|
+
klass = class_name.constantize
|
14
|
+
|
15
|
+
builder_method_name = "build_#{assoc}".to_sym
|
16
|
+
validate_method_name = "validate_associated_#{assoc}".to_sym
|
17
|
+
|
18
|
+
target.send :attr_accessor, assoc
|
19
|
+
define_builder builder_method_name, assoc, klass
|
20
|
+
define_attributes_writer builder_method_name
|
21
|
+
define_present_method assoc
|
22
|
+
define_nil_method assoc
|
23
|
+
define_validate_method validate_method_name, assoc
|
24
|
+
|
25
|
+
if validate_options = options[:validate]
|
26
|
+
target.validate validate_method_name, validate_options.is_a?(Hash) ? validate_options : {}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def define_builder(builder_method_name, assoc, klass)
|
33
|
+
# def build_thing(attrs = {})
|
34
|
+
target.send :define_method, builder_method_name do |attrs = {}|
|
35
|
+
send "#{assoc}=", klass.new(attrs)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def define_attributes_writer(builder_method_name)
|
40
|
+
# def thing_attributes=(params)
|
41
|
+
target.send :define_method, "#{assoc}_attributes=" do |params|
|
42
|
+
send builder_method_name, params
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def define_present_method(assoc)
|
47
|
+
# def things_present?
|
48
|
+
target.send :define_method, "#{assoc}_present?" do
|
49
|
+
send(assoc).present?
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def define_nil_method(assoc)
|
54
|
+
# def things_empty?
|
55
|
+
target.send :define_method, "#{assoc}_nil?" do
|
56
|
+
send(assoc).nil?
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def define_validate_method(validate_method_name, assoc)
|
61
|
+
# def validate_associated_thing
|
62
|
+
target.send :define_method, validate_method_name do
|
63
|
+
return unless obj = send(assoc)
|
64
|
+
errors.add assoc, 'is invalid' unless obj.valid?
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
module ClassMethods
|
70
|
+
def has_one(name, options = {})
|
71
|
+
(self.associations_registry ||= {})[name] = :has_one
|
72
|
+
|
73
|
+
Association.new self, name, options
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,278 @@
|
|
1
|
+
module Countries
|
2
|
+
# https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
|
3
|
+
VALUES = [
|
4
|
+
['ABW', 'Aruba'],
|
5
|
+
['AFG', 'Afghanistan'],
|
6
|
+
['AGO', 'Angola'],
|
7
|
+
['AIA', 'Anguilla'],
|
8
|
+
['ALA', 'Åland Islands'],
|
9
|
+
['ALB', 'Albania'],
|
10
|
+
['AND', 'Andorra'],
|
11
|
+
['ARE', 'United Arab Emirates'],
|
12
|
+
['ARG', 'Argentina'],
|
13
|
+
['ARM', 'Armenia'],
|
14
|
+
['ASM', 'American Samoa'],
|
15
|
+
['ATA', 'Antarctica'],
|
16
|
+
['ATF', 'French Southern Territories'],
|
17
|
+
['ATG', 'Antigua and Barbuda'],
|
18
|
+
['AUS', 'Australia'],
|
19
|
+
['AUT', 'Austria'],
|
20
|
+
['AZE', 'Azerbaijan'],
|
21
|
+
['BDI', 'Burundi'],
|
22
|
+
['BEL', 'Belgium'],
|
23
|
+
['BEN', 'Benin'],
|
24
|
+
['BES', 'Bonaire, Sint Eustatius and Saba'],
|
25
|
+
['BFA', 'Burkina Faso'],
|
26
|
+
['BGD', 'Bangladesh'],
|
27
|
+
['BGR', 'Bulgaria'],
|
28
|
+
['BHR', 'Bahrain'],
|
29
|
+
['BHS', 'Bahamas'],
|
30
|
+
['BIH', 'Bosnia and Herzegovina'],
|
31
|
+
['BLM', 'Saint Barthélemy'],
|
32
|
+
['BLR', 'Belarus'],
|
33
|
+
['BLZ', 'Belize'],
|
34
|
+
['BMU', 'Bermuda'],
|
35
|
+
['BOL', 'Bolivia, Plurinational State of'],
|
36
|
+
['BRA', 'Brazil'],
|
37
|
+
['BRB', 'Barbados'],
|
38
|
+
['BRN', 'Brunei Darussalam'],
|
39
|
+
['BTN', 'Bhutan'],
|
40
|
+
['BVT', 'Bouvet Island'],
|
41
|
+
['BWA', 'Botswana'],
|
42
|
+
['CAF', 'Central African Republic'],
|
43
|
+
['CAN', 'Canada'],
|
44
|
+
['CCK', 'Cocos (Keeling) Islands'],
|
45
|
+
['CHE', 'Switzerland'],
|
46
|
+
['CHL', 'Chile'],
|
47
|
+
['CHN', 'China'],
|
48
|
+
['CIV', 'Côte d\'Ivoire'],
|
49
|
+
['CMR', 'Cameroon'],
|
50
|
+
['COD', 'Congo, the Democratic Republic of the'],
|
51
|
+
['COG', 'Congo'],
|
52
|
+
['COK', 'Cook Islands'],
|
53
|
+
['COL', 'Colombia'],
|
54
|
+
['COM', 'Comoros'],
|
55
|
+
['CPV', 'Cabo Verde'],
|
56
|
+
['CRI', 'Costa Rica'],
|
57
|
+
['CUB', 'Cuba'],
|
58
|
+
['CUW', 'Curaçao'],
|
59
|
+
['CXR', 'Christmas Island'],
|
60
|
+
['CYM', 'Cayman Islands'],
|
61
|
+
['CYP', 'Cyprus'],
|
62
|
+
['CZE', 'Czechia'],
|
63
|
+
['DEU', 'Germany'],
|
64
|
+
['DJI', 'Djibouti'],
|
65
|
+
['DMA', 'Dominica'],
|
66
|
+
['DNK', 'Denmark'],
|
67
|
+
['DOM', 'Dominican Republic'],
|
68
|
+
['DZA', 'Algeria'],
|
69
|
+
['ECU', 'Ecuador'],
|
70
|
+
['EGY', 'Egypt'],
|
71
|
+
['ERI', 'Eritrea'],
|
72
|
+
['ESH', 'Western Sahara'],
|
73
|
+
['ESP', 'Spain'],
|
74
|
+
['EST', 'Estonia'],
|
75
|
+
['ETH', 'Ethiopia'],
|
76
|
+
['FIN', 'Finland'],
|
77
|
+
['FJI', 'Fiji'],
|
78
|
+
['FLK', 'Falkland Islands (Malvinas)'],
|
79
|
+
['FRA', 'France'],
|
80
|
+
['FRO', 'Faroe Islands'],
|
81
|
+
['FSM', 'Micronesia, Federated States of'],
|
82
|
+
['GAB', 'Gabon'],
|
83
|
+
['GBR', 'United Kingdom'],
|
84
|
+
['GEO', 'Georgia'],
|
85
|
+
['GGY', 'Guernsey'],
|
86
|
+
['GHA', 'Ghana'],
|
87
|
+
['GIB', 'Gibraltar'],
|
88
|
+
['GIN', 'Guinea'],
|
89
|
+
['GLP', 'Guadeloupe'],
|
90
|
+
['GMB', 'Gambia'],
|
91
|
+
['GNB', 'Guinea-Bissau'],
|
92
|
+
['GNQ', 'Equatorial Guinea'],
|
93
|
+
['GRC', 'Greece'],
|
94
|
+
['GRD', 'Grenada'],
|
95
|
+
['GRL', 'Greenland'],
|
96
|
+
['GTM', 'Guatemala'],
|
97
|
+
['GUF', 'French Guiana'],
|
98
|
+
['GUM', 'Guam'],
|
99
|
+
['GUY', 'Guyana'],
|
100
|
+
['HKG', 'Hong Kong'],
|
101
|
+
['HMD', 'Heard Island and McDonald Islands'],
|
102
|
+
['HND', 'Honduras'],
|
103
|
+
['HRV', 'Croatia'],
|
104
|
+
['HTI', 'Haiti'],
|
105
|
+
['HUN', 'Hungary'],
|
106
|
+
['IDN', 'Indonesia'],
|
107
|
+
['IMN', 'Isle of Man'],
|
108
|
+
['IND', 'India'],
|
109
|
+
['IOT', 'British Indian Ocean Territory'],
|
110
|
+
['IRL', 'Ireland'],
|
111
|
+
['IRN', 'Iran, Islamic Republic of'],
|
112
|
+
['IRQ', 'Iraq'],
|
113
|
+
['ISL', 'Iceland'],
|
114
|
+
['ISR', 'Israel'],
|
115
|
+
['ITA', 'Italy'],
|
116
|
+
['JAM', 'Jamaica'],
|
117
|
+
['JEY', 'Jersey'],
|
118
|
+
['JOR', 'Jordan'],
|
119
|
+
['JPN', 'Japan'],
|
120
|
+
['KAZ', 'Kazakhstan'],
|
121
|
+
['KEN', 'Kenya'],
|
122
|
+
['KGZ', 'Kyrgyzstan'],
|
123
|
+
['KHM', 'Cambodia'],
|
124
|
+
['KIR', 'Kiribati'],
|
125
|
+
['KNA', 'Saint Kitts and Nevis'],
|
126
|
+
['KOR', 'Korea, Republic of'],
|
127
|
+
['KWT', 'Kuwait'],
|
128
|
+
['LAO', 'Lao People\'s Democratic Republic'],
|
129
|
+
['LBN', 'Lebanon'],
|
130
|
+
['LBR', 'Liberia'],
|
131
|
+
['LBY', 'Libya'],
|
132
|
+
['LCA', 'Saint Lucia'],
|
133
|
+
['LIE', 'Liechtenstein'],
|
134
|
+
['LKA', 'Sri Lanka'],
|
135
|
+
['LSO', 'Lesotho'],
|
136
|
+
['LTU', 'Lithuania'],
|
137
|
+
['LUX', 'Luxembourg'],
|
138
|
+
['LVA', 'Latvia'],
|
139
|
+
['MAC', 'Macao'],
|
140
|
+
['MAF', 'Saint Martin (French part)'],
|
141
|
+
['MAR', 'Morocco'],
|
142
|
+
['MCO', 'Monaco'],
|
143
|
+
['MDA', 'Moldova, Republic of'],
|
144
|
+
['MDG', 'Madagascar'],
|
145
|
+
['MDV', 'Maldives'],
|
146
|
+
['MEX', 'Mexico'],
|
147
|
+
['MHL', 'Marshall Islands'],
|
148
|
+
['MKD', 'Macedonia, the former Yugoslav Republic of'],
|
149
|
+
['MLI', 'Mali'],
|
150
|
+
['MLT', 'Malta'],
|
151
|
+
['MMR', 'Myanmar'],
|
152
|
+
['MNE', 'Montenegro'],
|
153
|
+
['MNG', 'Mongolia'],
|
154
|
+
['MNP', 'Northern Mariana Islands'],
|
155
|
+
['MOZ', 'Mozambique'],
|
156
|
+
['MRT', 'Mauritania'],
|
157
|
+
['MSR', 'Montserrat'],
|
158
|
+
['MTQ', 'Martinique'],
|
159
|
+
['MUS', 'Mauritius'],
|
160
|
+
['MWI', 'Malawi'],
|
161
|
+
['MYS', 'Malaysia'],
|
162
|
+
['MYT', 'Mayotte'],
|
163
|
+
['NAM', 'Namibia'],
|
164
|
+
['NCL', 'New Caledonia'],
|
165
|
+
['NER', 'Niger'],
|
166
|
+
['NFK', 'Norfolk Island'],
|
167
|
+
['NGA', 'Nigeria'],
|
168
|
+
['NIC', 'Nicaragua'],
|
169
|
+
['NIU', 'Niue'],
|
170
|
+
['NLD', 'Netherlands'],
|
171
|
+
['NOR', 'Norway'],
|
172
|
+
['NPL', 'Nepal'],
|
173
|
+
['NRU', 'Nauru'],
|
174
|
+
['NZL', 'New Zealand'],
|
175
|
+
['OMN', 'Oman'],
|
176
|
+
['PAK', 'Pakistan'],
|
177
|
+
['PAN', 'Panama'],
|
178
|
+
['PCN', 'Pitcairn'],
|
179
|
+
['PER', 'Peru'],
|
180
|
+
['PHL', 'Philippines'],
|
181
|
+
['PLW', 'Palau'],
|
182
|
+
['PNG', 'Papua New Guinea'],
|
183
|
+
['POL', 'Poland'],
|
184
|
+
['PRI', 'Puerto Rico'],
|
185
|
+
['PRK', 'Korea, Democratic People\'s Republic of'],
|
186
|
+
['PRT', 'Portugal'],
|
187
|
+
['PRY', 'Paraguay'],
|
188
|
+
['PSE', 'Palestine, State of'],
|
189
|
+
['PYF', 'French Polynesia'],
|
190
|
+
['QAT', 'Qatar'],
|
191
|
+
['REU', 'Réunion'],
|
192
|
+
['ROU', 'Romania'],
|
193
|
+
['RUS', 'Russian Federation'],
|
194
|
+
['RWA', 'Rwanda'],
|
195
|
+
['SAU', 'Saudi Arabia'],
|
196
|
+
['SDN', 'Sudan'],
|
197
|
+
['SEN', 'Senegal'],
|
198
|
+
['SGP', 'Singapore'],
|
199
|
+
['SGS', 'South Georgia and the South Sandwich Islands'],
|
200
|
+
['SHN', 'Saint Helena, Ascension and Tristan da Cunha'],
|
201
|
+
['SJM', 'Svalbard and Jan Mayen'],
|
202
|
+
['SLB', 'Solomon Islands'],
|
203
|
+
['SLE', 'Sierra Leone'],
|
204
|
+
['SLV', 'El Salvador'],
|
205
|
+
['SMR', 'San Marino'],
|
206
|
+
['SOM', 'Somalia'],
|
207
|
+
['SPM', 'Saint Pierre and Miquelon'],
|
208
|
+
['SRB', 'Serbia'],
|
209
|
+
['SSD', 'South Sudan'],
|
210
|
+
['STP', 'Sao Tome and Principe'],
|
211
|
+
['SUR', 'Suriname'],
|
212
|
+
['SVK', 'Slovakia'],
|
213
|
+
['SVN', 'Slovenia'],
|
214
|
+
['SWE', 'Sweden'],
|
215
|
+
['SWZ', 'Swaziland'],
|
216
|
+
['SXM', 'Sint Maarten (Dutch part)'],
|
217
|
+
['SYC', 'Seychelles'],
|
218
|
+
['SYR', 'Syrian Arab Republic'],
|
219
|
+
['TCA', 'Turks and Caicos Islands'],
|
220
|
+
['TCD', 'Chad'],
|
221
|
+
['TGO', 'Togo'],
|
222
|
+
['THA', 'Thailand'],
|
223
|
+
['TJK', 'Tajikistan'],
|
224
|
+
['TKL', 'Tokelau'],
|
225
|
+
['TKM', 'Turkmenistan'],
|
226
|
+
['TLS', 'Timor-Leste'],
|
227
|
+
['TON', 'Tonga'],
|
228
|
+
['TTO', 'Trinidad and Tobago'],
|
229
|
+
['TUN', 'Tunisia'],
|
230
|
+
['TUR', 'Turkey'],
|
231
|
+
['TUV', 'Tuvalu'],
|
232
|
+
['TWN', 'Taiwan, Province of China'],
|
233
|
+
['TZA', 'Tanzania, United Republic of'],
|
234
|
+
['UGA', 'Uganda'],
|
235
|
+
['UKR', 'Ukraine'],
|
236
|
+
['UMI', 'United States Minor Outlying Islands'],
|
237
|
+
['URY', 'Uruguay'],
|
238
|
+
['USA', 'United States of America'],
|
239
|
+
['UZB', 'Uzbekistan'],
|
240
|
+
['VAT', 'Holy See'],
|
241
|
+
['VCT', 'Saint Vincent and the Grenadines'],
|
242
|
+
['VEN', 'Venezuela, Bolivarian Republic of'],
|
243
|
+
['VGB', 'Virgin Islands, British'],
|
244
|
+
['VIR', 'Virgin Islands, U.S.'],
|
245
|
+
['VNM', 'Viet Nam'],
|
246
|
+
['VUT', 'Vanuatu'],
|
247
|
+
['WLF', 'Wallis and Futuna'],
|
248
|
+
['WSM', 'Samoa'],
|
249
|
+
['YEM', 'Yemen'],
|
250
|
+
['ZAF', 'South Africa'],
|
251
|
+
['ZMB', 'Zambia'],
|
252
|
+
['ZWE', 'Zimbabwe'],
|
253
|
+
]
|
254
|
+
|
255
|
+
def self.select_values
|
256
|
+
@select_values ||= VALUES.map {|a| a.reverse }.sort_by(&:first)
|
257
|
+
end
|
258
|
+
|
259
|
+
def self.valid?(code)
|
260
|
+
(@codes ||= select_values.map(&:last)).include?(code)
|
261
|
+
end
|
262
|
+
|
263
|
+
def self.[](code)
|
264
|
+
(@values ||= Hash[VALUES])[code]
|
265
|
+
end
|
266
|
+
|
267
|
+
def self.usa
|
268
|
+
'USA'
|
269
|
+
end
|
270
|
+
|
271
|
+
def self.usa?(code)
|
272
|
+
usa == code
|
273
|
+
end
|
274
|
+
|
275
|
+
def self.non_usa_select_values
|
276
|
+
@non_us_select_values ||= select_values.reject {|name, code| usa?(code) }
|
277
|
+
end
|
278
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class CountryValidator < ActiveModel::EachValidator
|
2
|
+
def validate_each(record, attribute, value)
|
3
|
+
if value.blank?
|
4
|
+
record.errors[attribute] << 'is required' unless options[:allow_blank] || options[:allow_nil]
|
5
|
+
return
|
6
|
+
end
|
7
|
+
|
8
|
+
record.errors[attribute] << (options[:message] || 'is not a valid country') unless Countries.valid?(value)
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
module DatabaseFunctionHelper
|
2
|
+
def self.select_function(*args)
|
3
|
+
obj = Object.new
|
4
|
+
obj.extend(DatabaseFunctionHelper)
|
5
|
+
|
6
|
+
obj.select_function(*args)
|
7
|
+
end
|
8
|
+
|
9
|
+
def select_function(*args)
|
10
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
11
|
+
|
12
|
+
sql = [ 'SELECT', function_sql(*args) ].join(' ')
|
13
|
+
results = ActiveRecord::Base.connection.execute(sql)
|
14
|
+
|
15
|
+
if type = options[:one]
|
16
|
+
return nil unless results.first
|
17
|
+
return cast_one(type, results.first.values.first)
|
18
|
+
elsif type = options[:values]
|
19
|
+
return cast_values(type, results)
|
20
|
+
end
|
21
|
+
|
22
|
+
results
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
|
27
|
+
def function_sql(*args)
|
28
|
+
function_name = "func_#{args.shift}" # add standard prefix
|
29
|
+
args_sql = to_args_sql(*args)
|
30
|
+
sql = [ function_name, '(', args_sql, ')' ].join
|
31
|
+
Rails.logger.debug sql
|
32
|
+
|
33
|
+
sql
|
34
|
+
end
|
35
|
+
|
36
|
+
def to_args_sql(*args)
|
37
|
+
args.collect do |a|
|
38
|
+
case a
|
39
|
+
when nil
|
40
|
+
'NULL'
|
41
|
+
when true
|
42
|
+
"'t'"
|
43
|
+
when false
|
44
|
+
"'f'"
|
45
|
+
else
|
46
|
+
if a.is_a? Hash
|
47
|
+
[ to_args_sql(a.values.first), '::', a.keys.first.to_s ].join
|
48
|
+
elsif a.is_a? Array
|
49
|
+
"'{#{a.join(',')}}'"
|
50
|
+
else
|
51
|
+
"'#{a}'"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end.join(', ')
|
55
|
+
end
|
56
|
+
|
57
|
+
def cast_one(type, string)
|
58
|
+
return nil if string.nil?
|
59
|
+
|
60
|
+
case type
|
61
|
+
when :boolean
|
62
|
+
return string == 't'
|
63
|
+
when :date
|
64
|
+
return Date.parse(string)
|
65
|
+
when :datetime
|
66
|
+
return Time.parse(string)
|
67
|
+
when :decimal
|
68
|
+
return BigDecimal.new(string)
|
69
|
+
when :float
|
70
|
+
return string.to_f
|
71
|
+
when :integer
|
72
|
+
return string.to_i
|
73
|
+
when :time_of_day
|
74
|
+
return Tod::TimeOfDay.parse(string)
|
75
|
+
when :time_window
|
76
|
+
return TimeWindow.parse_tuple(string)
|
77
|
+
when :timestamp
|
78
|
+
return Time.parse(string)
|
79
|
+
end
|
80
|
+
|
81
|
+
string
|
82
|
+
end
|
83
|
+
|
84
|
+
def cast_values(type, results)
|
85
|
+
values = results.values.map(&:first)
|
86
|
+
values.collect {|val| cast_one(type, val) }
|
87
|
+
end
|
88
|
+
end
|