twirp_rails 0.4.1 → 0.4.2

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: f7fbba3b1fe02ffed0c06b8a421f52577aab8634e0c3628c079721415c22df56
4
- data.tar.gz: 25ab97b4b24fd79ea5c338bbef35f124e082c3ce34a9588b0d66658858936f77
3
+ metadata.gz: 9815b0f64ccd2cf6527a6490bf58d33bf9603e50ed403977c6f2cc345fdd38e7
4
+ data.tar.gz: 486da8791965cbf5c167968c1caf72651d304c5eb4f73f418bcef7c0140d2810
5
5
  SHA512:
6
- metadata.gz: 11e6b0f20cfc055c2b0d89b06e7a79011b3ca28b5d0f4456d8872b62c67e6c22e8ca50728f6d1c3700fbf8c6bc04b5bcef0245c37392eb3f687b1329603446d2
7
- data.tar.gz: 2ee3fb02db058cea267475e4e872cc5049f732a3877a4454677ff9b4cbf9445f2c83b00fc654fae274f8994d822cdefdabb2656c178c886070ccd9ef02fd29fb
6
+ metadata.gz: 8968da209d19ab694bd5c26f3ea568dfecb7c249ddf5501b2b213b0c1502a925330ab1554344a1f862bd00a8497cf2dd51f3e0c64bfb55968ddfa89efb893dec
7
+ data.tar.gz: 04040171424b881f5746ba5edad5ce19f4cf1e90155dec5eccf8e5bbee4f67b2411cd258bf4f34f8c8765b6e479aa42877addeee9235d2596464354f36e4e500
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- twirp_rails (0.4.1)
4
+ twirp_rails (0.4.2)
5
5
  railties (~> 6.0)
6
6
  twirp (~> 1)
7
7
 
@@ -67,7 +67,7 @@ GEM
67
67
  method_source
68
68
  rake (>= 0.8.7)
69
69
  thor (>= 0.20.3, < 2.0)
70
- rake (10.5.0)
70
+ rake (13.0.1)
71
71
  rspec (3.9.0)
72
72
  rspec-core (~> 3.9.0)
73
73
  rspec-expectations (~> 3.9.0)
@@ -105,7 +105,7 @@ DEPENDENCIES
105
105
  bundler (~> 1.17)
106
106
  generator_spec (~> 0.9)
107
107
  pry (~> 0.12)
108
- rake (~> 10.0)
108
+ rake (~> 13.0)
109
109
  rspec (~> 3.0)
110
110
  rspec-rails (~> 3.0)
111
111
  twirp_rails!
@@ -26,29 +26,32 @@ module TwirpRails
26
26
  # used by relation method to_twirp
27
27
  # @param [Array|Class] fields_or_class - array of converted fields or message class to
28
28
  def to_twirp(*fields_or_class)
29
- fields = fields_or_class
30
- result = attributes
31
-
32
- if fields.empty? && self.class.twirp_message_class
33
- fields = [self.class.twirp_message_class]
29
+ if fields_or_class.empty? && self.class.twirp_message_class
30
+ to_twirp_as_class(self.class.twirp_message_class)
31
+ elsif fields_or_class.one? && fields_or_class.first.is_a?(Class)
32
+ to_twirp_as_class(fields_or_class.first)
33
+ elsif fields_or_class.any?
34
+ to_twirp_as_fields(fields_or_class)
35
+ else
36
+ attributes
34
37
  end
38
+ end
35
39
 
36
- if fields.one? && fields.first.is_a?(Class)
37
- message_class = fields.first
40
+ private
38
41
 
39
- unless message_class.respond_to?(:descriptor)
40
- raise "Class #{message_class} must me a protobuf message class"
41
- end
42
+ def to_twirp_as_class(klass)
43
+ unless klass.respond_to?(:descriptor)
44
+ raise "Class #{klass} must be a protobuf message class"
45
+ end
42
46
 
43
- # TODO performance optimization needed
44
- fields = message_class.descriptor.map &:name
47
+ # TODO performance optimization needed
48
+ to_twirp_as_fields(klass.descriptor.map &:name)
49
+ end
45
50
 
46
- result = result.slice(*fields)
47
- elsif fields.any?
48
- result = result.slice(*fields)
51
+ def to_twirp_as_fields(fields)
52
+ fields.each_with_object({}) do |field, h|
53
+ h[field] = attributes.fetch(field) { public_send(field) }
49
54
  end
50
-
51
- result
52
55
  end
53
56
  end
54
57
  end
@@ -1,3 +1,3 @@
1
1
  module TwirpRails
2
- VERSION = '0.4.1'.freeze
2
+ VERSION = '0.4.2'.freeze
3
3
  end
data/twirp_rails.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency 'railties', '~> 6.0'
27
27
 
28
28
  spec.add_development_dependency 'bundler', '~> 1.17'
29
- spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'rake', '~> 13.0'
30
30
  spec.add_development_dependency 'rspec', '~> 3.0'
31
31
  spec.add_development_dependency 'rspec-rails', '~> 3.0'
32
32
  spec.add_development_dependency 'generator_spec', '~> 0.9'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twirp_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandr Zimin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-30 00:00:00.000000000 Z
11
+ date: 2020-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: twirp
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement