rswag-schema_components 0.4.0 → 0.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cdbe6ec79d6079d3ff7cc0140aeff7f7b1601d28cc2c6162cc02ce93bdac955a
4
- data.tar.gz: 3986c07499d385764bd05f3e9f9676f55419ca253c034dc9a663278e472bb20b
3
+ metadata.gz: 701709c76dfa7a9a7de03e134030eedc51e2851ea4e96eec513a6d4e1cd1887d
4
+ data.tar.gz: ddeed4c3f4b66dd85a9dcef464176454cbae8b3cd0a5709ee09fcad6a5bbf127
5
5
  SHA512:
6
- metadata.gz: eca7f4ff84bc270001afe84a2881c701eb712892753f4aecbad14173d0368c7d61004288e2bdb6d9cc7db5e5094be593b7c7a9f664528b17402a5be0c6a7515e
7
- data.tar.gz: 5f3883a422fd082716bf8c643d37266e973281e97a4428e953ef6a42230d69fe9be1f3910f498d7be25cf7071eb5bb233eabbf89181bc1bc5fe41b2e5d3438b6
6
+ metadata.gz: 0decee6e2cdd1fdb59931153f65b1ae171d43a4c0f87ec8abe795e37b38d0fc377fe87fbcf28b7a6d1e457fcdada7a497aa94f5eb1b49727051a189a2ddec1cd
7
+ data.tar.gz: 37831074fc463141656cb86c9c138b9ff5abba5861442c6a0335c849ccf5da0b04f596b9099db41647fe45426e45d09c59cd7bce63aad022bd7b70fbd01e61d2
@@ -40,20 +40,44 @@ module Rswag
40
40
 
41
41
  definition = definition.merge(title: component_name) if type_allows_title?
42
42
 
43
- components[component_name] = if component.skip_key_transformation?
43
+ components[component_name] = if component.skip_key_transformation? || !Rswag::SchemaComponents.camelize_keys
44
44
  definition
45
45
  else
46
- definition.deep_transform_keys do |key|
47
- prefix = key.to_s.start_with?("_") ? "_" : ""
48
-
49
- :"#{prefix}#{key.to_s.delete_prefix("_").camelize(:lower)}"
50
- end
46
+ transform_keys(definition)
51
47
  end
52
48
  end
53
49
 
54
50
  components
55
51
  end
56
52
 
53
+ private def transform_value(symbolize: true)
54
+ lambda do |value|
55
+ prefix = value.to_s.start_with?("_") ? "_" : ""
56
+
57
+ new_value = "#{prefix}#{value.to_s.delete_prefix("_").camelize(:lower)}"
58
+
59
+ if symbolize
60
+ new_value = new_value.to_sym
61
+ end
62
+
63
+ new_value
64
+ end
65
+ end
66
+
67
+ private def transform_keys(definition)
68
+ transformed_definition = definition.deep_transform_keys(&transform_value)
69
+
70
+ transform_required = proc do |key, value|
71
+ if key.to_s == "required"
72
+ value.map! { |v| transform_value(symbolize: false).call(v) }
73
+ else
74
+ value
75
+ end
76
+ end
77
+
78
+ transformed_definition.deep_merge!(transformed_definition, &transform_required)
79
+ end
80
+
57
81
  private def type_allows_title?
58
82
  type == "schemas"
59
83
  end
@@ -1,5 +1,5 @@
1
1
  module Rswag
2
2
  module SchemaComponents
3
- VERSION = "0.4.0"
3
+ VERSION = "0.5.1"
4
4
  end
5
5
  end
@@ -8,6 +8,9 @@ module Rswag
8
8
  mattr_accessor :components_base_path
9
9
  @@components_base_path = "app/api_components"
10
10
 
11
+ mattr_accessor :camelize_keys
12
+ @@camelize_keys = false
13
+
11
14
  def self.setup
12
15
  yield self
13
16
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rswag-schema_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marten Klitzke