protobuf 2.8.5 → 2.8.6
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 +4 -4
- data/CHANGES.md +10 -0
- data/lib/protobuf/field/bytes_field.rb +8 -6
- data/lib/protobuf/field/string_field.rb +8 -7
- data/lib/protobuf/version.rb +1 -1
- data/spec/lib/protobuf/field/string_field_spec.rb +23 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bae0f4fcbb6ab57fe7866db45ea440c29899979d
|
4
|
+
data.tar.gz: 0fb43022f7937ae06df7185a611eead5a9f2b217
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b063acb75ac9ce464056edc2d418cc588e6b0ac0b885441a57f9dfc8c5795ee87faba8d393c09f6a91a8d12417808a2dd5603643988bd8c821b76dc1fd1608dd
|
7
|
+
data.tar.gz: 310368ac66f9e72150575ef01ec7f6cd7a1fba31a5bf33b926ca0743b1e907b623fd566d4b95f8a19ee4c5fc3b02b5d564049e2dbaae41c3f86997a679dcf847
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
2.8.6
|
2
|
+
---------
|
3
|
+
|
4
|
+
- Fix string/byte encoding issue when unicode characters present. Reported by @foxban. This was also backported to v2.7.12. [#120]
|
5
|
+
|
1
6
|
2.8.5
|
2
7
|
----------
|
3
8
|
|
@@ -35,6 +40,11 @@
|
|
35
40
|
- No longer creating `-java` platform gem due to removal of c++ compiler.
|
36
41
|
- Added WTFPL license.
|
37
42
|
|
43
|
+
2.7.12
|
44
|
+
-----------
|
45
|
+
|
46
|
+
- Backport string/byte encoding issue when unicode characters present. [code: #122, original issue: #120]
|
47
|
+
|
38
48
|
2.0.0
|
39
49
|
-----------
|
40
50
|
|
@@ -18,8 +18,9 @@ module Protobuf
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def decode(bytes)
|
21
|
-
bytes.
|
22
|
-
|
21
|
+
bytes_to_decode = bytes.dup
|
22
|
+
bytes_to_decode.force_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING)
|
23
|
+
bytes_to_decode
|
23
24
|
end
|
24
25
|
|
25
26
|
def define_setter
|
@@ -46,11 +47,12 @@ module Protobuf
|
|
46
47
|
end
|
47
48
|
|
48
49
|
def encode(value)
|
49
|
-
|
50
|
-
value.
|
50
|
+
value_to_encode = value.dup
|
51
|
+
value_to_encode = value.encode if value.is_a?(::Protobuf::Message)
|
52
|
+
value_to_encode.force_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING)
|
51
53
|
|
52
|
-
string_size = ::Protobuf::Field::VarintField.encode(
|
53
|
-
string_size <<
|
54
|
+
string_size = ::Protobuf::Field::VarintField.encode(value_to_encode.size)
|
55
|
+
string_size << value_to_encode
|
54
56
|
end
|
55
57
|
|
56
58
|
def wire_type
|
@@ -6,18 +6,19 @@ module Protobuf
|
|
6
6
|
ENCODING = 'UTF-8'.freeze
|
7
7
|
|
8
8
|
def decode(bytes)
|
9
|
-
bytes.
|
10
|
-
|
9
|
+
bytes_to_decode = bytes.dup
|
10
|
+
bytes_to_decode.force_encoding(::Protobuf::Field::StringField::ENCODING)
|
11
|
+
bytes_to_decode
|
11
12
|
end
|
12
13
|
|
13
14
|
# TODO: make replace character configurable?
|
14
15
|
def encode(value)
|
15
|
-
|
16
|
-
|
17
|
-
|
16
|
+
value_to_encode = value.dup
|
17
|
+
value_to_encode.encode!(::Protobuf::Field::StringField::ENCODING, :invalid => :replace, :undef => :replace, :replace => "")
|
18
|
+
value_to_encode.force_encoding(::Protobuf::Field::BytesField::BYTES_ENCODING)
|
18
19
|
|
19
|
-
string_size = ::Protobuf::Field::VarintField.encode(
|
20
|
-
string_size <<
|
20
|
+
string_size = ::Protobuf::Field::VarintField.encode(value_to_encode.size)
|
21
|
+
string_size << value_to_encode
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
data/lib/protobuf/version.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe ::Protobuf::Field::StringField do
|
6
|
+
|
4
7
|
describe '#encode' do
|
5
8
|
context 'when a repeated string field contains frozen strings' do
|
6
9
|
it 'does not raise an encoding error' do
|
@@ -19,5 +22,25 @@ describe ::Protobuf::Field::StringField do
|
|
19
22
|
}.not_to raise_error
|
20
23
|
end
|
21
24
|
end
|
25
|
+
|
26
|
+
it 'does not alter string values after encoding multiple times' do
|
27
|
+
source_string = "foo"
|
28
|
+
proto = ::Test::Resource.new(:name => source_string)
|
29
|
+
proto.encode
|
30
|
+
proto.name.should eq source_string
|
31
|
+
proto.encode
|
32
|
+
proto.name.should eq source_string
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'does not alter unicode string values after encoding multiple times' do
|
36
|
+
source_string = "¢"
|
37
|
+
proto = ::Test::Resource.new(:name => source_string)
|
38
|
+
proto.encode
|
39
|
+
proto.name.should eq source_string
|
40
|
+
proto.encode
|
41
|
+
proto.name.should eq source_string
|
42
|
+
end
|
22
43
|
end
|
44
|
+
|
45
|
+
|
23
46
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.8.
|
4
|
+
version: 2.8.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- BJ Neilsen
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-09-
|
13
|
+
date: 2013-09-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -366,7 +366,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
366
366
|
version: '0'
|
367
367
|
requirements: []
|
368
368
|
rubyforge_project:
|
369
|
-
rubygems_version: 2.
|
369
|
+
rubygems_version: 2.1.2
|
370
370
|
signing_key:
|
371
371
|
specification_version: 4
|
372
372
|
summary: Google Protocol Buffers serialization and RPC implementation for Ruby.
|