tablespoon 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/lib/tablespoon.rb +40 -19
  3. data/tablespoon.gemspec +3 -3
  4. metadata +87 -98
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/lib/tablespoon.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'google_drive'
2
2
  require 'pp'
3
+ require 'JSON'
3
4
 
4
5
  module Tablespoon
5
6
 
@@ -17,6 +18,7 @@ module Tablespoon
17
18
  end
18
19
 
19
20
  def get_table( x, opts = {} )
21
+
20
22
  if x.class == String
21
23
  return Table.new @doc.worksheet_by_title( x ), opts
22
24
  else
@@ -40,7 +42,6 @@ module Tablespoon
40
42
  @id_field = opts[:id_field]
41
43
  @include_blank_row = opts[:include_blank_rows] || true
42
44
 
43
-
44
45
  build_column_map
45
46
 
46
47
  # build data array
@@ -68,11 +69,19 @@ module Tablespoon
68
69
  end
69
70
 
70
71
  end
71
-
72
+
72
73
  def []
73
74
  return @rows[i]
74
75
  end
75
76
 
77
+ def add_row
78
+ r = Record.new self
79
+ r.row_num = @ws.num_rows + 1
80
+ r.data = {}
81
+
82
+ r
83
+ end
84
+
76
85
  def length
77
86
  return @rows.length
78
87
  end
@@ -85,10 +94,16 @@ module Tablespoon
85
94
  @rows.each { |i| yield i }
86
95
  end
87
96
 
88
- def find
97
+ def find( field, value )
98
+ @rows.find { |r| r[field] == value }
89
99
  end
90
100
 
91
- def find_by_id
101
+ def find_by_id( value )
102
+ @rows.find { |r| r.id == value }
103
+ end
104
+
105
+ def find_all( field, value )
106
+ @rows.select { |r| r[field] == value }
92
107
  end
93
108
 
94
109
  def save
@@ -103,7 +118,22 @@ module Tablespoon
103
118
 
104
119
  @field_map = column_map.invert
105
120
  end
106
-
121
+
122
+ def dump
123
+ output = []
124
+
125
+ @rows.each do |r|
126
+ output << r.data
127
+ end
128
+
129
+ output
130
+ end
131
+
132
+ def to_json
133
+ JSON.dump( self.dump )
134
+ end
135
+
136
+
107
137
  end
108
138
 
109
139
  class Record
@@ -123,23 +153,14 @@ module Tablespoon
123
153
  col_num = get_col_num( field )
124
154
  row_num = @row_num
125
155
 
126
- ## if we have an id field defined, check to make
127
- ## sure the row we are updating matches
128
-
129
- if @id_field
130
- id_col_num = get_col_num( @id_field )
131
- if @ws[row_num, id_col_num] == id
132
- @ws[row_num, col_num] = value
133
- else
134
- raise "Row has moved"
135
- end
156
+ @ws[row_num, col_num] = value
157
+
158
+ @ws.save
136
159
 
137
- else
138
- @ws[row_num, col_num] = value
160
+ if field == @id_field
161
+ @id = value
139
162
  end
140
163
 
141
- @ws.save
142
-
143
164
  end
144
165
 
145
166
  def get_col_num( field )
data/tablespoon.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "tablespoon"
8
- s.version = "0.0.3"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matthew Ericson"]
12
- s.date = "2013-09-04"
12
+ s.date = "2013-12-27"
13
13
  s.description = "Read and write Google Spreadsheets like records"
14
14
  s.email = "mericson@ericson.net"
15
15
  s.extra_rdoc_files = [
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  s.homepage = "http://github.com/mericson/tablespoon"
34
34
  s.licenses = ["GPL"]
35
35
  s.require_paths = ["lib"]
36
- s.rubygems_version = "1.8.24"
36
+ s.rubygems_version = "1.8.25"
37
37
  s.summary = "Read and write Google Spreadsheets like records"
38
38
 
39
39
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,109 +1,104 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: tablespoon
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Matthew Ericson
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-09-04 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2013-12-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: google_drive
16
+ requirement: !ruby/object:Gem::Requirement
22
17
  none: false
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 19
27
- segments:
28
- - 0
29
- - 3
30
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
31
21
  version: 0.3.0
32
- prerelease: false
33
22
  type: :runtime
34
- name: google_drive
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
46
23
  prerelease: false
47
- type: :development
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.3.0
30
+ - !ruby/object:Gem::Dependency
48
31
  name: shoulda
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- requirement: &id003 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
52
33
  none: false
53
- requirements:
54
- - - ~>
55
- - !ruby/object:Gem::Version
56
- hash: 31
57
- segments:
58
- - 3
59
- - 12
60
- version: "3.12"
61
- prerelease: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
62
38
  type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
63
47
  name: rdoc
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- requirement: &id004 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
67
49
  none: false
68
- requirements:
50
+ requirements:
69
51
  - - ~>
70
- - !ruby/object:Gem::Version
71
- hash: 27
72
- segments:
73
- - 1
74
- - 3
75
- - 0
76
- version: 1.3.0
77
- prerelease: false
52
+ - !ruby/object:Gem::Version
53
+ version: '3.12'
78
54
  type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3.12'
62
+ - !ruby/object:Gem::Dependency
79
63
  name: bundler
80
- version_requirements: *id004
81
- - !ruby/object:Gem::Dependency
82
- requirement: &id005 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
83
65
  none: false
84
- requirements:
66
+ requirements:
85
67
  - - ~>
86
- - !ruby/object:Gem::Version
87
- hash: 63
88
- segments:
89
- - 1
90
- - 8
91
- - 4
92
- version: 1.8.4
93
- prerelease: false
68
+ - !ruby/object:Gem::Version
69
+ version: 1.3.0
94
70
  type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.3.0
78
+ - !ruby/object:Gem::Dependency
95
79
  name: jeweler
96
- version_requirements: *id005
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 1.8.4
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 1.8.4
97
94
  description: Read and write Google Spreadsheets like records
98
95
  email: mericson@ericson.net
99
96
  executables: []
100
-
101
97
  extensions: []
102
-
103
- extra_rdoc_files:
98
+ extra_rdoc_files:
104
99
  - LICENSE.txt
105
100
  - README.rdoc
106
- files:
101
+ files:
107
102
  - .document
108
103
  - Gemfile
109
104
  - Gemfile.lock
@@ -117,37 +112,31 @@ files:
117
112
  - test/test.rb
118
113
  - test/test_tablespoon.rb
119
114
  homepage: http://github.com/mericson/tablespoon
120
- licenses:
115
+ licenses:
121
116
  - GPL
122
117
  post_install_message:
123
118
  rdoc_options: []
124
-
125
- require_paths:
119
+ require_paths:
126
120
  - lib
127
- required_ruby_version: !ruby/object:Gem::Requirement
121
+ required_ruby_version: !ruby/object:Gem::Requirement
128
122
  none: false
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- hash: 3
133
- segments:
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ segments:
134
128
  - 0
135
- version: "0"
136
- required_rubygems_version: !ruby/object:Gem::Requirement
129
+ hash: -2779950928584544852
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
131
  none: false
138
- requirements:
139
- - - ">="
140
- - !ruby/object:Gem::Version
141
- hash: 3
142
- segments:
143
- - 0
144
- version: "0"
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: '0'
145
136
  requirements: []
146
-
147
137
  rubyforge_project:
148
- rubygems_version: 1.8.24
138
+ rubygems_version: 1.8.25
149
139
  signing_key:
150
140
  specification_version: 3
151
141
  summary: Read and write Google Spreadsheets like records
152
142
  test_files: []
153
-