Beispiel #1
0
  public RubyValue set(int start, RubyValue value) {
    int index = getRealIndex(start);

    if (index < array_.size()) {
      array_.set(index, value);
    } else {
      for (int i = array_.size(); i < index; ++i) {
        array_.add(RubyConstant.QNIL);
      }
      array_.add(value);
    }

    return value;
  }
Beispiel #2
0
 public RubyValue replace(int start, int length, RubyValue value) {
   int index = getRealIndex(start);
   if (value == RubyConstant.QNIL) {
     for (int i = 0; i < length; i++) {
       array_.remove(index);
     }
     return value;
   }
   if (length < 0) {
     throw new RubyException(RubyRuntime.IndexErrorClass, "negative length (" + length + ")");
   } else if (0 == length) {
     if (value instanceof RubyArray) {
       array_.addAll(index, ((RubyArray) value).array_);
     } else {
       array_.add(index, value);
     }
   } else {
     for (int i = 0; i < length - 1; ++i) {
       array_.remove(index);
     }
     if (value instanceof RubyArray) {
       array_.remove(index);
       array_.addAll(index, ((RubyArray) value).array_);
     } else {
       array_.set(index, value);
     }
   }
   return value;
 }
Beispiel #3
0
 private RubyArray insert(int index, RubyArray a) {
   for (int i = array_.size(); i < index; ++i) {
     array_.add(RubyConstant.QNIL);
   }
   array_.addAll(index, a.array_);
   return this;
 }
Beispiel #4
0
  public RubyArray expand(RubyValue v) {
    if (v instanceof RubyArray) {
      // [5,6,*[1, 2]]
      array_.addAll(((RubyArray) v).array_);
    } else {
      // [5,6,*1], [5,6,*nil]
      array_.add(v);
    }

    return this;
  }
Beispiel #5
0
 // @RubyLevelMethod(name="unshift")
 public RubyArray unshift(RubyValue value) {
   array_.add(0, value);
   return this;
 }
Beispiel #6
0
 RubyArray(int size, RubyValue default_value) {
   this(size);
   for (int i = 0; i < size; ++i) {
     array_.add(default_value);
   }
 }
Beispiel #7
0
 public RubyArray insert(int index, RubyValue v) {
   array_.add(index, v);
   return this;
 }
Beispiel #8
0
 public RubyArray add(RubyValue v) {
   array_.add(v);
   return this;
 }
Beispiel #9
0
 public RubyArray add(/*RubyValue*/ Object v) {
   array_.add(v);
   return this;
 }