datacaster 0.9.1

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.
@@ -0,0 +1,21 @@
1
+ module Datacaster
2
+ class Transformer < Base
3
+ def initialize(name, &block)
4
+ raise "Expected block" unless block_given?
5
+
6
+ @name = name
7
+ @transform = block
8
+ end
9
+
10
+ def call(object)
11
+ intermediary_result = super(object)
12
+ object = intermediary_result.value
13
+
14
+ Datacaster.ValidResult(@transform.(object))
15
+ end
16
+
17
+ def inspect
18
+ "#<Datacaster::#{@name}Transformer>"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,27 @@
1
+ module Datacaster
2
+ class Trier < Base
3
+ def initialize(name, error, catched_exception, &block)
4
+ raise "Expected block" unless block_given?
5
+
6
+ @name = name
7
+ @error = error
8
+ @catched_exception = Array(catched_exception)
9
+ @transform = block
10
+ end
11
+
12
+ def call(object)
13
+ intermediary_result = super(object)
14
+ object = intermediary_result.value
15
+
16
+ begin
17
+ Datacaster.ValidResult(@transform.(object))
18
+ rescue *@catched_exception
19
+ Datacaster.ErrorResult([@error])
20
+ end
21
+ end
22
+
23
+ def inspect
24
+ "#<Datacaster::#{@name}Trier>"
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,41 @@
1
+ require 'active_model'
2
+
3
+ module Datacaster
4
+ class Validator < Base
5
+ @@validations = {}
6
+
7
+ def self.create_active_model(validations)
8
+ @@validations[validations] ||=
9
+ Class.new do
10
+ include ActiveModel::Validations
11
+
12
+ attr_accessor :value
13
+
14
+ def self.model_name
15
+ ActiveModel::Name.new(self, nil, "ValidatorModel")
16
+ end
17
+
18
+ if validations.present?
19
+ validates :value, validations
20
+ end
21
+ end.new
22
+ end
23
+
24
+ def initialize(validations, name)
25
+ @name = name
26
+ @validator = self.class.create_active_model(validations)
27
+ end
28
+
29
+ def call(object)
30
+ intermediary_result = super(object)
31
+ object = intermediary_result.value
32
+
33
+ @validator.value = object
34
+ @validator.valid? ? Datacaster.ValidResult(object) : Datacaster.ErrorResult(@validator.errors[:value])
35
+ end
36
+
37
+ def inspect
38
+ "#<Datacaster::#{@name}Validator>"
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module Datacaster
2
+ VERSION = "0.9.1"
3
+ end
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: datacaster
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.1
5
+ platform: ruby
6
+ authors:
7
+ - Eugene Zolotarev
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-08-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.2'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '5.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '12.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: dry-monads
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '1.4'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '1.3'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.4'
75
+ description:
76
+ email:
77
+ - eugzol@gmail.com
78
+ executables: []
79
+ extensions: []
80
+ extra_rdoc_files: []
81
+ files:
82
+ - ".gitignore"
83
+ - ".rspec"
84
+ - ".travis.yml"
85
+ - Gemfile
86
+ - Gemfile.lock
87
+ - LICENSE.txt
88
+ - README.md
89
+ - Rakefile
90
+ - bin/console
91
+ - bin/setup
92
+ - datacaster.gemspec
93
+ - lib/datacaster.rb
94
+ - lib/datacaster/absent.rb
95
+ - lib/datacaster/and_node.rb
96
+ - lib/datacaster/and_with_error_aggregation_node.rb
97
+ - lib/datacaster/array_schema.rb
98
+ - lib/datacaster/base.rb
99
+ - lib/datacaster/caster.rb
100
+ - lib/datacaster/checker.rb
101
+ - lib/datacaster/comparator.rb
102
+ - lib/datacaster/hash_mapper.rb
103
+ - lib/datacaster/hash_schema.rb
104
+ - lib/datacaster/or_node.rb
105
+ - lib/datacaster/predefined.rb
106
+ - lib/datacaster/result.rb
107
+ - lib/datacaster/runner_context.rb
108
+ - lib/datacaster/terminator.rb
109
+ - lib/datacaster/then_node.rb
110
+ - lib/datacaster/transformer.rb
111
+ - lib/datacaster/trier.rb
112
+ - lib/datacaster/validator.rb
113
+ - lib/datacaster/version.rb
114
+ homepage: https://github.com/EugZol/datacaster
115
+ licenses:
116
+ - MIT
117
+ metadata:
118
+ source_code_uri: https://github.com/EugZol/datacaster
119
+ post_install_message:
120
+ rdoc_options: []
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 2.3.0
128
+ required_rubygems_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ requirements: []
134
+ rubygems_version: 3.1.2
135
+ signing_key:
136
+ specification_version: 4
137
+ summary: Run-time type checker and transformer for Ruby
138
+ test_files: []