Method: XArray#delete_at

Defined in:
lib/primitive_wrapper.rb

#delete_at(*index_list) ⇒ Object



1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
# File 'lib/primitive_wrapper.rb', line 1234

def delete_at(*index_list)
  return nil if index_list.empty?
  rtn = []
  if (index_list.count==1)
    if index_list.first==:all
      rtn = @value.dup
      @value.empty!
      return rtn
    else
      ii = index_list.first
      rtn = self[ii]
      if ii.type_of? Range
        ii = ii.to_xr
        ii.re_range!(size)
        ii.reorder!
        ii.reverse_each do |idx|
          @value.delete_at(idx)
        end
        return rtn
      end
    end
  end
  rtn = self[*index_list]
  list = PrimitiveWrapper::get_list(index_list,size)
  list = list & list  # remove duplicates
  list.sort.reverse.each do |idx|
    if idx.type_of? Range
      t_idx = idx.reorder
    else
      t_idx = idx
    end
    @value.delete_at(t_idx)
  end
  return rtn
end