rsmart_toolbox 0.6 → 0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27fabd26f64bc774e3d4bbfefd30d7cc519bd561
4
- data.tar.gz: 888167314f2c75e27f67461cdf8592f9f394440f
3
+ metadata.gz: 8df8ae09435c7a5b1e5020d14b9d25cd8139eab0
4
+ data.tar.gz: 2a344b354dab13174e72ef5ecf07965be1cc7847
5
5
  SHA512:
6
- metadata.gz: e75b6da705654223a6ff1b8f36eb9d049c46511448d7eb8da9d2512f27b82b63f4c006d15dc85c03c592b7e713e7ec41687da6156581eba30754d4719294cb79
7
- data.tar.gz: 3fc723d8d3595c88425cf35fdcd2a518f5c67bf2f71153ce9702a097660f84c75522a40ea7f8d20e2a35bf87041567bf57d33527e538df34e5bcf42505979597
6
+ metadata.gz: 401fc57dff32377887e72ee52c6438828da22abc8dd60f3dcd5cff9f5bcfbefc5643f8ac4e5911ef93a2aa1257a61be5de470467ffb104373d9bb5a53b41a342
7
+ data.tar.gz: 4547735ef1c185689c2fb76d2e38caf4e373292e30bcba2aa65563aece83a090821f6929beb897e574354229d527be7a057cfe72a05f5b4e860d6497afed2f37
checksums.yaml.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -21,7 +21,7 @@ gem 'rsmart_toolbox'
21
21
 
22
22
  And then execute:
23
23
 
24
- $ bundle
24
+ $ bundle install
25
25
 
26
26
  ## Usage
27
27
 
@@ -16,9 +16,17 @@
16
16
 
17
17
  require "rsmart_toolbox/etl"
18
18
 
19
+ # rSmart Grant and Research Management methods.
19
20
  module Rsmart::ETL::GRM
20
21
 
21
- def self.parse_rolodex_id!(row, insert_str, values_str, opt={})
22
+ # Parses the <tt>ROLODEX_ID</tt> by column :name and mutates the SQL statement accordingly.
23
+ # @param row [CSV::Row] the CSV Row being parsed
24
+ # @param insert_str [String] the left side of the insert statement (i.e. columns)
25
+ # @param values_str [String] the right side of the insert statement (i.e. values)
26
+ # @param opt [Hash] options Hash will be passed through to {Rsmart::ETL.parse_integer!}.
27
+ # @return [void]
28
+ # @see parse_integer!
29
+ def self.parse_rolodex_id!(row, insert_str, values_str, opt={ name: 'ROLODEX_ID', required: true, length: 6 })
22
30
  # `ROLODEX_ID` decimal(6,0) NOT NULL DEFAULT '0',
23
31
  opt[:name] = "ROLODEX_ID" if opt[:name].nil?
24
32
  opt[:required] = true if opt[:required].nil?
@@ -26,21 +34,42 @@ module Rsmart::ETL::GRM
26
34
  Rsmart::ETL::parse_integer! row, insert_str, values_str, opt
27
35
  end
28
36
 
29
- def self.parse_country_code!(row, insert_str, values_str, opt={})
37
+ # Parses the <tt>COUNTRY_CODE</tt> by column :name and mutates the SQL statement accordingly.
38
+ # @param row [CSV::Row] the CSV Row being parsed
39
+ # @param insert_str [String] the left side of the insert statement (i.e. columns)
40
+ # @param values_str [String] the right side of the insert statement (i.e. values)
41
+ # @param opt [Hash] options Hash will be passed through to {Rsmart::ETL.parse_string!}.
42
+ # @return [void]
43
+ # @see parse_string!
44
+ def self.parse_country_code!(row, insert_str, values_str, opt={ name: 'COUNTRY_CODE', length: 3 })
30
45
  # `COUNTRY_CODE` char(3) COLLATE utf8_bin DEFAULT NULL,
31
46
  opt[:name] = "COUNTRY_CODE" if opt[:name].nil?
32
47
  opt[:length] = 3 if opt[:length].nil?
33
48
  Rsmart::ETL::parse_string! row, insert_str, values_str, opt
34
49
  end
35
50
 
36
- def self.parse_state!(row, insert_str, values_str, opt={})
51
+ # Parses the <tt>STATE</tt> by column :name and mutates the SQL statement accordingly.
52
+ # @param row [CSV::Row] the CSV Row being parsed
53
+ # @param insert_str [String] the left side of the insert statement (i.e. columns)
54
+ # @param values_str [String] the right side of the insert statement (i.e. values)
55
+ # @param opt [Hash] options Hash will be passed through to {Rsmart::ETL.parse_string!}.
56
+ # @return [void]
57
+ # @see parse_string!
58
+ def self.parse_state!(row, insert_str, values_str, opt={ name: 'STATE', length: 30 })
37
59
  # `STATE` varchar(30) COLLATE utf8_bin DEFAULT NULL,
38
60
  opt[:name] = "STATE" if opt[:name].nil?
39
61
  opt[:length] = 30 if opt[:length].nil?
40
62
  Rsmart::ETL::parse_string! row, insert_str, values_str, opt
41
63
  end
42
64
 
43
- def self.parse_sponsor_code!(row, insert_str, values_str, opt={})
65
+ # Parses the <tt>SPONSOR_CODE</tt> by column :name and mutates the SQL statement accordingly.
66
+ # @param row [CSV::Row] the CSV Row being parsed
67
+ # @param insert_str [String] the left side of the insert statement (i.e. columns)
68
+ # @param values_str [String] the right side of the insert statement (i.e. values)
69
+ # @param opt [Hash] options Hash will be passed through to {Rsmart::ETL.parse_string!}.
70
+ # @return [void]
71
+ # @see parse_string!
72
+ def self.parse_sponsor_code!(row, insert_str, values_str, opt={ name: 'SPONSOR_CODE', required: true, length: 6 })
44
73
  # `SPONSOR_CODE` char(6) COLLATE utf8_bin NOT NULL DEFAULT '',
45
74
  opt[:name] = "SPONSOR_CODE" if opt[:name].nil?
46
75
  opt[:required] = true if opt[:required].nil?
@@ -48,14 +77,28 @@ module Rsmart::ETL::GRM
48
77
  Rsmart::ETL::parse_string! row, insert_str, values_str, opt
49
78
  end
50
79
 
51
- def self.parse_postal_code!(row, insert_str, values_str, opt={})
80
+ # Parses the <tt>POSTAL_CODE</tt> by column :name and mutates the SQL statement accordingly.
81
+ # @param row [CSV::Row] the CSV Row being parsed
82
+ # @param insert_str [String] the left side of the insert statement (i.e. columns)
83
+ # @param values_str [String] the right side of the insert statement (i.e. values)
84
+ # @param opt [Hash] options Hash will be passed through to {Rsmart::ETL.parse_string!}.
85
+ # @return [void]
86
+ # @see parse_string!
87
+ def self.parse_postal_code!(row, insert_str, values_str, opt={ name: 'POSTAL_CODE', length: 15 })
52
88
  # `POSTAL_CODE` varchar(15) COLLATE utf8_bin DEFAULT NULL,
53
89
  opt[:name] = "POSTAL_CODE" if opt[:name].nil?
54
90
  opt[:length] = 15 if opt[:length].nil?
55
91
  Rsmart::ETL::parse_string! row, insert_str, values_str, opt
56
92
  end
57
93
 
58
- def self.parse_owned_by_unit!(row, insert_str, values_str, opt={})
94
+ # Parses the <tt>OWNED_BY_UNIT</tt> by column :name and mutates the SQL statement accordingly.
95
+ # @param row [CSV::Row] the CSV Row being parsed
96
+ # @param insert_str [String] the left side of the insert statement (i.e. columns)
97
+ # @param values_str [String] the right side of the insert statement (i.e. values)
98
+ # @param opt [Hash] options Hash will be passed through to {Rsmart::ETL.parse_string!}.
99
+ # @return [void]
100
+ # @see parse_string!
101
+ def self.parse_owned_by_unit!(row, insert_str, values_str, opt={ name: 'OWNED_BY_UNIT', required: true, length: 8 })
59
102
  # `OWNED_BY_UNIT` varchar(8) COLLATE utf8_bin NOT NULL,
60
103
  opt[:name] = "OWNED_BY_UNIT" if opt[:name].nil?
61
104
  opt[:required] = true if opt[:required].nil?
@@ -63,7 +106,14 @@ module Rsmart::ETL::GRM
63
106
  Rsmart::ETL::parse_string! row, insert_str, values_str, opt
64
107
  end
65
108
 
66
- def self.parse_email_address(str, opt={})
109
+ # Parse an <tt>EMAIL_ADDRESS</tt> from a String.
110
+ # @note The result is validated against a email address RegExp.
111
+ # @param [String] str the String to be parsed.
112
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
113
+ # @return [String] the parsed <tt>EMAIL_ADDRESS</tt>.
114
+ # @raise [TextParseError] if the email address is not valid.
115
+ # @see parse_string
116
+ def self.parse_email_address(str, opt={ name: 'EMAIL_ADDRESS', length: 60 })
67
117
  # `EMAIL_ADDRESS` varchar(60) COLLATE utf8_bin DEFAULT NULL,
68
118
  opt[:name] = "EMAIL_ADDRESS" if opt[:name].nil?
69
119
  opt[:length] = 60 if opt[:length].nil?
@@ -71,14 +121,27 @@ module Rsmart::ETL::GRM
71
121
  return Rsmart::ETL::parse_string str, opt
72
122
  end
73
123
 
74
- def self.parse_email_address!(row, insert_str, values_str, opt={})
124
+ # Parses the <tt>EMAIL_ADDRESS</tt> by column :name and mutates the SQL statement accordingly.
125
+ # @param row [CSV::Row] the CSV Row being parsed
126
+ # @param insert_str [String] the left side of the insert statement (i.e. columns)
127
+ # @param values_str [String] the right side of the insert statement (i.e. values)
128
+ # @param opt [Hash] options Hash will be passed through to {parse_email_address}.
129
+ # @return [void]
130
+ # @see parse_email_address
131
+ # @see mutate_sql_stmt!
132
+ def self.parse_email_address!(row, insert_str, values_str, opt={ name: 'EMAIL_ADDRESS' })
75
133
  # `EMAIL_ADDRESS` varchar(60) COLLATE utf8_bin DEFAULT NULL,
76
134
  opt[:name] = "EMAIL_ADDRESS" if opt[:name].nil?
77
135
  email_address = parse_email_address row[ Rsmart::ETL::to_symbol( opt[:name] ) ]
78
136
  Rsmart::ETL::mutate_sql_stmt! insert_str, opt[:name], values_str, email_address
79
137
  end
80
138
 
81
- def self.parse_principal_id(str, opt={})
139
+ # Parse a <tt>PRNCPL_ID</tt> from a String.
140
+ # @param [String] str the String to be parsed.
141
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
142
+ # @return [String] the parsed <tt>PRNCPL_ID</tt>.
143
+ # @see parse_string
144
+ def self.parse_principal_id(str, opt={ name: 'PRNCPL_ID', required: true, length: 40 })
82
145
  # `PRNCPL_ID` varchar(40) COLLATE utf8_bin NOT NULL DEFAULT '',
83
146
  opt[:name] = "PRNCPL_ID" if opt[:name].nil?
84
147
  opt[:required] = true if opt[:required].nil?
@@ -86,7 +149,12 @@ module Rsmart::ETL::GRM
86
149
  Rsmart::ETL::parse_string str, opt
87
150
  end
88
151
 
89
- def self.parse_principal_name(str, opt={})
152
+ # Parse a <tt>PRNCPL_NM</tt> from a String.
153
+ # @param [String] str the String to be parsed.
154
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
155
+ # @return [String] the parsed <tt>PRNCPL_NM</tt>.
156
+ # @see parse_string
157
+ def self.parse_principal_name(str, opt={ name: 'PRNCPL_NM', required: true, length: 100 })
90
158
  # `PRNCPL_NM` varchar(100) COLLATE utf8_bin NOT NULL,
91
159
  opt[:name] = "PRNCPL_NM" if opt[:name].nil?
92
160
  opt[:length] = 100 if opt[:length].nil?
@@ -98,36 +166,65 @@ module Rsmart::ETL::GRM
98
166
  return prncpl_nm
99
167
  end
100
168
 
101
- def self.parse_emp_stat_cd(str, opt={})
169
+ # Parse an <tt>EMP_STAT_CD</tt> from a String.
170
+ # @param [String] str the String to be parsed.
171
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
172
+ # @return [String] the parsed <tt>EMP_STAT_CD</tt>.
173
+ # @raise [TextParseError] if the <tt>EMP_STAT_CD</tt> is not valid.
174
+ # @see parse_string
175
+ def self.parse_emp_stat_cd(str, opt={ name: 'EMP_STAT_CD', valid_values: /^(A|D|L|N|P|R|S|T)$/i })
102
176
  # `EMP_STAT_CD` varchar(40) COLLATE utf8_bin DEFAULT NULL,
103
177
  opt[:name] = "EMP_STAT_CD" if opt[:name].nil?
104
178
  opt[:valid_values] = /^(A|D|L|N|P|R|S|T)$/i if opt[:valid_values].nil?
105
179
  return Rsmart::ETL::parse_flag str, opt
106
180
  end
107
181
 
108
- def self.parse_emp_typ_cd(str, opt={})
182
+ # Parse an <tt>EMP_TYP_CD</tt> from a String.
183
+ # @param [String] str the String to be parsed.
184
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
185
+ # @return [String] the parsed <tt>EMP_TYP_CD</tt>.
186
+ # @raise [TextParseError] if the <tt>EMP_TYP_CD</tt> is not valid.
187
+ # @see parse_string
188
+ def self.parse_emp_typ_cd(str, opt={ name: 'EMP_TYP_CD', valid_values: /^(N|O|P)$/i })
109
189
  # `EMP_TYP_CD` varchar(40) COLLATE utf8_bin DEFAULT NULL,
110
190
  opt[:name] = "EMP_TYP_CD" if opt[:name].nil?
111
191
  opt[:valid_values] = /^(N|O|P)$/i if opt[:valid_values].nil?
112
192
  return Rsmart::ETL::parse_flag str, opt
113
193
  end
114
194
 
115
- def self.parse_address_type_code(str, opt={})
116
- # TODO find real column name
195
+ # Parse an <tt>ADDR_TYP_CD</tt> from a String.
196
+ # @param [String] str the String to be parsed.
197
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
198
+ # @return [String] the parsed <tt>ADDR_TYP_CD</tt>.
199
+ # @raise [TextParseError] if the <tt>ADDR_TYP_CD</tt> is not valid.
200
+ # @see parse_string
201
+ def self.parse_address_type_code(str, opt={ name: 'ADDR_TYP_CD', length: 3, valid_values: /^(HM|OTH|WRK)$/i })
117
202
  opt[:name] = "ADDR_TYP_CD" if opt[:name].nil?
118
203
  opt[:length] = 3 if opt[:length].nil?
119
204
  opt[:valid_values] = /^(HM|OTH|WRK)$/i if opt[:valid_values].nil?
120
205
  return Rsmart::ETL::parse_flag str, opt
121
206
  end
122
207
 
123
- def self.parse_name_code(str, opt={})
208
+ # Parse a <tt>NM_TYP_CD</tt> from a String.
209
+ # @param [String] str the String to be parsed.
210
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
211
+ # @return [String] the parsed <tt>NM_TYP_CD</tt>.
212
+ # @raise [TextParseError] if the <tt>NM_TYP_CD</tt> is not valid.
213
+ # @see parse_string
214
+ def self.parse_name_code(str, opt={ name: 'NM_TYP_CD', length: 4, valid_values: /^(OTH|PRFR|PRM)$/i })
124
215
  opt[:name] = "NM_TYP_CD" if opt[:name].nil?
125
216
  opt[:length] = 4 if opt[:length].nil?
126
217
  opt[:valid_values] = /^(OTH|PRFR|PRM)$/i if opt[:valid_values].nil?
127
218
  return Rsmart::ETL::parse_flag str, opt
128
219
  end
129
220
 
130
- def self.parse_prefix(str, opt={})
221
+ # Parse a <tt>PREFIX_NM</tt> from a String.
222
+ # @param [String] str the String to be parsed.
223
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
224
+ # @return [String] the parsed <tt>PREFIX_NM</tt>.
225
+ # @raise [TextParseError] if the <tt>PREFIX_NM</tt> is not valid.
226
+ # @see parse_string
227
+ def self.parse_prefix(str, opt={ name: 'PREFIX_NM', length: 3, valid_values: /^(Ms|Mrs|Mr|Dr)?$/ })
131
228
  opt[:name] = "PREFIX_NM" if opt[:name].nil?
132
229
  opt[:length] = 3 if opt[:length].nil?
133
230
  opt[:valid_values] = /^(Ms|Mrs|Mr|Dr)?$/ if opt[:valid_values].nil?
@@ -135,7 +232,13 @@ module Rsmart::ETL::GRM
135
232
  return Rsmart::ETL::parse_flag str, opt
136
233
  end
137
234
 
138
- def self.parse_suffix(str, opt={})
235
+ # Parse a <tt>SUFFIX_NM</tt> from a String.
236
+ # @param [String] str the String to be parsed.
237
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
238
+ # @return [String] the parsed <tt>SUFFIX_NM</tt>.
239
+ # @raise [TextParseError] if the <tt>SUFFIX_NM</tt> is not valid.
240
+ # @see parse_string
241
+ def self.parse_suffix(str, opt={ name: 'SUFFIX_NM', length: 3, valid_values: /^(Jr|Sr|Mr|Md)?$/ })
139
242
  opt[:name] = "SUFFIX_NM" if opt[:name].nil?
140
243
  opt[:length] = 3 if opt[:length].nil?
141
244
  opt[:valid_values] = /^(Jr|Sr|Mr|Md)?$/ if opt[:valid_values].nil?
@@ -143,43 +246,76 @@ module Rsmart::ETL::GRM
143
246
  return Rsmart::ETL::parse_flag str, opt
144
247
  end
145
248
 
146
- def self.parse_phone_type(str, opt={})
147
- # TODO find real column name
249
+ # Parse a <tt>PHONE_TYP_CD</tt> from a String.
250
+ # @param [String] str the String to be parsed.
251
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
252
+ # @return [String] the parsed <tt>PHONE_TYP_CD</tt>.
253
+ # @raise [TextParseError] if the <tt>PHONE_TYP_CD</tt> is not valid.
254
+ # @see parse_string
255
+ def self.parse_phone_type(str, opt={ name: 'PHONE_TYP_CD', length: 3, valid_values: /^(FAX|HM|MBL|OTH|WRK)$/i })
148
256
  opt[:name] = "PHONE_TYP_CD" if opt[:name].nil?
149
257
  opt[:length] = 3 if opt[:length].nil?
150
258
  opt[:valid_values] = /^(FAX|HM|MBL|OTH|WRK)$/i if opt[:valid_values].nil?
151
259
  return Rsmart::ETL::parse_flag str, opt
152
260
  end
153
261
 
154
- def self.parse_phone_number(str, opt={})
155
- # TODO find real column name
262
+ # Parse a <tt>PHONE_NBR</tt> from a String.
263
+ # @param [String] str the String to be parsed.
264
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
265
+ # @return [String] the parsed <tt>PHONE_NBR</tt>.
266
+ # @raise [TextParseError] if the <tt>PHONE_NBR</tt> is not valid.
267
+ # @see parse_string
268
+ def self.parse_phone_number(str, opt={ name: 'PHONE_NBR', length: 12, valid_values: /^(\d{3}-\d{3}-\d{4})?$/ })
156
269
  opt[:name] = "PHONE_NBR" if opt[:name].nil?
157
270
  opt[:length] = 12 if opt[:length].nil?
158
271
  opt[:valid_values] = /^(\d{3}-\d{3}-\d{4})?$/ if opt[:valid_values].nil?
159
272
  return Rsmart::ETL::parse_string str, opt
160
273
  end
161
274
 
162
- def self.parse_email_type(str, opt={})
275
+ # Parse an <tt>EMAIL_TYP_CD</tt> from a String.
276
+ # @param [String] str the String to be parsed.
277
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
278
+ # @return [String] the parsed <tt>EMAIL_TYP_CD</tt>.
279
+ # @raise [TextParseError] if the <tt>EMAIL_TYP_CD</tt> is not valid.
280
+ # @see parse_string
281
+ def self.parse_email_type(str, opt={ name: 'EMAIL_TYP_CD', length: 3, valid_values: /^(HM|OTH|WRK)$/i })
163
282
  opt[:name] = "EMAIL_TYP_CD" if opt[:name].nil?
164
283
  opt[:length] = 3 if opt[:length].nil?
165
284
  opt[:valid_values] = /^(HM|OTH|WRK)$/i if opt[:valid_values].nil?
166
285
  return Rsmart::ETL::parse_flag str, opt
167
286
  end
168
287
 
169
- def self.parse_year(str, opt={})
288
+ # Parse a <tt>YEAR</tt> from a String.
289
+ # @param [String] str the String to be parsed.
290
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
291
+ # @return [String] the parsed <tt>YEAR</tt>.
292
+ # @raise [TextParseError] if the <tt>YEAR</tt> is not valid.
293
+ # @see parse_string
294
+ def self.parse_year(str, opt={ name: 'YEAR', length: 4, valid_values: /^(\d{4})?$/ })
170
295
  opt[:length] = 4 if opt[:length].nil?
171
296
  opt[:valid_values] = /^(\d{4})?$/ if opt[:valid_values].nil?
172
297
  return Rsmart::ETL::parse_string str, opt
173
298
  end
174
299
 
175
- def self.parse_citizenship_type(str, opt={})
300
+ # Parse a <tt>CITIZENSHIP_TYPE_CODE</tt> from a String.
301
+ # @param [String] str the String to be parsed.
302
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
303
+ # @return [String] the parsed <tt>CITIZENSHIP_TYPE_CODE</tt>.
304
+ # @raise [TextParseError] if the <tt>CITIZENSHIP_TYPE_CODE</tt> is not valid.
305
+ # @see parse_string
306
+ def self.parse_citizenship_type(str, opt={ name: 'CITIZENSHIP_TYPE_CODE', valid_values: /^([1-4])$/ })
176
307
  opt[:name] = "CITIZENSHIP_TYPE_CODE" if opt[:name].nil?
177
308
  opt[:valid_values] = /^([1-4])$/ if opt[:valid_values].nil?
178
309
  return Rsmart::ETL::parse_flag str, opt
179
310
  end
180
311
 
181
- def self.parse_degree(str, opt={})
182
- # TODO find real column name
312
+ # Parse a <tt>DEGREE</tt> from a String.
313
+ # @param [String] str the String to be parsed.
314
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
315
+ # @return [String] the parsed <tt>DEGREE</tt>.
316
+ # @raise [TextParseError] if the <tt>DEGREE</tt> is not valid.
317
+ # @see parse_string
318
+ def self.parse_degree(str, opt={ name: 'DEGREE', length: 5 })
183
319
  opt[:name] = "DEGREE" if opt[:name].nil?
184
320
  opt[:length] = 5 if opt[:length].nil?
185
321
  opt[:valid_values] = /^(AS|BA|BComm|BEd|BS|DA|DC|DD|DDS|DEng|DFA|DH|DHA|DMin|DPA|DSN|DVM|DVS|HS|JD|LLD|LLM|MA|MAEd|MArch|MBA|MD|MDS|MDiv|MEE|MEd|MEng|MFA|MIS|MLS|MPA|MPE|MPH|MPd|MPhil|MS|MSEd|MST|MSW|MTh|PhD|PharD|ScD|ThD|UKNW)?$/ if opt[:valid_values].nil?
@@ -187,21 +323,33 @@ module Rsmart::ETL::GRM
187
323
  return Rsmart::ETL::parse_flag str, opt
188
324
  end
189
325
 
190
- # Designed specifically for actv_ind, but could be used on *any*
191
- # fields that matches /^(Y|N)$/i.
192
- def self.parse_actv_ind(str, opt={})
326
+ # Parse an <tt>ACTV_IND</tt> from a String.
327
+ # @note Designed specifically for <tt>ACTV_IND</tt>, but could be used on *any* fields that matches <tt>(Y|N)</tt>.
328
+ # @param [String] str the String to be parsed.
329
+ # @param [Hash] opt options Hash will be passed through to {Rsmart::ETL.parse_string}.
330
+ # @return [String] the parsed <tt>ACTV_IND</tt>.
331
+ # @raise [TextParseError] if the <tt>ACTV_IND</tt> is not valid.
332
+ # @see parse_string
333
+ def self.parse_actv_ind(str, opt={ name: 'ACTV_IND', default: 'Y', valid_values: /^(Y|N)$/i })
193
334
  # `ACTV_IND` varchar(1) COLLATE utf8_bin DEFAULT 'Y',
194
- opt[:name] = "actv_ind" if opt[:name].nil?
335
+ opt[:name] = "ACTV_IND" if opt[:name].nil?
195
336
  opt[:default] = "Y" if opt[:default].nil?
196
337
  opt[:valid_values] = /^(Y|N)$/i if opt[:valid_values].nil?
197
338
  return Rsmart::ETL::parse_flag str, opt
198
339
  end
199
340
 
200
- # Designed specifically for actv_ind, but could be used on *any*
201
- # fields that matches /^(Y|N)$/i.
202
- def self.parse_actv_ind!(row, insert_str, values_str, opt={})
341
+ # Parses the <tt>ACTV_IND</tt> by column :name and mutates the SQL statement accordingly.
342
+ # @note Designed specifically for <tt>ACTV_IND</tt>, but could be used on *any* fields that matches <tt>(Y|N)</tt>.
343
+ # @param row [CSV::Row] the CSV Row being parsed
344
+ # @param insert_str [String] the left side of the insert statement (i.e. columns)
345
+ # @param values_str [String] the right side of the insert statement (i.e. values)
346
+ # @param opt [Hash] options Hash will be passed through to {parse_actv_ind}.
347
+ # @return [void]
348
+ # @see parse_actv_ind
349
+ # @see mutate_sql_stmt!
350
+ def self.parse_actv_ind!(row, insert_str, values_str, opt={ name: 'ACTV_IND' })
203
351
  # `ACTV_IND` varchar(1) COLLATE utf8_bin DEFAULT 'Y',
204
- opt[:name] = "actv_ind" if opt[:name].nil?
352
+ opt[:name] = "ACTV_IND" if opt[:name].nil?
205
353
  actv_ind = parse_actv_ind row[ Rsmart::ETL::to_symbol( opt[:name] ) ]
206
354
  Rsmart::ETL::mutate_sql_stmt! insert_str, opt[:name], values_str, actv_ind
207
355
  end
@@ -16,13 +16,17 @@
16
16
 
17
17
  require "rsmart_toolbox"
18
18
 
19
+ # rSmart extract, transform and load methods.
19
20
  module Rsmart::ETL
20
21
 
22
+ # Any text parsing related errors will use this Exception.
21
23
  class TextParseError < StandardError
22
24
  end
23
25
 
26
+ # Prepares an Exception for consistent error handling.
24
27
  # @param [String, Exception] e the error to handle
25
28
  # @return [Exception] an Exception with a message formatted with $INPUT_LINE_NUMBER.
29
+ # @raise [ArgumentError] if an invalid argument is passed.
26
30
  def self.error(e)
27
31
  if e.kind_of? String
28
32
  # default to TextParseError
@@ -34,8 +38,10 @@ module Rsmart::ETL
34
38
  raise ArgumentError, "Unsupported error type: #{e.class}"
35
39
  end
36
40
 
41
+ # Prepares an Exception for consistent warning handling.
37
42
  # @param [String, Exception] e the warning to handle
38
43
  # @return [Exception] an Exception with a message formatted with $INPUT_LINE_NUMBER.
44
+ # @raise [ArgumentError] if an invalid argument is passed.
39
45
  def self.warning(e)
40
46
  if e.kind_of? String
41
47
  # default to TextParseError
@@ -47,6 +53,7 @@ module Rsmart::ETL
47
53
  raise ArgumentError, "Unsupported error type: #{e.class}"
48
54
  end
49
55
 
56
+ # Tests whether the subject matches one of the valid values.
50
57
  # @param [String, #match] subject used for validity checking.
51
58
  # @param [Array<Object>, Regexp] valid_values all of the possible valid values.
52
59
  # @option opt [Boolean] :case_sensitive performs case sensitive matching
@@ -73,6 +80,7 @@ module Rsmart::ETL
73
80
  return false
74
81
  end
75
82
 
83
+ # Matches the input against a set of well known boolean patterns.
76
84
  # @param [String] str String to be matched against well known boolean patterns.
77
85
  # @option opt [Boolean] :default the default return value if str is empty.
78
86
  # @return [Boolean] the result of matching the str input against well known boolean patterns.
@@ -92,9 +100,11 @@ module Rsmart::ETL
92
100
  raise Rsmart::ETL::error TextParseError.new "invalid value for Boolean: '#{str}'"
93
101
  end
94
102
 
103
+ # Encodes the input String and replaces invalid or undefined characters.
95
104
  # @param [String] str the String to be encoded and invalid characters replaced with valid characters.
96
105
  # @option opt [String] :encoding the character encoding to use.
97
106
  # @return [String] the result of encoding the String and replacing invalid characters with valid characters.
107
+ # @see String#encode
98
108
  def self.encode(str, opt={ encoding: "UTF-8" } )
99
109
  opt[:encoding] = "UTF-8" if opt[:encoding].nil?
100
110
  str.encode( opt[:encoding], :invalid => :replace,
@@ -113,7 +123,7 @@ module Rsmart::ETL
113
123
  encode( str.downcase.gsub(/\s+/, "_").gsub(/\W+/, "") ).to_sym
114
124
  end
115
125
 
116
- # Mutates insert_str and values_str with column_name and value respectively.
126
+ # Mutates two sides of a SQL insert statement: insert_str and values_str with column_name and value respectively.
117
127
  # Proper SQL value quoting will be performed based on object type.
118
128
  # @param [String] insert_str the left side of the insert statement (i.e. columns)
119
129
  # @param [String] column_name the column name to append to insert_str.
@@ -142,6 +152,8 @@ module Rsmart::ETL
142
152
  return str.to_s.gsub("'", "\\\\'")
143
153
  end
144
154
 
155
+ # Parses a string using common parsing behavior with options. This method forms the foundation
156
+ # of all the other parsing methods.
145
157
  # @param [String] str the String to be parsed.
146
158
  # @option opt [String, #to_s] :default the default return value if str is empty. Must respond to #to_s
147
159
  # @option opt [Boolean] :escape_single_quotes escape single quote characters.
@@ -15,5 +15,6 @@
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
16
 
17
17
  module Rsmart
18
- VERSION = "0.6"
18
+ # The gem version number.
19
+ VERSION = "0.7"
19
20
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmart_toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.6'
4
+ version: '0.7'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lance Speelmon
@@ -30,7 +30,7 @@ cert_chain:
30
30
  sKRWzEtHFamxQaIspOja5O4oQKiCbWa90fEuIoCtwyy1rQtL9VKoDTs4vZASXNuc
31
31
  F/lEyekXSjN36uTtlt4LkKLn/k7k5gRbt4+C9Q==
32
32
  -----END CERTIFICATE-----
33
- date: 2014-08-18 00:00:00.000000000 Z
33
+ date: 2014-08-20 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: builder
metadata.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- :���ƂL�bk���������s�q��CĠW ���m��I���yfa�$#(��{���e,��Y
2
- B.R�+�3���k
1
+ �蔱�P��)
2
+ ��.��)��藲�:�ܣwY�O��KL�-�r�
3
+ �7>����{a86U�̘�E^`�M�u�$� y����1.�\d`i�lw�WBs,���
4
+ �9�)���,b"F[���t