camille 0.4.3 → 0.5.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: 3d0df267ba626a69935cbe5da75d90c08bf319b048fd210712953bc2a0e83b45
4
- data.tar.gz: f93164ee26857fb30eb3a1c4c77dd8341e7aa6a52b6476134658c4061f030c58
3
+ metadata.gz: acda60cf2aee3c70aadf0aa040f5b79832aa8fe44c8d92f8e305715a0edf7e36
4
+ data.tar.gz: 9c1b5c69c2638336c8341a2f9182d097f8276b8df21506365e69846aa71596f7
5
5
  SHA512:
6
- metadata.gz: 84e73bdb5f359904024658a6ce47e9585851eeb60fb28a093323ec169fa8dc6903b358255380b9b9daafc8f24490628fecd173c6ab97f46f6190bddfe29eaf72
7
- data.tar.gz: 40e888902aea15a1964e6fddb09476d896c12645717f750869b76c08708529bce2d6baa8eb96dc0adffae2e65a85a70883855788d546d41c9661033378ec2132
6
+ metadata.gz: 4772765b95039fc3309e4eddd9a406cd0c1c94e9fca0c31e8dc283677ee9cc42620ba3acefbcc946818a44e1e78945eba798109e51bcf0ceccf6c858eff336a9
7
+ data.tar.gz: b90680ff5e4646237c856c26bc6c54bbccb3c2c38d69a670d95c81b7232d466ab95d27ffdd362829da985e204d648b9d81b7cfb83f51e989019324321fad4c9f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Changed
6
+
7
+ * Pick and Omit now use a new syntax, so it can handle snake to camel case conversion correctly
8
+
3
9
  ## 0.4.3
4
10
 
5
11
  ### Fixed
data/README.md CHANGED
@@ -158,9 +158,9 @@ params(
158
158
  string_literal: 'hello',
159
159
  # a custom type we defined above
160
160
  product: Product,
161
- # Pick and Omit use [] to enclose parameters instead of <>
162
- pick: Pick[{a: 1, b: 2}, 'a' | 'b'],
163
- omit: Omit[Product, 'id']
161
+ # Pick and Omit accepts a type and an array of symbols
162
+ pick: Pick[{a: 1, b: 2}, [:a, :b]],
163
+ omit: Omit[Product, [:id]]
164
164
  )
165
165
  ```
166
166
 
@@ -14,24 +14,14 @@ module Camille
14
14
  raise ArgumentError.new("Currently onle an object type or an alias of object type is supported in #{klass_name}. Got #{type.inspect}.")
15
15
  end
16
16
 
17
- @keys = Camille::Type.instance(keys)
18
- case
19
- when @keys.is_a?(Camille::Types::StringLiteral)
20
- @keys_array = [@keys.value].map(&:to_sym)
21
- when @keys.is_a?(Camille::Types::Union)
22
- unfolded = unfold_union(@keys).flatten
23
- if unfolded.all?{|x| x.is_a?(Camille::Types::StringLiteral)}
24
- @keys_array = unfolded.map(&:value).map(&:to_sym)
25
- else
26
- raise ArgumentError.new("The second argument of #{klass_name} has to be a string literal or an union of string literals. Got #{keys.inspect}.")
27
- end
28
- else
29
- raise ArgumentError.new("The second argument of #{klass_name} has to be a string literal or an union of string literals. Got #{keys.inspect}.")
17
+ unless keys.is_a?(::Array) && !keys.empty? && keys.all?{|x| x.is_a? Symbol}
18
+ raise ArgumentError.new("The second argument of #{klass_name} has to be an array of symbols. Got #{keys.inspect}.")
30
19
  end
20
+ @keys = keys
31
21
  end
32
22
 
33
23
  def literal
34
- "#{klass_name}<#{@type.literal}, #{@keys.literal}>"
24
+ "#{klass_name}<#{@type.literal}, #{keys_in_literal}>"
35
25
  end
36
26
 
37
27
  def self.[] type, keys
@@ -39,12 +29,8 @@ module Camille
39
29
  end
40
30
 
41
31
  private
42
- def unfold_union type
43
- if type.is_a?(Camille::Types::Union)
44
- [unfold_union(type.left), unfold_union(type.right)]
45
- else
46
- [type]
47
- end
32
+ def keys_in_literal
33
+ @keys.map{|k| "\"#{k.to_s.camelize(:lower)}\""}.join(' | ')
48
34
  end
49
35
 
50
36
  end
@@ -11,7 +11,7 @@ module Camille
11
11
  end
12
12
 
13
13
  def processed_object
14
- fields = @target_object.fields.reject{|k, _| @keys_array.include?(k)}
14
+ fields = @target_object.fields.reject{|k, _| @keys.include?(k)}
15
15
  Camille::Types::Object.new(fields)
16
16
  end
17
17
 
@@ -11,7 +11,7 @@ module Camille
11
11
  end
12
12
 
13
13
  def processed_object
14
- fields = @target_object.fields.select{|k, _| @keys_array.include?(k)}
14
+ fields = @target_object.fields.select{|k, _| @keys.include?(k)}
15
15
  Camille::Types::Object.new(fields)
16
16
  end
17
17
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Camille
4
- VERSION = "0.4.3"
4
+ VERSION = "0.5.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: camille
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - 辻彩
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-18 00:00:00.000000000 Z
11
+ date: 2023-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
110
  - !ruby/object:Gem::Version
111
111
  version: '0'
112
112
  requirements: []
113
- rubygems_version: 3.2.33
113
+ rubygems_version: 3.4.1
114
114
  signing_key:
115
115
  specification_version: 4
116
116
  summary: Typed API schema for Rails with TypeScript codegen