Sha256: 12808012339a7720fb8e2dbe7e0a86e82289009324ac8d8040e8cee666180f66
Contents?: true
Size: 1.54 KB
Versions: 3
Compression:
Stored size: 1.54 KB
Contents
module PyCall class List include PyObjectWrapper include Enumerable def self.new(init=nil) case init when PyObject super when nil new(0) when Integer new(LibPython.PyList_New(init)) when Array new.tap do |list| init.each do |item| list << item end end else new(obj.to_ary) end end def initialize(pyobj) super(pyobj, LibPython.PyList_Type) end def [](index) LibPython.PyList_GetItem(__pyobj__, index).to_ruby end def []=(index, value) value = Conversions.from_ruby(value) LibPython.PyList_SetItem(__pyobj__, index, value) value end def <<(value) value = Conversions.from_ruby(value) LibPython.PyList_Append(__pyobj__, value) self end def size LibPython.PyList_Size(__pyobj__) end def include?(value) value = Conversions.from_ruby(value) value = LibPython.PySequence_Contains(__pyobj__, value) raise PyError.fetch if value == -1 1 == value end def ==(other) case other when Array self.to_a == other else super end end def each return enum_for unless block_given? i, n = 0, size while i < n yield self[i] i += 1 end self end def to_a [].tap do |a| i, n = 0, size while i < n a << self[i] i += 1 end end end alias to_ary to_a end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
pycall-0.1.0.alpha.20170307 | lib/pycall/list.rb |
pycall-0.1.0.alpha.20170302 | lib/pycall/list.rb |
pycall-0.1.0.alpha.20170226 | lib/pycall/list.rb |