Class: Array
- Inherits:
-
Object
- Object
- Array
- Defined in:
- lib/simple_helper/array/to_csv.rb,
lib/simple_helper/array/wrap.rb
Overview
Usage [‘MaJeD’, last_name: ‘BoJaN’, ‘Mohammed’, last_name: ‘majed’].to_csv(‘file_name.csv’)
Class Method Summary collapse
-
.wrap(object) ⇒ Object
Powered by rails core Wraps its argument in an array unless it is already an array (or array-like).
Instance Method Summary collapse
Class Method Details
.wrap(object) ⇒ Object
Powered by rails core Wraps its argument in an array unless it is already an array (or array-like).
Specifically:
-
If the argument is
nil
an empty array is returned. -
Otherwise, if the argument responds to
to_ary
it is invoked, and its result returned. -
Otherwise, returns an array with the argument as its single element.
Array.wrap(nil) # => [] Array.wrap([1, 2, 3]) # => [1, 2, 3] Array.wrap(0) # => [0]
This method is similar in purpose to Kernel#Array
, but there are some differences:
-
If the argument responds to
to_ary
the method is invoked.Kernel#Array
moves on to tryto_a
if the returned value isnil
, butArray.wrap
returns an array with the argument as its single element right away. -
If the returned value from
to_ary
is neithernil
nor anArray
object,Kernel#Array
raises an exception, whileArray.wrap
does not, it just returns the value. -
It does not call
to_a
on the argument, if the argument does not respond toto_ary
it returns an array with the argument as its single element.
The last point is easily explained with some enumerables:
Array(foo: :bar) # => [[:foo, :bar]]
Array.wrap(foo: :bar) # => [{:foo=>:bar}]
There’s also a related idiom that uses the splat operator:
[*object]
which returns []
for nil
, but calls to Array(object)
otherwise.
The differences with Kernel#Array
explained above apply to the rest of object
s.
40 41 42 43 44 45 46 47 48 |
# File 'lib/simple_helper/array/wrap.rb', line 40 def self.wrap(object) if object.nil? [] elsif object.respond_to?(:to_ary) object.to_ary || [object] else [object] end end |
Instance Method Details
#to_csv(csv_filename = 'file_name.csv') ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/simple_helper/array/to_csv.rb', line 7 def to_csv(csv_filename = 'file_name.csv') CSV.open(csv_filename, 'wb') do |csv| csv << first.keys each do |hash| csv << hash.values # _at(*keys) end end end |