Class: Array
- Defined in:
- lib/tagen/core/array.rb,
lib/tagen/core/array/extract_options.rb
Overview
Additional method list
-
‘#append` _alias from push_
Instance Method Summary collapse
-
#delete(*values, &blk) ⇒ Array
support delete more than one values.
-
#delete_at(*indexs, &blk) ⇒ Array
support delate_at more than one index.
-
#extract_extend_options(*defaults) ⇒ Array<Object>, Hash
extend options are symbols and hash, symbol as a boolean option.
-
#extract_extend_options!(*defaults) ⇒ Hash
modify args IN PLACE.
-
#extract_options(default = {}) ⇒ Array<Array,Hash>
extract options.
-
#extract_options!(default = {}) ⇒ Hash
Extracts options from a set of arguments.
-
#find!(&blk) ⇒ Object
same as find, but delete the finded value.
-
#find_all!(&blk) ⇒ Object
same as find_all, but delete all finded values.
-
#first!(n = 1) ⇒ Object
first n values, not works at Range, Range don’t have #replace method.
-
#last!(n = 1) ⇒ Object
last n values.
- #original_delete ⇒ Object
- #original_delete_at ⇒ Object
Instance Method Details
#delete(*values, &blk) ⇒ Array
support delete more than one values.
original: delete(v) currrent: delete(*v)
20 21 22 23 24 25 |
# File 'lib/tagen/core/array.rb', line 20 def delete *values, &blk indexs = values.each.with_object [] do |v,m| m << original_delete(v, &blk) end values.length==1 ? indexs[0] : indexs end |
#delete_at(*indexs, &blk) ⇒ Array
support delate_at more than one index.
original: delete_at(i) current: delte_at(*i)
35 36 37 38 39 40 |
# File 'lib/tagen/core/array.rb', line 35 def delete_at *indexs, &blk values = indexs.each.with_object [] do |i,m| m << original_delete_at(i, &blk) end indexs.length==1 ? values[0] : values end |
#extract_extend_options(*defaults) ⇒ Array<Object>, Hash
extend options are symbols and hash, symbol as a boolean option.
:a #=> { a: true }
:_a #=> { a: false}
19 20 21 22 23 |
# File 'lib/tagen/core/array/extract_options.rb', line 19 def *defaults args, o = _parse_o(defaults) args1, o1 = _parse_o(self) [args+args1, o.merge(o1)] end |
#extract_extend_options!(*defaults) ⇒ Hash
modify args IN PLACE. @ see extract_extend_options
39 40 41 42 43 |
# File 'lib/tagen/core/array/extract_options.rb', line 39 def *defaults args, o = *defaults self.replace args o end |
#extract_options(default = {}) ⇒ Array<Array,Hash>
extract options
96 97 98 99 100 101 102 |
# File 'lib/tagen/core/array/extract_options.rb', line 96 def default={} if self.last.is_a?(Hash) && self.last.instance_of?(Hash) [self[0...-1], self[-1].merge(default)] else [self, default] end end |
#extract_options!(default = {}) ⇒ Hash
Extracts options from a set of arguments. Removes and returns the last element in the array if it’s a hash, otherwise returns a blank hash. you can also pass a default option.
80 81 82 83 84 85 86 |
# File 'lib/tagen/core/array/extract_options.rb', line 80 def default={} if self.last.is_a?(Hash) && self.last.instance_of?(Hash) self.pop.merge default else default end end |
#find!(&blk) ⇒ Object
same as find, but delete the finded value
76 77 78 79 80 81 82 83 |
# File 'lib/tagen/core/array.rb', line 76 def find! &blk idx = self.find_index(&blk) if idx self.delete_at(idx) else nil end end |
#find_all!(&blk) ⇒ Object
same as find_all, but delete all finded values
86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/tagen/core/array.rb', line 86 def find_all! &blk ret, rest = [], [] self.each do |k| if blk.call(k) ret << k else rest << k end end self.replace rest ret end |
#first!(n = 1) ⇒ Object
modify IN PLACE
first n values, not works at Range, Range don’t have #replace method
51 52 53 54 55 56 57 58 59 |
# File 'lib/tagen/core/array.rb', line 51 def first! n=1 i = 0 j = i + n k = -1 ret = self[i...j] self.replace self[j..k] ret end |
#last!(n = 1) ⇒ Object
last n values
63 64 65 66 67 68 69 70 71 |
# File 'lib/tagen/core/array.rb', line 63 def last! n=1 i = -1 j = -1 - n + 1 k = 0 ret = self[j..i] self.replace self[k...j] ret end |
#original_delete ⇒ Object
12 |
# File 'lib/tagen/core/array.rb', line 12 alias original_delete delete |
#original_delete_at ⇒ Object
27 |
# File 'lib/tagen/core/array.rb', line 27 alias original_delete_at delete_at |