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
:nodoc:.
-
#initialize(worksheet) ⇒ List
constructor
:nodoc:.
-
#keys ⇒ Object
Column names i.e.
-
#keys=(ary) ⇒ Object
Updates column names i.e.
-
#numeric_value(index, key) ⇒ Object
:nodoc:.
-
#push(hash) ⇒ Object
Adds a new row to the bottom.
-
#set(index, key, value) ⇒ Object
:nodoc:.
-
#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
:nodoc:
21 22 23 |
# File 'lib/google_drive/list.rb', line 21 def initialize(worksheet) #:nodoc: @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().
36 37 38 |
# File 'lib/google_drive/list.rb', line 36 def [](index) return 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().
46 47 48 |
# File 'lib/google_drive/list.rb', line 46 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).
53 54 55 56 57 |
# File 'lib/google_drive/list.rb', line 53 def each(&block) for i in 0...self.size yield(self[i]) end end |
#get(index, key) ⇒ Object
:nodoc:
96 97 98 |
# File 'lib/google_drive/list.rb', line 96 def get(index, key) #:nodoc: return @worksheet[index + 2, key_to_col(key)] end |
#keys ⇒ Object
Column names i.e. the contents of the first row. Duplicates are removed.
61 62 63 |
# File 'lib/google_drive/list.rb', line 61 def keys return (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().
69 70 71 72 73 74 75 76 |
# File 'lib/google_drive/list.rb', line 69 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
:nodoc:
100 101 102 |
# File 'lib/google_drive/list.rb', line 100 def numeric_value(index, key) #:nodoc: return @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().
84 85 86 87 88 |
# File 'lib/google_drive/list.rb', line 84 def push(hash) row = self[self.size] row.update(hash) return row end |
#set(index, key, value) ⇒ Object
:nodoc:
104 105 106 |
# File 'lib/google_drive/list.rb', line 104 def set(index, key, value) #:nodoc: @worksheet[index + 2, key_to_col(key)] = value end |
#size ⇒ Object
Number of non-empty rows in the worksheet excluding the first row.
26 27 28 |
# File 'lib/google_drive/list.rb', line 26 def size return @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).
92 93 94 |
# File 'lib/google_drive/list.rb', line 92 def to_hash_array() return self.map(){ |r| r.to_hash() } end |