Class: Google::Protobuf::RepeatedField

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/google-protobuf-3.21.12-x86_64-linux/lib/google/protobuf/repeated_field.rb

Defined Under Namespace

Classes: ProxyingEnumerator

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.define_array_wrapper_method(method_name) ⇒ Object



127
128
129
130
131
132
133
134
135
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/google-protobuf-3.21.12-x86_64-linux/lib/google/protobuf/repeated_field.rb', line 127

def define_array_wrapper_method(method_name)
  define_method(method_name) do |*args, &block|
    arr = self.to_a
    result = arr.send(method_name, *args)
    self.replace(arr)
    return result if result
    return block ? block.call : result
  end
end

.define_array_wrapper_with_result_method(method_name) ⇒ Object



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/google-protobuf-3.21.12-x86_64-linux/lib/google/protobuf/repeated_field.rb', line 139

def define_array_wrapper_with_result_method(method_name)
  define_method(method_name) do |*args, &block|
    # result can be an Enumerator, Array, or nil
    # Enumerator can sometimes be returned if a block is an optional argument and it is not passed in
    # nil usually specifies that no change was made
    result = self.to_a.send(method_name, *args, &block)
    if result
      new_arr = result.to_a
      self.replace(new_arr)
      if result.is_a?(Enumerator)
        # generate a fresh enum; rewinding the exiting one, in Ruby 2.2, will
        # reset the enum with the same length, but all the #next calls will
        # return nil
        result = new_arr.to_enum
        # generate a wrapper enum so any changes which occur by a chained
        # enum can be captured
        ie = ProxyingEnumerator.new(self, result)
        result = ie.to_enum
      end
    end
    result
  end
end

Instance Method Details

#empty?Boolean

Returns:

  • (Boolean)


115
116
117
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/google-protobuf-3.21.12-x86_64-linux/lib/google/protobuf/repeated_field.rb', line 115

def empty?
  self.size == 0
end

#first(n = nil) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/google-protobuf-3.21.12-x86_64-linux/lib/google/protobuf/repeated_field.rb', line 81

def first(n=nil)
  if n.nil?
    return self[0]
  elsif n < 0
    raise ArgumentError, "negative array size"
  else
    return self[0...n]
  end
end

#last(n = nil) ⇒ Object



92
93
94
95
96
97
98
99
100
101
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/google-protobuf-3.21.12-x86_64-linux/lib/google/protobuf/repeated_field.rb', line 92

def last(n=nil)
  if n.nil?
    return self[-1]
  elsif n < 0
    raise ArgumentError, "negative array size"
  else
    start = [self.size-n, 0].max
    return self[start...self.size]
  end
end

#pop(n = nil) ⇒ Object



104
105
106
107
108
109
110
111
112
# File 'lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/google-protobuf-3.21.12-x86_64-linux/lib/google/protobuf/repeated_field.rb', line 104

def pop(n=nil)
  if n
    results = []
    n.times{ results << pop_one }
    return results
  else
    return pop_one
  end
end