abstract-tables 1.0.2 → 1.0.3

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.
@@ -2,8 +2,8 @@ require 'rubygems'
2
2
 
3
3
  SPEC = Gem::Specification.new do |s|
4
4
  s.name = "abstract-tables"
5
- s.version = "1.0.2"
6
- s.date = '2011-02-09'
5
+ s.version = "1.0.3"
6
+ s.date = '2011-02-15'
7
7
  s.authors = ["Kyle Burton"]
8
8
  s.email = "kyle.burton@gmail.com"
9
9
  s.platform = Gem::Platform::RUBY
@@ -31,6 +31,7 @@ DESC
31
31
  lib/abtab/drivers/csv_driver.rb
32
32
  lib/abtab/drivers/dbi_driver.rb
33
33
  lib/abtab/drivers/tab_driver.rb
34
+ lib/abtab/drivers/xls_driver.rb
34
35
  lib/abtab/filter/grep.rb
35
36
  lib/abtab/filter.rb
36
37
  lib/abtab.rb
@@ -43,5 +44,6 @@ DESC
43
44
  s.require_paths = %w[lib bin]
44
45
  s.extra_rdoc_files = %w[README.textile] # LICENSE]
45
46
  s.add_runtime_dependency('dbi', [">= 0.4.5"])
47
+ s.add_runtime_dependency('spreadsheet', [">= 0.6.5.2"])
46
48
  s.has_rdoc = false
47
49
  end
data/bin/atcat CHANGED
@@ -19,7 +19,7 @@ else
19
19
  outp = Abtab.write_handle ARGV.shift
20
20
  end
21
21
 
22
- outp.set_columns inp.columns
23
-
24
22
  outp.import inp
25
23
 
24
+ outp.close
25
+ inp.close
data/bin/atview CHANGED
@@ -117,7 +117,7 @@ require 'optparse'
117
117
  # puts ""
118
118
  # end
119
119
 
120
- uri = ARGV.shift or raise "You must speicfy a URI to view"
120
+ uri = ARGV.shift || "tab:///dev/stdin"
121
121
  inp = Abtab.read_handle uri
122
122
  recno = 0
123
123
  max_width = inp.columns.map {|f| f.size}.max
@@ -0,0 +1,79 @@
1
+ require 'spreadsheet'
2
+
3
+ class Abtab::Driver::XlsDriver < Abtab::Driver
4
+ def initialize url
5
+ @read_index = 1
6
+ @read_worksheet_index = 0
7
+ @write_index = 0
8
+ @options = {}
9
+ @options["client_encoding"] = "UTF-8"
10
+ @schema, @file, @options = url_parse url, @options
11
+ end
12
+
13
+ def open_for_reading
14
+ if !File.exists? @file
15
+ raise "Error: can not open for reading, file does not exist: #{@file}"
16
+ end
17
+
18
+ book = Spreadsheet.open @file
19
+ if @options["worksheet"]
20
+ unless book.worksheets.detect { |ws| ws.name == @options["worksheet"] }
21
+ raise "Error: specified worksheet (#{@options['worksheet']}) not found in workbook."
22
+ end
23
+ @read_fh = book.worksheet @options["worksheet"]
24
+ else
25
+ @read_fh = book.worksheet 0
26
+ end
27
+
28
+ header_line = @read_fh.row 0
29
+ @columns = parse_line header_line
30
+ end
31
+
32
+ def parse_line l
33
+ # For now, coerce everything string
34
+ l.collect { |v| v.to_s }
35
+ end
36
+
37
+ def columns
38
+ @columns
39
+ end
40
+
41
+ def next_record
42
+ if @read_index >= @read_fh.count
43
+ line = nil
44
+ else
45
+ line = parse_line @read_fh.row @read_index
46
+ @read_index += 1
47
+ end
48
+ line
49
+ end
50
+
51
+ def close
52
+ if @read_fh
53
+ @read_fh = nil
54
+ end
55
+ if @write_fh
56
+ @write_fh.write @file
57
+ @write_fh = nil
58
+ end
59
+ end
60
+
61
+ def open_for_writing
62
+ @write_fh = Spreadsheet::Workbook.new
63
+ @write_sheet = @write_fh.create_worksheet
64
+ set_columns(@columns) if @columns && !@columns.empty
65
+ end
66
+
67
+ def write_record rec
68
+ @write_sheet.row(@write_index).replace rec
69
+ @write_index += 1
70
+ end
71
+
72
+ def set_columns cols
73
+ @columns = cols
74
+ write_record @columns
75
+ end
76
+
77
+ end
78
+
79
+ Abtab.register 'xls', Abtab::Driver::XlsDriver
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: abstract-tables
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 2
10
- version: 1.0.2
9
+ - 3
10
+ version: 1.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kyle Burton
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-09 00:00:00 -05:00
18
+ date: 2011-02-15 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -34,6 +34,23 @@ dependencies:
34
34
  version: 0.4.5
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: spreadsheet
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 111
46
+ segments:
47
+ - 0
48
+ - 6
49
+ - 5
50
+ - 2
51
+ version: 0.6.5.2
52
+ type: :runtime
53
+ version_requirements: *id002
37
54
  description: |+
38
55
  The best I could come up with was to just show you:
39
56
 
@@ -63,6 +80,7 @@ files:
63
80
  - lib/abtab/drivers/csv_driver.rb
64
81
  - lib/abtab/drivers/dbi_driver.rb
65
82
  - lib/abtab/drivers/tab_driver.rb
83
+ - lib/abtab/drivers/xls_driver.rb
66
84
  - lib/abtab/filter/grep.rb
67
85
  - lib/abtab/filter.rb
68
86
  - lib/abtab.rb