schema-model 0.3.5 → 0.3.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da011575b9914ac318fbb72560445ea592d6a90ae38cb585938875545623e0e1
4
- data.tar.gz: 79a01b51f835ce95c06ab76455c6b003195b594320b847ce2c86f65654e7ea23
3
+ metadata.gz: 8c800b07a0df6dbd84e521624bd2904115f40db9502cddb565aeebaa03e481a6
4
+ data.tar.gz: cb99655704a840ab6c20869f44500782760d6e9c6d731b26d2df03ca9c375ebe
5
5
  SHA512:
6
- metadata.gz: c2ee95f2602f4217373b1f65ecbfd8f6f16c39e0cc1d3627f60b34340ba67071b120a336a96017ff2f219a854aca6dcd243fa6dc759a79d223922b10035287f5
7
- data.tar.gz: 9b3a13a9c2e825a47f76b82f19942703be354d5c8ae912d4f1c2b44e9a5f31f3e9134b6df509531be5113ae75eacdf7a225007cbeead2992404f1b442e302d1a
6
+ metadata.gz: d462e67214f46b03f65bce3e2a9d5e6315ef8bd1da3988de59df55bb1d770ee26fa6178c6b72d77cdca37f95f86a0fa14cd2b53c054c7aa936e1ee4ba6585a1a
7
+ data.tar.gz: b6f643ab0b9934b22047821223e3d8f5f8f5f216be3687622f3d3272ef4e65f5d54c51d6bf5559f5f79231b8c1c91b371f06e1bba96ad63182410b8eeb6e2346
data/lib/schema.rb CHANGED
@@ -16,6 +16,7 @@ module Schema
16
16
 
17
17
  # Schema::Parsers are used to convert values into the correct data type
18
18
  module Parsers
19
+ autoload :American, 'schema/parsers/american'
19
20
  autoload :Array, 'schema/parsers/array'
20
21
  autoload :Common, 'schema/parsers/common'
21
22
  autoload :Hash, 'schema/parsers/hash'
@@ -19,6 +19,10 @@ module Schema
19
19
  kls
20
20
  end
21
21
 
22
+ def default_type(options = {}, &block)
23
+ add_type(:default, options, &block)
24
+ end
25
+
22
26
  def dynamic_types
23
27
  schema_options[:types]
24
28
  end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'time'
4
+
5
+ module Schema
6
+ module Parsers
7
+ # Schema::Parsers::American parses dates and times in American format
8
+ module American
9
+ DATE_FORMAT = '%m/%d/%Y'
10
+ TIME_FORMAT = '%m/%d/%Y %H:%M:%S'
11
+
12
+ def parse_american_date(field_name, parsing_errors, value)
13
+ case value
14
+ when Date
15
+ value
16
+ when Time
17
+ value.to_date
18
+ when String
19
+ begin
20
+ Date.strptime(value, DATE_FORMAT)
21
+ rescue ArgumentError
22
+ parsing_errors.add(field_name, ::Schema::ParsingErrors::INVALID)
23
+ nil
24
+ end
25
+ when nil
26
+ nil
27
+ else
28
+ parsing_errors.add(field_name, ::Schema::ParsingErrors::UNHANDLED_TYPE)
29
+ nil
30
+ end
31
+ end
32
+
33
+ def parse_american_time(field_name, parsing_errors, value)
34
+ case value
35
+ when Time
36
+ value
37
+ when Date
38
+ value.to_time
39
+ when String
40
+ begin
41
+ Time.strptime(value, TIME_FORMAT)
42
+ rescue ArgumentError
43
+ parsing_errors.add(field_name, ::Schema::ParsingErrors::INVALID)
44
+ nil
45
+ end
46
+ when nil
47
+ nil
48
+ else
49
+ parsing_errors.add(field_name, ::Schema::ParsingErrors::UNHANDLED_TYPE)
50
+ nil
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Doug Youch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-07 00:00:00.000000000 Z
11
+ date: 2019-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inheritance-helper
@@ -42,6 +42,7 @@ files:
42
42
  - lib/schema/csv_parser.rb
43
43
  - lib/schema/errors.rb
44
44
  - lib/schema/model.rb
45
+ - lib/schema/parsers/american.rb
45
46
  - lib/schema/parsers/array.rb
46
47
  - lib/schema/parsers/common.rb
47
48
  - lib/schema/parsers/hash.rb