twirp_rails 0.4.1 → 0.4.2

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: 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