Class: GoogleDrive::List
- Inherits:
-
Object
- Object
- GoogleDrive::List
- Includes:
- Enumerable
- Defined in:
- lib/google_drive/list.rb
Overview
Provides access to cells using column names. Use GoogleDrive::Worksheet#list to get GoogleDrive::List object. – This is implemented as wrapper of GoogleDrive::Worksheet i.e. using cells feed, not list feed. In this way, we can easily provide consistent API as GoogleDrive::Worksheet using save()/reload().
Instance Method Summary collapse
-
#[](index) ⇒ Object
Returns Hash-like object (GoogleDrive::ListRow) for the row with the index.
-
#[]=(index, hash) ⇒ Object
Updates the row with the index with the given Hash object.
-
#each(&_block) ⇒ Object
Iterates over Hash-like object (GoogleDrive::ListRow) for each row (except for the first row).
- #get(index, key) ⇒ Object private
-
#initialize(worksheet) ⇒ List
constructor
private
A new instance of List.
- #input_value(index, key) ⇒ Object private
-
#keys ⇒ Object
Column names i.e.
-
#keys=(ary) ⇒ Object
Updates column names i.e.
- #numeric_value(index, key) ⇒ Object private
-
#push(hash) ⇒ Object
Adds a new row to the bottom.
- #set(index, key, value) ⇒ Object private
-
#size ⇒ Object
Number of non-empty rows in the worksheet excluding the first row.
-
#to_hash_array ⇒ Object
Returns all rows (except for the first row) as Array of Hash.
Constructor Details
#initialize(worksheet) ⇒ List
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of List.
19 20 21 |
# File 'lib/google_drive/list.rb', line 19 def initialize(worksheet) @worksheet = worksheet end |
Instance Method Details
#[](index) ⇒ Object
Returns Hash-like object (GoogleDrive::ListRow) for the row with the index. Keys of the object are colum names (the first row). The second row has index 0.
Note that updates to the returned object are not sent to the server until you call GoogleDrive::Worksheet#save().
34 35 36 |
# File 'lib/google_drive/list.rb', line 34 def [](index) ListRow.new(self, index) end |
#[]=(index, hash) ⇒ Object
Updates the row with the index with the given Hash object. Keys of hash
are colum names (the first row). The second row has index 0.
Note that update is not sent to the server until you call GoogleDrive::Worksheet#save().
44 45 46 |
# File 'lib/google_drive/list.rb', line 44 def []=(index, hash) self[index].replace(hash) end |
#each(&_block) ⇒ Object
Iterates over Hash-like object (GoogleDrive::ListRow) for each row (except for the first row). Keys of the object are colum names (the first row).
51 52 53 54 55 |
# File 'lib/google_drive/list.rb', line 51 def each(&_block) for i in 0...size yield(self[i]) end end |
#get(index, key) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
95 96 97 |
# File 'lib/google_drive/list.rb', line 95 def get(index, key) @worksheet[index + 2, key_to_col(key)] end |
#input_value(index, key) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
105 106 107 |
# File 'lib/google_drive/list.rb', line 105 def input_value(index, key) @worksheet.input_value(index + 2, key_to_col(key)) end |
#keys ⇒ Object
Column names i.e. the contents of the first row. Duplicates are removed.
59 60 61 |
# File 'lib/google_drive/list.rb', line 59 def keys (1..@worksheet.num_cols).map { |i| @worksheet[1, i] }.uniq end |
#keys=(ary) ⇒ Object
Updates column names i.e. the contents of the first row.
Note that update is not sent to the server until you call GoogleDrive::Worksheet#save().
67 68 69 70 71 72 73 74 |
# File 'lib/google_drive/list.rb', line 67 def keys=(ary) for i in 1..ary.size @worksheet[1, i] = ary[i - 1] end for i in (ary.size + 1)..@worksheet.num_cols @worksheet[1, i] = '' end end |
#numeric_value(index, key) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
100 101 102 |
# File 'lib/google_drive/list.rb', line 100 def numeric_value(index, key) @worksheet.numeric_value(index + 2, key_to_col(key)) end |
#push(hash) ⇒ Object
Adds a new row to the bottom. Keys of hash
are colum names (the first row). Returns GoogleDrive::ListRow for the new row.
Note that update is not sent to the server until you call GoogleDrive::Worksheet#save().
82 83 84 85 86 |
# File 'lib/google_drive/list.rb', line 82 def push(hash) row = self[size] row.update(hash) row end |
#set(index, key, value) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
110 111 112 |
# File 'lib/google_drive/list.rb', line 110 def set(index, key, value) @worksheet[index + 2, key_to_col(key)] = value end |
#size ⇒ Object
Number of non-empty rows in the worksheet excluding the first row.
24 25 26 |
# File 'lib/google_drive/list.rb', line 24 def size @worksheet.num_rows - 1 end |
#to_hash_array ⇒ Object
Returns all rows (except for the first row) as Array of Hash. Keys of Hash objects are colum names (the first row).
90 91 92 |
# File 'lib/google_drive/list.rb', line 90 def to_hash_array map(&:to_hash) end |