google-protobuf 3.0.0.alpha.3 → 3.0.0.alpha.3.1.pre

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.

Potentially problematic release.


This version of google-protobuf might be problematic. Click here for more details.

@@ -28,36 +28,9 @@
28
28
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
29
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
30
 
31
- # require mixins before we hook them into the java & c code
32
- require 'google/protobuf/message_exts'
33
-
34
31
  if RUBY_PLATFORM == "java"
35
32
  require 'json'
36
33
  require 'google/protobuf_java'
37
34
  else
38
35
  require 'google/protobuf_c'
39
36
  end
40
-
41
- require 'google/protobuf/repeated_field'
42
-
43
- module Google
44
- module Protobuf
45
-
46
- def self.encode(msg)
47
- msg.to_proto
48
- end
49
-
50
- def self.encode_json(msg)
51
- msg.to_json
52
- end
53
-
54
- def self.decode(klass, proto)
55
- klass.decode(proto)
56
- end
57
-
58
- def self.decode_json(klass, json)
59
- klass.decode_json(json)
60
- end
61
-
62
- end
63
- end
data/tests/basic.rb CHANGED
@@ -154,8 +154,6 @@ module BasicTest
154
154
  assert m.optional_bytes == "world"
155
155
  m.optional_msg = TestMessage2.new(:foo => 42)
156
156
  assert m.optional_msg == TestMessage2.new(:foo => 42)
157
- m.optional_msg = nil
158
- assert m.optional_msg == nil
159
157
  end
160
158
 
161
159
  def test_ctor_args
@@ -178,7 +176,7 @@ module BasicTest
178
176
  :optional_msg => TestMessage2.new,
179
177
  :repeated_string => ["hello", "there", "world"])
180
178
  expected = '<BasicTest::TestMessage: optional_int32: -42, optional_int64: 0, optional_uint32: 0, optional_uint64: 0, optional_bool: false, optional_float: 0.0, optional_double: 0.0, optional_string: "", optional_bytes: "", optional_msg: <BasicTest::TestMessage2: foo: 0>, optional_enum: :A, repeated_int32: [], repeated_int64: [], repeated_uint32: [], repeated_uint64: [], repeated_bool: [], repeated_float: [], repeated_double: [], repeated_string: ["hello", "there", "world"], repeated_bytes: [], repeated_msg: [], repeated_enum: []>'
181
- assert_equal expected, m.inspect
179
+ assert m.inspect == expected
182
180
  end
183
181
 
184
182
  def test_hash
@@ -276,7 +274,7 @@ module BasicTest
276
274
 
277
275
  assert l.inspect == '[5, 2, 3, 4]'
278
276
 
279
- l.concat([7, 8, 9])
277
+ l.insert(7, 8, 9)
280
278
  assert l == [5, 2, 3, 4, 7, 8, 9]
281
279
  assert l.pop == 9
282
280
  assert l == [5, 2, 3, 4, 7, 8]
@@ -316,17 +314,6 @@ module BasicTest
316
314
  assert l4 == [0, 0, 0, 0, 0, 42, 100, 101, 102]
317
315
  end
318
316
 
319
- def test_parent_rptfield
320
- #make sure we set the RepeatedField and can add to it
321
- m = TestMessage.new
322
- assert m.repeated_string == []
323
- m.repeated_string << 'ok'
324
- m.repeated_string.push('ok2')
325
- assert m.repeated_string == ['ok', 'ok2']
326
- m.repeated_string += ['ok3']
327
- assert m.repeated_string == ['ok', 'ok2', 'ok3']
328
- end
329
-
330
317
  def test_rptfield_msg
331
318
  l = Google::Protobuf::RepeatedField.new(:message, TestMessage)
332
319
  l.push TestMessage.new
@@ -390,39 +377,6 @@ module BasicTest
390
377
  end
391
378
  end
392
379
 
393
- def test_rptfield_array_ducktyping
394
- l = Google::Protobuf::RepeatedField.new(:int32)
395
- length_methods = %w(count length size)
396
- length_methods.each do |lm|
397
- assert l.send(lm) == 0
398
- end
399
- # out of bounds returns a nil
400
- assert l[0] == nil
401
- assert l[1] == nil
402
- assert l[-1] == nil
403
- l.push 4
404
- length_methods.each do |lm|
405
- assert l.send(lm) == 1
406
- end
407
- assert l[0] == 4
408
- assert l[1] == nil
409
- assert l[-1] == 4
410
- assert l[-2] == nil
411
-
412
- l.push 2
413
- length_methods.each do |lm|
414
- assert l.send(lm) == 2
415
- end
416
- assert l[0] == 4
417
- assert l[1] == 2
418
- assert l[2] == nil
419
- assert l[-1] == 2
420
- assert l[-2] == 4
421
- assert l[-3] == nil
422
-
423
- #adding out of scope will backfill with empty objects
424
- end
425
-
426
380
  def test_map_basic
427
381
  # allowed key types:
428
382
  # :int32, :int64, :uint32, :uint64, :bool, :string, :bytes.
@@ -758,12 +712,9 @@ module BasicTest
758
712
  m = TestMessage.new
759
713
  m.optional_string = "hello"
760
714
  m.optional_int32 = 42
761
- tm1 = TestMessage2.new(:foo => 100)
762
- tm2 = TestMessage2.new(:foo => 200)
763
- m.repeated_msg.push tm1
764
- assert m.repeated_msg[-1] == tm1
765
- m.repeated_msg.push tm2
766
- assert m.repeated_msg[-1] == tm2
715
+ m.repeated_msg.push TestMessage2.new(:foo => 100)
716
+ m.repeated_msg.push TestMessage2.new(:foo => 200)
717
+
767
718
  m2 = m.dup
768
719
  assert m == m2
769
720
  m.optional_int32 += 1
@@ -822,67 +773,6 @@ module BasicTest
822
773
  assert m == m2
823
774
  end
824
775
 
825
- def test_encode_decode_helpers
826
- m = TestMessage.new(:optional_string => 'foo', :repeated_string => ['bar1', 'bar2'])
827
- json = m.to_json
828
- m2 = TestMessage.decode_json(json)
829
- assert m2.optional_string == 'foo'
830
- assert m2.repeated_string == ['bar1', 'bar2']
831
-
832
- proto = m.to_proto
833
- m2 = TestMessage.decode(proto)
834
- assert m2.optional_string == 'foo'
835
- assert m2.repeated_string == ['bar1', 'bar2']
836
- end
837
-
838
- def test_protobuf_encode_decode_helpers
839
- m = TestMessage.new(:optional_string => 'foo', :repeated_string => ['bar1', 'bar2'])
840
- encoded_msg = Google::Protobuf.encode(m)
841
- assert_equal m.to_proto, encoded_msg
842
-
843
- decoded_msg = Google::Protobuf.decode(TestMessage, encoded_msg)
844
- assert_equal TestMessage.decode(m.to_proto), decoded_msg
845
- end
846
-
847
- def test_protobuf_encode_decode_json_helpers
848
- m = TestMessage.new(:optional_string => 'foo', :repeated_string => ['bar1', 'bar2'])
849
- encoded_msg = Google::Protobuf.encode_json(m)
850
- assert_equal m.to_json, encoded_msg
851
-
852
- decoded_msg = Google::Protobuf.decode_json(TestMessage, encoded_msg)
853
- assert_equal TestMessage.decode_json(m.to_json), decoded_msg
854
- end
855
-
856
- def test_to_h
857
- m = TestMessage.new(:optional_bool => true, :optional_double => -10.100001, :optional_string => 'foo', :repeated_string => ['bar1', 'bar2'])
858
- expected_result = {
859
- :optional_bool=>true,
860
- :optional_bytes=>"",
861
- :optional_double=>-10.100001,
862
- :optional_enum=>:Default,
863
- :optional_float=>0.0,
864
- :optional_int32=>0,
865
- :optional_int64=>0,
866
- :optional_msg=>nil,
867
- :optional_string=>"foo",
868
- :optional_uint32=>0,
869
- :optional_uint64=>0,
870
- :repeated_bool=>[],
871
- :repeated_bytes=>[],
872
- :repeated_double=>[],
873
- :repeated_enum=>[],
874
- :repeated_float=>[],
875
- :repeated_int32=>[],
876
- :repeated_int64=>[],
877
- :repeated_msg=>[],
878
- :repeated_string=>["bar1", "bar2"],
879
- :repeated_uint32=>[],
880
- :repeated_uint64=>[]
881
- }
882
- assert_equal expected_result, m.to_h
883
- end
884
-
885
-
886
776
  def test_def_errors
887
777
  s = Google::Protobuf::DescriptorPool.new
888
778
  assert_raise TypeError do
@@ -937,6 +827,7 @@ module BasicTest
937
827
  assert m['a.b'] == 4
938
828
  end
939
829
 
830
+
940
831
  def test_int_ranges
941
832
  m = TestMessage.new
942
833
 
@@ -1042,6 +933,7 @@ module BasicTest
1042
933
  assert_raise RangeError do
1043
934
  m.optional_uint64 = 1.5
1044
935
  end
936
+
1045
937
  end
1046
938
 
1047
939
  def test_stress_test
@@ -1096,8 +988,7 @@ module BasicTest
1096
988
  end
1097
989
 
1098
990
  def test_json
1099
- # TODO: Fix JSON in JRuby version.
1100
- return if RUBY_PLATFORM == "java"
991
+ skip("Unimplemented") if RUBY_PLATFORM == "java"
1101
992
  m = TestMessage.new(:optional_int32 => 1234,
1102
993
  :optional_int64 => -0x1_0000_0000,
1103
994
  :optional_uint32 => 0x8000_0000,
@@ -1128,8 +1019,7 @@ module BasicTest
1128
1019
  end
1129
1020
 
1130
1021
  def test_json_maps
1131
- # TODO: Fix JSON in JRuby version.
1132
- return if RUBY_PLATFORM == "java"
1022
+ skip("Unimplemented") if RUBY_PLATFORM == "java"
1133
1023
  m = MapMessage.new(:map_string_int32 => {"a" => 1})
1134
1024
  expected = '{"map_string_int32":{"a":1},"map_string_msg":{}}'
1135
1025
  assert MapMessage.encode_json(m) == expected
metadata CHANGED
@@ -1,62 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.alpha.3
5
- prerelease: 6
4
+ version: 3.0.0.alpha.3.1.pre
6
5
  platform: ruby
7
6
  authors:
8
7
  - Protobuf Authors
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2015-05-30 00:00:00.000000000 Z
11
+ date: 2015-04-13 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake-compiler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: test-unit
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rubygems-tasks
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description: Protocol Buffers are Google's data interchange format.
@@ -66,11 +59,9 @@ extensions:
66
59
  - ext/google/protobuf_c/extconf.rb
67
60
  extra_rdoc_files: []
68
61
  files:
69
- - lib/google/protobuf.rb
70
- - lib/google/protobuf/message_exts.rb
71
- - lib/google/protobuf/repeated_field.rb
72
62
  - ext/google/protobuf_c/defs.c
73
63
  - ext/google/protobuf_c/encode_decode.c
64
+ - ext/google/protobuf_c/extconf.rb
74
65
  - ext/google/protobuf_c/map.c
75
66
  - ext/google/protobuf_c/message.c
76
67
  - ext/google/protobuf_c/protobuf.c
@@ -79,34 +70,33 @@ files:
79
70
  - ext/google/protobuf_c/storage.c
80
71
  - ext/google/protobuf_c/upb.c
81
72
  - ext/google/protobuf_c/upb.h
73
+ - lib/google/protobuf.rb
82
74
  - tests/basic.rb
83
- - tests/stress.rb
84
75
  - tests/generated_code_test.rb
85
- - ext/google/protobuf_c/extconf.rb
86
- homepage: https://developers.google.com/protocol-buffers
76
+ - tests/stress.rb
77
+ homepage:
87
78
  licenses:
88
79
  - BSD
80
+ metadata: {}
89
81
  post_install_message:
90
82
  rdoc_options: []
91
83
  require_paths:
92
84
  - lib
93
85
  required_ruby_version: !ruby/object:Gem::Requirement
94
- none: false
95
86
  requirements:
96
- - - ! '>='
87
+ - - ">="
97
88
  - !ruby/object:Gem::Version
98
89
  version: '0'
99
90
  required_rubygems_version: !ruby/object:Gem::Requirement
100
- none: false
101
91
  requirements:
102
- - - ! '>'
92
+ - - ">"
103
93
  - !ruby/object:Gem::Version
104
94
  version: 1.3.1
105
95
  requirements: []
106
96
  rubyforge_project:
107
- rubygems_version: 1.8.23
97
+ rubygems_version: 2.4.6
108
98
  signing_key:
109
- specification_version: 3
99
+ specification_version: 4
110
100
  summary: Protocol Buffers
111
101
  test_files:
112
102
  - tests/basic.rb
@@ -1,53 +0,0 @@
1
- # Protocol Buffers - Google's data interchange format
2
- # Copyright 2008 Google Inc. All rights reserved.
3
- # https://developers.google.com/protocol-buffers/
4
- #
5
- # Redistribution and use in source and binary forms, with or without
6
- # modification, are permitted provided that the following conditions are
7
- # met:
8
- #
9
- # * Redistributions of source code must retain the above copyright
10
- # notice, this list of conditions and the following disclaimer.
11
- # * Redistributions in binary form must reproduce the above
12
- # copyright notice, this list of conditions and the following disclaimer
13
- # in the documentation and/or other materials provided with the
14
- # distribution.
15
- # * Neither the name of Google Inc. nor the names of its
16
- # contributors may be used to endorse or promote products derived from
17
- # this software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
- module Google
32
- module Protobuf
33
- module MessageExts
34
-
35
- #this is only called in jruby; mri loades the ClassMethods differently
36
- def self.included(klass)
37
- klass.extend(ClassMethods)
38
- end
39
-
40
- module ClassMethods
41
- end
42
-
43
- def to_json
44
- self.class.encode_json(self)
45
- end
46
-
47
- def to_proto
48
- self.class.encode(self)
49
- end
50
-
51
- end
52
- end
53
- end
@@ -1,188 +0,0 @@
1
- # Protocol Buffers - Google's data interchange format
2
- # Copyright 2008 Google Inc. All rights reserved.
3
- # https://developers.google.com/protocol-buffers/
4
- #
5
- # Redistribution and use in source and binary forms, with or without
6
- # modification, are permitted provided that the following conditions are
7
- # met:
8
- #
9
- # * Redistributions of source code must retain the above copyright
10
- # notice, this list of conditions and the following disclaimer.
11
- # * Redistributions in binary form must reproduce the above
12
- # copyright notice, this list of conditions and the following disclaimer
13
- # in the documentation and/or other materials provided with the
14
- # distribution.
15
- # * Neither the name of Google Inc. nor the names of its
16
- # contributors may be used to endorse or promote products derived from
17
- # this software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
-
31
- require 'forwardable'
32
-
33
- #
34
- # This class makes RepeatedField act (almost-) like a Ruby Array.
35
- # It has convenience methods that extend the core C or Java based
36
- # methods.
37
- #
38
- # This is a best-effort to mirror Array behavior. Two comments:
39
- # 1) patches always welcome :)
40
- # 2) if performance is an issue, feel free to rewrite the method
41
- # in jruby and C. The source code has plenty of examples
42
- #
43
- # KNOWN ISSUES
44
- # - #[]= doesn't allow less used approaches such as `arr[1, 2] = 'fizz'`
45
- # - #concat should return the orig array
46
- # - #push should accept multiple arguments and push them all at the same time
47
- #
48
- module Google
49
- module Protobuf
50
- class RepeatedField
51
- extend Forwardable
52
-
53
- # methods defined in C or Java:
54
- # +
55
- # [], at
56
- # []=
57
- # concat
58
- # clear
59
- # dup, clone
60
- # each
61
- # push, <<
62
- # replace
63
- # length, size
64
- # ==
65
- # to_ary, to_a
66
- # also all enumerable
67
- #
68
- # NOTE: using delegators rather than method_missing to make the
69
- # relationship explicit instead of implicit
70
- def_delegators :to_ary,
71
- :&, :*, :-, :'<=>',
72
- :assoc, :bsearch, :combination, :compact, :count, :cycle,
73
- :drop, :drop_while, :eql?, :fetch, :find_index, :flatten,
74
- :include?, :index, :inspect, :join,
75
- :pack, :permutation, :product, :pretty_print, :pretty_print_cycle,
76
- :rassoc, :repeated_combination, :repeated_permutation, :reverse,
77
- :rindex, :rotate, :sample, :shuffle, :shelljoin, :slice,
78
- :to_s, :transpose, :uniq, :|
79
-
80
-
81
- def first(n=nil)
82
- n ? self[0..n] : self[0]
83
- end
84
-
85
-
86
- def last(n=nil)
87
- n ? self[(self.size-n-1)..-1] : self[-1]
88
- end
89
-
90
-
91
- def pop(n=nil)
92
- if n
93
- results = []
94
- n.times{ results << pop_one }
95
- return results
96
- else
97
- return pop_one
98
- end
99
- end
100
-
101
-
102
- def empty?
103
- self.size == 0
104
- end
105
-
106
- # array aliases into enumerable
107
- alias_method :each_index, :each_with_index
108
- alias_method :slice, :[]
109
- alias_method :values_at, :select
110
- alias_method :map, :collect
111
-
112
-
113
- class << self
114
- def define_array_wrapper_method(method_name)
115
- define_method(method_name) do |*args, &block|
116
- arr = self.to_a
117
- result = arr.send(method_name, *args)
118
- self.replace(arr)
119
- return result if result
120
- return block ? block.call : result
121
- end
122
- end
123
- private :define_array_wrapper_method
124
-
125
-
126
- def define_array_wrapper_with_result_method(method_name)
127
- define_method(method_name) do |*args, &block|
128
- # result can be an Enumerator, Array, or nil
129
- # Enumerator can sometimes be returned if a block is an optional argument and it is not passed in
130
- # nil usually specifies that no change was made
131
- result = self.to_a.send(method_name, *args, &block)
132
- if result
133
- new_arr = result.to_a
134
- self.replace(new_arr)
135
- if result.is_a?(Enumerator)
136
- # generate a fresh enum; rewinding the exiting one, in Ruby 2.2, will
137
- # reset the enum with the same length, but all the #next calls will
138
- # return nil
139
- result = new_arr.to_enum
140
- # generate a wrapper enum so any changes which occur by a chained
141
- # enum can be captured
142
- ie = ProxyingEnumerator.new(self, result)
143
- result = ie.to_enum
144
- end
145
- end
146
- result
147
- end
148
- end
149
- private :define_array_wrapper_with_result_method
150
- end
151
-
152
-
153
- %w(delete delete_at delete_if shift slice! unshift).each do |method_name|
154
- define_array_wrapper_method(method_name)
155
- end
156
-
157
-
158
- %w(collect! compact! fill flatten! insert reverse!
159
- rotate! select! shuffle! sort! sort_by! uniq!).each do |method_name|
160
- define_array_wrapper_with_result_method(method_name)
161
- end
162
- alias_method :keep_if, :select!
163
- alias_method :map!, :collect!
164
- alias_method :reject!, :delete_if
165
-
166
-
167
- # propagates changes made by user of enumerator back to the original repeated field.
168
- # This only applies in cases where the calling function which created the enumerator,
169
- # such as #sort!, modifies itself rather than a new array, such as #sort
170
- class ProxyingEnumerator < Struct.new(:repeated_field, :external_enumerator)
171
- def each(*args, &block)
172
- results = []
173
- external_enumerator.each_with_index do |val, i|
174
- result = yield(val)
175
- results << result
176
- #nil means no change occured from yield; usually occurs when #to_a is called
177
- if result
178
- repeated_field[i] = result if result != val
179
- end
180
- end
181
- results
182
- end
183
- end
184
-
185
-
186
- end
187
- end
188
- end