remote_table 0.2.30 → 0.2.31

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -10,10 +10,13 @@ begin
10
10
  gem.email = "seamus@abshere.net"
11
11
  gem.homepage = "http://github.com/seamusabshere/remote_table"
12
12
  gem.authors = ["Seamus Abshere", "Andy Rossmeissl"]
13
- gem.add_dependency 'roo', '1.3.11' # 1.9.3 breaks
14
- gem.add_dependency 'fastercsv', '>=1.5.0'
13
+ # sabshere [unknown date] roo 1.9.3 doesn't work, so use old 1.3 version
14
+ gem.add_dependency 'roo', '1.3.11'
15
+ # sabshere 9/30/10 depending on fastercsv when using ruby 1.9.2 results in exiting with error
16
+ # gem.add_dependency 'fastercsv', '>=1.5.0'
15
17
  gem.add_dependency 'activesupport', '>=2.3.4'
16
- gem.add_dependency 'slither', '>=0.99.3'
18
+ # sabshere 9/30/10 official slither gem doesn't yet support ruby 1.9.2
19
+ # gem.add_dependency 'slither', '>=0.99.3'
17
20
  gem.add_dependency 'nokogiri', '>=1.4.1'
18
21
  gem.add_dependency 'escape', '>=0.0.4'
19
22
  gem.add_development_dependency 'errata', '>=0.2.0'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.30
1
+ 0.2.31
data/lib/remote_table.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'digest/md5'
2
2
  require 'uri'
3
3
  require 'tmpdir'
4
+ require 'kconv'
4
5
  require 'active_support'
5
6
  require 'active_support/version'
6
7
  %w{
@@ -13,9 +14,30 @@ require 'active_support/version'
13
14
  }.each do |active_support_3_requirement|
14
15
  require active_support_3_requirement
15
16
  end if ActiveSupport::VERSION::MAJOR == 3
16
- require 'fastercsv'
17
+
18
+ if RUBY_VERSION >= '1.9'
19
+ require 'csv'
20
+ FasterCSV = CSV
21
+ else
22
+ begin
23
+ require 'fastercsv'
24
+ rescue LoadError
25
+ $stderr.puts "[remote_table gem] You probably need to manually install the fastercsv gem."
26
+ raise $!
27
+ end
28
+ end
29
+
30
+ begin
31
+ if RUBY_VERSION >= '1.9'
32
+ gem "slither-ruby19"
33
+ end
34
+ require 'slither'
35
+ rescue LoadError
36
+ $stderr.puts "[remote_table gem] You probably need to manually install the #{RUBY_VERSION >= '1.9' ? 'slither-ruby19' : 'slither'} gem."
37
+ raise $!
38
+ end
39
+
17
40
  require 'escape'
18
- require 'slither'
19
41
  require 'roo'
20
42
  I_KNOW_I_AM_USING_AN_OLD_AND_BUGGY_VERSION_OF_LIBXML2 = true
21
43
  require 'nokogiri'
@@ -38,7 +38,7 @@ class RemoteTable
38
38
  def define_fixed_width_schema!
39
39
  raise "can't define both schema_name and schema" if !schema_name.blank?
40
40
  self.schema_name = "autogenerated_#{filename.gsub(/[^a-z0-9_]/i, '')}".to_sym
41
- self.trap ||= lambda { true }
41
+ self.trap ||= lambda { |_| true }
42
42
  Slither.define schema_name do |d|
43
43
  d.rows do |row|
44
44
  row.trap(&trap)
@@ -21,11 +21,22 @@ class RemoteTable
21
21
  self
22
22
  end
23
23
 
24
- # - convert OrderedHash to a Hash (otherwise field ordering will be saved)
24
+ # - convert it to a plain hash for whatever ruby version you're on
25
25
  # - dump it
26
26
  # - digest it
27
27
  def self.row_hash(row)
28
- Digest::MD5.hexdigest Marshal.dump(Hash.new.replace(row))
28
+ plain_hsh = if RUBY_VERSION >= '1.9'
29
+ row.keys.sort.inject(::Hash.new) do |memo, key|
30
+ value = row[key]
31
+ key = key.to_s.toutf8
32
+ value = value.to_s.toutf8 if value.respond_to? :to_s
33
+ memo[key] = value
34
+ memo
35
+ end
36
+ else
37
+ ::Hash.new.replace(row)
38
+ end
39
+ ::Digest::MD5.hexdigest ::Marshal.dump(plain_hsh)
29
40
  end
30
41
 
31
42
  def each_row(&block)
data/remote_table.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{remote_table}
8
- s.version = "0.2.30"
8
+ s.version = "0.2.31"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Seamus Abshere", "Andy Rossmeissl"]
12
- s.date = %q{2010-09-08}
12
+ s.date = %q{2010-09-30}
13
13
  s.description = %q{Remotely open and parse Excel XLS, ODS, CSV and fixed-width tables.}
14
14
  s.email = %q{seamus@abshere.net}
15
15
  s.extra_rdoc_files = [
@@ -58,26 +58,20 @@ Gem::Specification.new do |s|
58
58
 
59
59
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
60
60
  s.add_runtime_dependency(%q<roo>, ["= 1.3.11"])
61
- s.add_runtime_dependency(%q<fastercsv>, [">= 1.5.0"])
62
61
  s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
63
- s.add_runtime_dependency(%q<slither>, [">= 0.99.3"])
64
62
  s.add_runtime_dependency(%q<nokogiri>, [">= 1.4.1"])
65
63
  s.add_runtime_dependency(%q<escape>, [">= 0.0.4"])
66
64
  s.add_development_dependency(%q<errata>, [">= 0.2.0"])
67
65
  else
68
66
  s.add_dependency(%q<roo>, ["= 1.3.11"])
69
- s.add_dependency(%q<fastercsv>, [">= 1.5.0"])
70
67
  s.add_dependency(%q<activesupport>, [">= 2.3.4"])
71
- s.add_dependency(%q<slither>, [">= 0.99.3"])
72
68
  s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
73
69
  s.add_dependency(%q<escape>, [">= 0.0.4"])
74
70
  s.add_dependency(%q<errata>, [">= 0.2.0"])
75
71
  end
76
72
  else
77
73
  s.add_dependency(%q<roo>, ["= 1.3.11"])
78
- s.add_dependency(%q<fastercsv>, [">= 1.5.0"])
79
74
  s.add_dependency(%q<activesupport>, [">= 2.3.4"])
80
- s.add_dependency(%q<slither>, [">= 0.99.3"])
81
75
  s.add_dependency(%q<nokogiri>, [">= 1.4.1"])
82
76
  s.add_dependency(%q<escape>, [">= 0.0.4"])
83
77
  s.add_dependency(%q<errata>, [">= 0.2.0"])
@@ -202,8 +202,8 @@ class RemoteTableTest < Test::Unit::TestCase
202
202
  y[:b] = 2
203
203
  y[:a] = 1
204
204
 
205
- assert Marshal.dump(x) != Marshal.dump(y)
206
- assert RemoteTable::Transform.row_hash(x) == RemoteTable::Transform.row_hash(y)
205
+ assert_not_equal Marshal.dump(x), Marshal.dump(y)
206
+ assert_equal RemoteTable::Transform.row_hash(x), RemoteTable::Transform.row_hash(y)
207
207
  end
208
208
 
209
209
  should "open a Google Docs url (as a CSV)" do
data/test/test_helper.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'shoulda'
4
- require 'ruby-debug'
4
+ # require 'ruby-debug'
5
5
  require 'errata'
6
6
  require 'active_support/all'
7
7
 
8
8
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
9
9
  $LOAD_PATH.unshift(File.dirname(__FILE__))
10
- require 'remote_table'
10
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'remote_table'))
11
11
 
12
12
  class Test::Unit::TestCase
13
13
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remote_table
3
3
  version: !ruby/object:Gem::Version
4
- hash: 43
4
+ hash: 41
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 30
10
- version: 0.2.30
9
+ - 31
10
+ version: 0.2.31
11
11
  platform: ruby
12
12
  authors:
13
13
  - Seamus Abshere
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-09-08 00:00:00 -05:00
19
+ date: 2010-09-30 00:00:00 -05:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -35,26 +35,10 @@ dependencies:
35
35
  version: 1.3.11
36
36
  type: :runtime
37
37
  version_requirements: *id001
38
- - !ruby/object:Gem::Dependency
39
- name: fastercsv
40
- prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- hash: 3
47
- segments:
48
- - 1
49
- - 5
50
- - 0
51
- version: 1.5.0
52
- type: :runtime
53
- version_requirements: *id002
54
38
  - !ruby/object:Gem::Dependency
55
39
  name: activesupport
56
40
  prerelease: false
57
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ requirement: &id002 !ruby/object:Gem::Requirement
58
42
  none: false
59
43
  requirements:
60
44
  - - ">="
@@ -66,27 +50,11 @@ dependencies:
66
50
  - 4
67
51
  version: 2.3.4
68
52
  type: :runtime
69
- version_requirements: *id003
70
- - !ruby/object:Gem::Dependency
71
- name: slither
72
- prerelease: false
73
- requirement: &id004 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- hash: 405
79
- segments:
80
- - 0
81
- - 99
82
- - 3
83
- version: 0.99.3
84
- type: :runtime
85
- version_requirements: *id004
53
+ version_requirements: *id002
86
54
  - !ruby/object:Gem::Dependency
87
55
  name: nokogiri
88
56
  prerelease: false
89
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ requirement: &id003 !ruby/object:Gem::Requirement
90
58
  none: false
91
59
  requirements:
92
60
  - - ">="
@@ -98,11 +66,11 @@ dependencies:
98
66
  - 1
99
67
  version: 1.4.1
100
68
  type: :runtime
101
- version_requirements: *id005
69
+ version_requirements: *id003
102
70
  - !ruby/object:Gem::Dependency
103
71
  name: escape
104
72
  prerelease: false
105
- requirement: &id006 !ruby/object:Gem::Requirement
73
+ requirement: &id004 !ruby/object:Gem::Requirement
106
74
  none: false
107
75
  requirements:
108
76
  - - ">="
@@ -114,11 +82,11 @@ dependencies:
114
82
  - 4
115
83
  version: 0.0.4
116
84
  type: :runtime
117
- version_requirements: *id006
85
+ version_requirements: *id004
118
86
  - !ruby/object:Gem::Dependency
119
87
  name: errata
120
88
  prerelease: false
121
- requirement: &id007 !ruby/object:Gem::Requirement
89
+ requirement: &id005 !ruby/object:Gem::Requirement
122
90
  none: false
123
91
  requirements:
124
92
  - - ">="
@@ -130,7 +98,7 @@ dependencies:
130
98
  - 0
131
99
  version: 0.2.0
132
100
  type: :development
133
- version_requirements: *id007
101
+ version_requirements: *id005
134
102
  description: Remotely open and parse Excel XLS, ODS, CSV and fixed-width tables.
135
103
  email: seamus@abshere.net
136
104
  executables: []