Sha256: 73092f01140bf5551bfbed7ca72c1f96b31860c3cab511a2e749ab2aad45d82e

Contents?: true

Size: 1.47 KB

Versions: 10

Compression:

Stored size: 1.47 KB

Contents

require 'jactive_support/java_ext/list_iterator'

module java::util::List
  if RUBY_VERSION >= '1.9'
    FrozenError = RuntimeError
  else
    FrozenError = TypeError
  end
  
  def inspect
    content = map{|e| e.inspect}.join(', ')
    "JavaList[#{content}]"
  end

  def iterate
    return enum_for(:iterate) unless block_given?
    it = listIterator
    while it.next?
      ob = it.next
      yield(it,ob)
    end
  end  

  def map!
    raise FrozenError, "can't modify frozen iterable" if frozen?
    return enum_for(:map!) unless block_given?
    iterate{|it, ob| it.set(yield(ob))}
    self
  end
  alias :collect! :map!
  
  def push(*args)
    raise FrozenError, "can't modify frozen iterable" if frozen? && ( RUBY_VERSION >= '1.9' || args.size > 0 )
    args.each{|a| add(a)}
    self
  end

  def last(*args)
    raise ArgumentError, "wrong # of arguments(#{args.size} for 1)" if args.size > 1
    if args.size == 1
      n = args.first
      raise TypeError, "Can't convert #{n} into Integer" unless n.respond_to?(:to_int)
      n = n.to_int
      raise TypeError, "#to_int should return Integer" unless n.kind_of?(Integer)
      raise ArgumentError, "negative array size" if n < 0

      it = listIterator(size)
      ret = []
      while n > 0 && it.previous?
        ret.unshift it.previous
        n -= 1
      end
      ret
    elsif size > 0 
      self.get(size-1) 
    end
  end
  
  def clear
    raise FrozenError, "can't modify frozen list" if frozen?
    super
    self
  end
  
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
jactive_support-2.1.2 lib/jactive_support/java_ext/list.rb
jactive_support-3.0.0 lib/jactive_support/java_ext/list.rb
jactive_support-3.0.0.pre2 lib/jactive_support/java_ext/list.rb
jactive_support-3.0.0.pre1 lib/jactive_support/java_ext/list.rb
jactive_support-2.1.1 lib/jactive_support/java_ext/list.rb
jactive_support-2.1.0 lib/jactive_support/java_ext/list.rb
jactive_support-2.0.0 lib/jactive_support/java_ext/list.rb
jactive_support-1.0.2 lib/jactive_support/java_ext/list.rb
jactive_support-1.0.1-universal-java-1.6 lib/jactive_support/java_ext/list.rb
jactive_support-1.0.0-universal-java-1.6 lib/jactive_support/java_ext/list.rb