typed-parameter 0.2.0 → 0.3.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: d5a39f98f145cc8ca6739aaa4bf0a729264be875ed09ba6308f7f3064870245c
4
- data.tar.gz: 9ada066d064730b375493ead65ba4c594eecd690f2dca4be89bbb12232bcb3fd
3
+ metadata.gz: 27016542e3178c6385e4fdfe27f3520f6f37f5afc49572e04f701a0b261eba92
4
+ data.tar.gz: 991f39290e89d92ede9ae33df068712f3e90fc545e4282ccd7cf5e0bf82fdc4b
5
5
  SHA512:
6
- metadata.gz: 4b3165b35201ee612aca228d6ea55ac271bae117333cec8a6b5028b4c5bbc7021964618e6f94b4724b63893afc594906e9d8f135ae0feb5e99edadd61a2e4947
7
- data.tar.gz: 815563901ab5685a3122caf11a280070d63da903cac667784e826721df94c58dabae3f3e115723819082f67ecb67923fd67a57501911060c4a710658aea81e31
6
+ metadata.gz: 557509df857bfc89d385cabce59a11296fc0ce54751d9060f3da267fc72bd77b5ff4a98e65c488127d83fe0cbe01b2aa18b723325da36819657f5f0615ea4867
7
+ data.tar.gz: 676c8fc68a53c6923407bf104cf54a1825d27db20b40377f4f0c2d0800fe5910843c6e775c6cea5b862c30d92b50faf0656e4631dbe1164981a3f957d2c9bfa0
@@ -1,4 +1,4 @@
1
- require 'typed_parameter/boolean' # For Booelan Class Define
1
+ require 'typed_parameter/boolean.rb' # For Booelan Class Define
2
2
 
3
3
  require 'typed_parameter/version'
4
4
  require 'typed_parameter/parameter_types'
@@ -5,3 +5,25 @@ require 'typed_parameter/constraints/string_constraint'
5
5
  require 'typed_parameter/constraints/date_constraint'
6
6
  require 'typed_parameter/constraints/datetime_constraint'
7
7
  require 'typed_parameter/constraints/boolean_constraint'
8
+
9
+ module TypedParameter
10
+ module Constraints
11
+ class << self
12
+ def register(key, constraint)
13
+ @constraints ||= {}
14
+ @constraints[key] = constraint
15
+ end
16
+
17
+ def get(name)
18
+ @constraints[name].freeze
19
+ end
20
+ end
21
+ end
22
+ end
23
+
24
+ TypedParameter::Constraints.register :Integer, TypedParameter::Constraints::IntegerConstraint
25
+ TypedParameter::Constraints.register :String, TypedParameter::Constraints::StringConstraint
26
+ TypedParameter::Constraints.register :Float, TypedParameter::Constraints::FloatConstraint
27
+ TypedParameter::Constraints.register :Date, TypedParameter::Constraints::DateConstraint
28
+ TypedParameter::Constraints.register :DateTime, TypedParameter::Constraints::DateTimeConstraint
29
+ TypedParameter::Constraints.register :Boolean, TypedParameter::Constraints::BooleanConstraint
@@ -1,20 +1,20 @@
1
1
  module TypedParameter
2
2
  module PermitFieldGenerator
3
3
  class << self
4
- BASE_TYPES = TypedParameter::ParameterTypes.types
5
-
6
4
  def generate(name, type)
7
- props = generate_properties(type)
5
+ type_class = [type].flatten.first
8
6
 
9
- props = [] if type.is_a?(Array) && type[0].in?(BASE_TYPES)
10
- return name unless props
7
+ props = if type.is_a? Array
8
+ type_class.in? TypedParameter::ParameterTypes.types ? [] : generate_properties(type_class)
9
+ else
10
+ generate_properties(type_class)
11
+ end
11
12
 
12
- [[name, props]].to_h
13
+ props ? [[name, props]].to_h : name
13
14
  end
14
15
 
15
16
  def generate_properties(type)
16
- return if type.in? BASE_TYPES
17
- return generate_properties(type[0]) if type.is_a? Array
17
+ return if type.in? TypedParameter::ParameterTypes.types
18
18
  return type.keys if type.is_a? Hash
19
19
 
20
20
  type.fields
@@ -3,5 +3,5 @@ require 'typed_parameter/swagger/types/integer_type'
3
3
  require 'typed_parameter/swagger/types/float_type'
4
4
  require 'typed_parameter/swagger/types/string_type'
5
5
  require 'typed_parameter/swagger/types/date_type'
6
- require 'typed_parameter/swagger/types/datetime_type'
6
+ require 'typed_parameter/swagger/types/date_time_type'
7
7
  require 'typed_parameter/swagger/types/boolean_type'
@@ -3,19 +3,19 @@ module TypedParameter
3
3
  class << self
4
4
  def value(type, value)
5
5
  type_class = [type].flatten.first
6
- array_type = type.is_a?(Array)
7
- parameter_type = type_class < TypedParameter::Base
8
6
 
9
- if parameter_type
10
- array_type ? parameter_array(type_class, value) : type.permit(value)
7
+ if type_class < TypedParameter::Base
8
+ type.is_a?(Array) ? parameter_array(type_class, value) : type.permit(value)
11
9
  else
12
- constraint = "TypedParameter::Constraints::#{type_class}Constraint".safe_constantize
10
+ constraint = TypedParameter::Constraints.get type_class.name.to_sym
13
11
  constraint ||= TypedParameter::Constraints::StringConstraint # Default
14
12
 
15
- array_type ? constraint_array(constraint, value) : constraint.value(value)
13
+ type.is_a?(Array) ? constraint_array(constraint, value) : constraint.value(value)
16
14
  end
17
15
  end
18
16
 
17
+ private
18
+
19
19
  def parameter_array(parameter_class, values)
20
20
  values.map { |value| parameter_class.permit(value) }
21
21
  end
@@ -1,3 +1,3 @@
1
1
  module TypedParameter
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ['lib']
28
28
 
29
29
  # Dependencies
30
- spec.add_dependency 'rails', '~> 6.1'
30
+ spec.add_dependency 'rails'
31
31
 
32
32
  # Test Dependencies
33
33
  spec.add_development_dependency 'rspec'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typed-parameter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Minwoo Jo
@@ -14,16 +14,16 @@ dependencies:
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '6.1'
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '6.1'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -61,7 +61,7 @@ files:
61
61
  - lib/typed_parameter/constraints/base.rb
62
62
  - lib/typed_parameter/constraints/boolean_constraint.rb
63
63
  - lib/typed_parameter/constraints/date_constraint.rb
64
- - lib/typed_parameter/constraints/datetime_constraint.rb
64
+ - lib/typed_parameter/constraints/date_time_constraint.rb
65
65
  - lib/typed_parameter/constraints/float_constraint.rb
66
66
  - lib/typed_parameter/constraints/integer_constraint.rb
67
67
  - lib/typed_parameter/constraints/string_constraint.rb
@@ -74,8 +74,8 @@ files:
74
74
  - lib/typed_parameter/swagger/types.rb
75
75
  - lib/typed_parameter/swagger/types/base.rb
76
76
  - lib/typed_parameter/swagger/types/boolean_type.rb
77
+ - lib/typed_parameter/swagger/types/date_time_type.rb
77
78
  - lib/typed_parameter/swagger/types/date_type.rb
78
- - lib/typed_parameter/swagger/types/datetime_type.rb
79
79
  - lib/typed_parameter/swagger/types/float_type.rb
80
80
  - lib/typed_parameter/swagger/types/integer_type.rb
81
81
  - lib/typed_parameter/swagger/types/string_type.rb