Class: GoogleDrive::List

Inherits:
Object
  • Object
show all
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

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

#keysObject

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

#sizeObject

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_arrayObject

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