gimite-google-spreadsheet-ruby 0.0.5 → 0.0.6
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.
- data/{README.txt → README.rdoc} +6 -1
- data/lib/google_spreadsheet.rb +44 -19
- metadata +7 -6
data/{README.txt → README.rdoc}
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
This is a library to read/write Google Spreadsheet.
|
1
|
+
This is a Ruby 1.8/1.9 library to read/write Google Spreadsheet.
|
2
2
|
|
3
3
|
|
4
4
|
= How to install
|
@@ -51,6 +51,11 @@ http://github.com/gimite/google-spreadsheet-ruby/tree/master
|
|
51
51
|
The license of this source is "New BSD Licence"
|
52
52
|
|
53
53
|
|
54
|
+
= Supported environments
|
55
|
+
|
56
|
+
Ruby 1.8.x and Ruby 1.9.x. Checked with Ruby 1.8.7 and Ruby 1.9.1.
|
57
|
+
|
58
|
+
|
54
59
|
= Author
|
55
60
|
|
56
61
|
Hiroshi Ichikawa - http://gimite.net/en/index.php?Contact
|
data/lib/google_spreadsheet.rb
CHANGED
@@ -10,6 +10,19 @@ require "hpricot"
|
|
10
10
|
Net::HTTP.version_1_2
|
11
11
|
|
12
12
|
|
13
|
+
if RUBY_VERSION < "1.9.0"
|
14
|
+
|
15
|
+
class String
|
16
|
+
|
17
|
+
def force_encoding(encoding)
|
18
|
+
return self
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
|
13
26
|
module GoogleSpreadsheet
|
14
27
|
|
15
28
|
# Authenticates with given +mail+ and +password+, and returns GoogleSpreadsheet::Session
|
@@ -27,10 +40,18 @@ module GoogleSpreadsheet
|
|
27
40
|
def self.saved_session(path = ENV["HOME"] + "/.ruby_google_spreadsheet.token")
|
28
41
|
session = Session.new(File.exist?(path) ? File.read(path) : nil)
|
29
42
|
session.on_auth_fail = proc() do
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
43
|
+
begin
|
44
|
+
require "highline2"
|
45
|
+
rescue LoadError
|
46
|
+
raise(LoadError,
|
47
|
+
"GoogleSpreadsheet.saved_session requires Highline library.\n" +
|
48
|
+
"Run\n" +
|
49
|
+
" \$ sudo gem install highline\n" +
|
50
|
+
"to install it.")
|
51
|
+
end
|
52
|
+
highline = HighLine.new()
|
53
|
+
mail = highline.ask("Mail: ")
|
54
|
+
password = highline.ask("Password: "){ |q| q.echo = false }
|
34
55
|
session.login(mail, password)
|
35
56
|
open(path, "w", 0600){ |f| f.write(session.auth_token) }
|
36
57
|
true
|
@@ -78,6 +99,10 @@ module GoogleSpreadsheet
|
|
78
99
|
return CGI.escapeHTML(str.to_s())
|
79
100
|
end
|
80
101
|
|
102
|
+
def as_utf8(str)
|
103
|
+
str.force_encoding("UTF-8")
|
104
|
+
end
|
105
|
+
|
81
106
|
end
|
82
107
|
|
83
108
|
|
@@ -190,9 +215,9 @@ module GoogleSpreadsheet
|
|
190
215
|
doc = get("http://spreadsheets.google.com/feeds/spreadsheets/private/full?#{query}")
|
191
216
|
result = []
|
192
217
|
for entry in doc.search("entry")
|
193
|
-
title = entry.search("title").text
|
194
|
-
url = entry.search(
|
195
|
-
"link[@rel='http://schemas.google.com/spreadsheets/2006#worksheetsfeed']")[0]["href"]
|
218
|
+
title = as_utf8(entry.search("title").text)
|
219
|
+
url = as_utf8(entry.search(
|
220
|
+
"link[@rel='http://schemas.google.com/spreadsheets/2006#worksheetsfeed']")[0]["href"])
|
196
221
|
result.push(Spreadsheet.new(self, url, title))
|
197
222
|
end
|
198
223
|
return result
|
@@ -280,9 +305,9 @@ module GoogleSpreadsheet
|
|
280
305
|
doc = @session.get(@worksheets_feed_url)
|
281
306
|
result = []
|
282
307
|
for entry in doc.search("entry")
|
283
|
-
title = entry.search("title").text
|
284
|
-
url = entry.search(
|
285
|
-
"link[@rel='http://schemas.google.com/spreadsheets/2006#cellsfeed']")[0]["href"]
|
308
|
+
title = as_utf8(entry.search("title").text)
|
309
|
+
url = as_utf8(entry.search(
|
310
|
+
"link[@rel='http://schemas.google.com/spreadsheets/2006#cellsfeed']")[0]["href"])
|
286
311
|
result.push(Worksheet.new(@session, self, url, title))
|
287
312
|
end
|
288
313
|
return result.freeze()
|
@@ -299,8 +324,8 @@ module GoogleSpreadsheet
|
|
299
324
|
</entry>
|
300
325
|
EOS
|
301
326
|
doc = @session.post(@worksheets_feed_url, xml)
|
302
|
-
url = doc.search(
|
303
|
-
"link[@rel='http://schemas.google.com/spreadsheets/2006#cellsfeed']")[0]["href"]
|
327
|
+
url = as_utf8(doc.search(
|
328
|
+
"link[@rel='http://schemas.google.com/spreadsheets/2006#cellsfeed']")[0]["href"])
|
304
329
|
return Worksheet.new(@session, self, url, title)
|
305
330
|
end
|
306
331
|
|
@@ -320,8 +345,8 @@ module GoogleSpreadsheet
|
|
320
345
|
|
321
346
|
def initialize(session, entry) #:nodoc:
|
322
347
|
@columns = {}
|
323
|
-
@worksheet_title = entry.search("gs:worksheet")[0]["name"]
|
324
|
-
@records_url = entry.search("content")[0]["src"]
|
348
|
+
@worksheet_title = as_utf8(entry.search("gs:worksheet")[0]["name"])
|
349
|
+
@records_url = as_utf8(entry.search("content")[0]["src"])
|
325
350
|
@session = session
|
326
351
|
end
|
327
352
|
|
@@ -357,8 +382,8 @@ module GoogleSpreadsheet
|
|
357
382
|
|
358
383
|
def initialize(session, entry) #:nodoc:
|
359
384
|
@session = session
|
360
|
-
for field in entry.search(
|
361
|
-
self[field["name"]] = field.inner_text
|
385
|
+
for field in entry.search("gs:field")
|
386
|
+
self[as_utf8(field["name"])] = as_utf8(field.inner_text)
|
362
387
|
end
|
363
388
|
end
|
364
389
|
|
@@ -517,7 +542,7 @@ module GoogleSpreadsheet
|
|
517
542
|
doc = @session.get(@cells_feed_url)
|
518
543
|
@max_rows = doc.search("gs:rowCount").text.to_i()
|
519
544
|
@max_cols = doc.search("gs:colCount").text.to_i()
|
520
|
-
@title = doc.search("title").text
|
545
|
+
@title = as_utf8(doc.search("title").text)
|
521
546
|
|
522
547
|
@cells = {}
|
523
548
|
@input_values = {}
|
@@ -525,8 +550,8 @@ module GoogleSpreadsheet
|
|
525
550
|
cell = entry.search("gs:cell")[0]
|
526
551
|
row = cell["row"].to_i()
|
527
552
|
col = cell["col"].to_i()
|
528
|
-
@cells[[row, col]] = cell.inner_text
|
529
|
-
@input_values[[row, col]] = cell["inputValue"]
|
553
|
+
@cells[[row, col]] = as_utf8(cell.inner_text)
|
554
|
+
@input_values[[row, col]] = as_utf8(cell["inputValue"])
|
530
555
|
end
|
531
556
|
@modified.clear()
|
532
557
|
@meta_modified = false
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gimite-google-spreadsheet-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroshi Ichikawa
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-26 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -30,16 +30,17 @@ executables: []
|
|
30
30
|
extensions: []
|
31
31
|
|
32
32
|
extra_rdoc_files:
|
33
|
-
- README.
|
33
|
+
- README.rdoc
|
34
34
|
files:
|
35
|
-
- README.
|
35
|
+
- README.rdoc
|
36
36
|
- lib/google_spreadsheet.rb
|
37
37
|
has_rdoc: true
|
38
38
|
homepage: http://github.com/gimite/google-spreadsheet-ruby/tree/master
|
39
|
+
licenses:
|
39
40
|
post_install_message:
|
40
41
|
rdoc_options:
|
41
42
|
- --main
|
42
|
-
- README.
|
43
|
+
- README.rdoc
|
43
44
|
require_paths:
|
44
45
|
- lib
|
45
46
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -57,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
57
58
|
requirements: []
|
58
59
|
|
59
60
|
rubyforge_project:
|
60
|
-
rubygems_version: 1.
|
61
|
+
rubygems_version: 1.3.5
|
61
62
|
signing_key:
|
62
63
|
specification_version: 2
|
63
64
|
summary: This is a library to read/write Google Spreadsheet.
|