dry_struct_generator 0.1.0 → 0.2.0

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
  SHA256:
3
- metadata.gz: 03eb09a3e1aee66ef97633cfbe4ff5414697c63cfff27892425275e2a637461a
4
- data.tar.gz: 55c680dc52f23968f539609427b19b72387a1aaf79e71762833c009ead6bc945
3
+ metadata.gz: 331956d915c216ff8914c45d61b4ee0928a84e509007c2aad38377748e336f32
4
+ data.tar.gz: 3a2d129137904e648e2e9a9cff814d8b3ad34bfae285fd3e0657d23d875cda4f
5
5
  SHA512:
6
- metadata.gz: 3a8870bedfa57fc0039ac7facb3a9d746980c9d82928e065da0042abb3b7fba1a1ebcbba19ef90c95ff3705c65220c0e50164e7e9196f6f53b089f8d6c16b792
7
- data.tar.gz: 7471ac67b9c525402ec0e17da2bfdaa1379bc9044611deca58540d5989a288389eaae1285327471e042da7411b0c2d4bea702ed6d0fdca10577f0249a0abd2fe
6
+ metadata.gz: 972be3883f6fec30329e1cac25dfd545d217bf4a7c659246a32df8de856577bbcc755b3fdf420bca07f2d145637bd485e88705194e9fa75b9fbbc6f882b0719b
7
+ data.tar.gz: 3720ad2e90a59fc83d6e71a4c7f2a95dd8be5b09fc92d4aa01cc43165e9c84ba28629350be92dd6b97d776c4c5de875a826572b9c962ea8d2963d8d3b17d57b9
data/.rubocop.yml CHANGED
@@ -1,5 +1,8 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.6
3
+ Exclude:
4
+ - 'spec/**/*.rb'
5
+ - 'vendor/bundle/**/*'
3
6
 
4
7
  Style/StringLiterals:
5
8
  Enabled: true
@@ -11,3 +14,27 @@ Style/StringLiteralsInInterpolation:
11
14
 
12
15
  Layout/LineLength:
13
16
  Max: 120
17
+
18
+ Metrics/MethodLength:
19
+ Max: 20
20
+
21
+ Documentation:
22
+ Enabled: false
23
+
24
+ Metrics/AbcSize:
25
+ Enabled: false
26
+
27
+ Metrics/BlockLength:
28
+ Max: 40
29
+
30
+ Metrics/ClassLength:
31
+ Max: 200
32
+
33
+ Metrics/PerceivedComplexity:
34
+ Max: 10
35
+
36
+ Metrics/CyclomaticComplexity:
37
+ Max: 10
38
+
39
+ Style/ClassVars:
40
+ Enabled: false
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DryStructGenerator
2
4
  module Config
3
5
  module Configuration
@@ -26,4 +28,4 @@ module DryStructGenerator
26
28
  end
27
29
  end
28
30
  end
29
- end
31
+ end
@@ -1,4 +1,6 @@
1
- require 'dry_struct_generator/types'
1
+ # frozen_string_literal: true
2
+
3
+ require "dry_struct_generator/types"
2
4
 
3
5
  module DryStructGenerator
4
6
  module Config
@@ -19,4 +21,4 @@ module DryStructGenerator
19
21
  }.freeze
20
22
  end
21
23
  end
22
- end
24
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DryStructGenerator
2
4
  class StructGenerator
3
5
  @@definitions = {}
@@ -20,6 +22,7 @@ module DryStructGenerator
20
22
 
21
23
  def call(validator, options = {})
22
24
  return @@definitions[validator] if @@definitions[validator]
25
+
23
26
  validator_definition = validation_schema_parser.new.call(validator).keys.merge(options)
24
27
  result = generate(validator_definition)
25
28
 
@@ -30,27 +33,27 @@ module DryStructGenerator
30
33
 
31
34
  def generate(validator_definition)
32
35
  instance = self
33
- Class.new(self.struct_class) do
36
+ Class.new(struct_class) do
34
37
  validator_definition.each do |field_name, schema|
35
38
  type = instance.get_field_type(schema)
36
- schema.dig(:required) ? attribute(field_name.to_sym, type) : attribute?(field_name.to_sym, type)
39
+ schema[:required] ? attribute(field_name.to_sym, type) : attribute?(field_name.to_sym, type)
37
40
  end
38
41
  end
39
42
  end
40
43
 
41
44
  def get_field_type(schema)
42
- if schema.dig(:array)
45
+ if schema[:array]
43
46
  type = type_to_dry_type[:array]
44
- schema.dig(:keys) ? type = type.of(generate(schema.dig(:keys).to_sym)) :
45
- type = type.of(type_to_dry_type[schema.dig(:type).to_sym])
46
- elsif schema.dig(:keys)
47
- type = generate(schema.dig(:keys))
47
+ type = schema[:keys] ? type.of(generate(schema[:keys].to_sym)) : type.of(type_to_dry_type[schema[:type].to_sym])
48
+ elsif schema[:keys]
49
+ type = generate(schema[:keys])
48
50
  else
49
- type = type_to_dry_type[schema.dig(:type).to_sym]
50
- type = type.optional if schema.dig(:nullable)
51
+ type = type_to_dry_type[schema[:type].to_sym]
52
+ type = type.optional if schema[:nullable]
53
+ type = type.default(schema[:default]) if schema[:default]
51
54
  end
52
55
 
53
56
  type
54
57
  end
55
58
  end
56
- end
59
+ end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DryStructGenerator
2
4
  module Types
3
5
  include Dry.Types()
4
6
  end
5
- end
7
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DryStructGenerator
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry-types'
4
- require 'dry-struct'
5
- require 'dry_validation_parser'
3
+ require "dry-types"
4
+ require "dry-struct"
5
+ require "dry_validation_parser"
6
6
  require_relative "dry_struct_generator/version"
7
7
  require_relative "dry_struct_generator/config/configuration"
8
8
  require_relative "dry_struct_generator/config/generator_configuration"
9
- require_relative 'dry_struct_generator/types'
10
- require_relative 'dry_struct_generator/struct_generator'
9
+ require_relative "dry_struct_generator/types"
10
+ require_relative "dry_struct_generator/struct_generator"
11
11
 
12
12
  module DryStructGenerator
13
13
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry_struct_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jane-Terziev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-18 00:00:00.000000000 Z
11
+ date: 2024-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct