workbook 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/.yardoc/checksums +18 -0
  2. data/.yardoc/object_types +3 -0
  3. data/.yardoc/objects/root.dat +0 -0
  4. data/.yardoc/proxy_types +0 -0
  5. data/Gemfile.lock +1 -1
  6. data/{readme.markdown → README.md} +36 -10
  7. data/doc/RubyXL.html +128 -0
  8. data/doc/RubyXL/Cell.html +202 -0
  9. data/doc/RubyXL/Workbook.html +447 -0
  10. data/doc/Workbook.html +130 -0
  11. data/doc/Workbook/Book.html +1484 -0
  12. data/doc/Workbook/Cell.html +1402 -0
  13. data/doc/Workbook/Format.html +654 -0
  14. data/doc/Workbook/Modules.html +117 -0
  15. data/doc/Workbook/Modules/RawObjectsStorage.html +508 -0
  16. data/doc/Workbook/Modules/TableDiffSort.html +620 -0
  17. data/doc/Workbook/Modules/TypeParser.html +1012 -0
  18. data/doc/Workbook/Readers.html +117 -0
  19. data/doc/Workbook/Readers/CsvReader.html +262 -0
  20. data/doc/Workbook/Readers/TxtReader.html +238 -0
  21. data/doc/Workbook/Readers/XlsReader.html +362 -0
  22. data/doc/Workbook/Readers/XlsShared.html +189 -0
  23. data/doc/Workbook/Readers/XlsxReader.html +295 -0
  24. data/doc/Workbook/Row.html +1939 -0
  25. data/doc/Workbook/Sheet.html +528 -0
  26. data/doc/Workbook/Table.html +883 -0
  27. data/doc/Workbook/Template.html +639 -0
  28. data/doc/Workbook/Writers.html +117 -0
  29. data/doc/Workbook/Writers/CsvTableWriter.html +175 -0
  30. data/doc/Workbook/Writers/XlsWriter.html +865 -0
  31. data/doc/_index.html +336 -0
  32. data/doc/class_list.html +53 -0
  33. data/doc/css/common.css +1 -0
  34. data/doc/css/full_list.css +57 -0
  35. data/doc/css/style.css +328 -0
  36. data/doc/file.README.html +236 -0
  37. data/doc/file_list.html +55 -0
  38. data/doc/frames.html +28 -0
  39. data/doc/index.html +236 -0
  40. data/doc/js/app.js +214 -0
  41. data/doc/js/full_list.js +173 -0
  42. data/doc/js/jquery.js +4 -0
  43. data/doc/method_list.html +972 -0
  44. data/doc/top-level-namespace.html +112 -0
  45. data/lib/workbook/book.rb +38 -29
  46. data/lib/workbook/cell.rb +25 -0
  47. data/lib/workbook/format.rb +9 -2
  48. data/lib/workbook/modules/raw_objects_storage.rb +5 -0
  49. data/lib/workbook/modules/table_diff_sort.rb +8 -6
  50. data/lib/workbook/modules/type_parser.rb +16 -3
  51. data/lib/workbook/readers/xls_reader.rb +1 -70
  52. data/lib/workbook/readers/xls_shared.rb +75 -0
  53. data/lib/workbook/row.rb +89 -17
  54. data/lib/workbook/sheet.rb +26 -0
  55. data/lib/workbook/table.rb +20 -1
  56. data/lib/workbook/template.rb +12 -11
  57. data/lib/workbook/writers/xls_writer.rb +19 -77
  58. data/test/test_modules_table_diff_sort.rb +19 -6
  59. data/test/test_row.rb +54 -0
  60. data/test/test_sheet.rb +8 -0
  61. data/test/test_table.rb +22 -3
  62. data/test/test_writers_xls_writer.rb +3 -0
  63. data/workbook.gemspec +1 -1
  64. metadata +46 -3
@@ -1,26 +1,23 @@
1
1
  require 'workbook/modules/raw_objects_storage'
2
2
 
3
3
  module Workbook
4
- class Template
4
+ # Workbook::Template is a container for different Workbook::Format's and the storage of raw template data that isn't really supported by Workbook, but should survive a typical read/write cyclus.
5
+ class Template
5
6
  include Workbook::Modules::RawObjectsStorage
6
7
 
8
+ # Initialize Workbook::Template
7
9
  def initialize
8
10
  @formats = {}
9
11
  @has_header = true
10
12
  end
11
13
 
14
+ # Whether the template has a predefined header (headers are used )
12
15
  def has_header?
13
16
  @has_header
14
17
  end
15
-
16
- def has_header= boolean
17
- if format.is_a? TrueClass or format.is_a? FalseClass
18
- @has_header = boolean
19
- else
20
- raise ArgumentError, "format should be a boolean, true of false"
21
- end
22
- end
23
18
 
19
+ # Add a Workbook::Format to the template
20
+ # @param [Workbook::Format] format (of a cell) to add to the template
24
21
  def add_format format
25
22
  if format.is_a? Workbook::Format
26
23
  @formats[format.name]=format
@@ -29,10 +26,16 @@ module Workbook
29
26
  end
30
27
  end
31
28
 
29
+ # Return the list of associated formats
30
+ # @return [Hash] A keyed-hash of named formats
32
31
  def formats
33
32
  @formats
34
33
  end
35
34
 
35
+ # Create or find a format by name
36
+ # @return [Workbook::Format] The new or found format
37
+ # @param [String] name of the format (e.g. whatever you want, in diff names such as 'destroyed', 'updated' and 'created' are being used)
38
+ # @param [Symbol] variant can also be a strftime formatting string (e.g. "%Y-%m-%d")
36
39
  def create_or_find_format_by name, variant=:default
37
40
  fs = @formats[name]
38
41
  fs = @formats[name] = {} if fs.nil?
@@ -46,7 +49,5 @@ module Workbook
46
49
  end
47
50
  return @formats[name][variant]
48
51
  end
49
-
50
-
51
52
  end
52
53
  end
@@ -3,79 +3,10 @@ require 'spreadsheet'
3
3
  module Workbook
4
4
  module Writers
5
5
  module XlsWriter
6
- # TODO: find better way to dupe
7
- XLS_COLORS = {:xls_color_1=>'#000000',
8
- :xls_color_2=>'#FFFFFF',
9
- :xls_color_3=>'#FF0000',
10
- :xls_color_4=>'#00FF00',
11
- :xls_color_5=>'#0000FF',
12
- :xls_color_6=>'#FFFF00',
13
- :xls_color_7=>'#FF00FF',
14
- :xls_color_8=>'#00FFFF',
15
- :xls_color_9=>'#800000',
16
- :xls_color_10=>'#008000',
17
- :xls_color_11=>'#000080',
18
- :xls_color_12=>'#808000',
19
- :xls_color_13=>'#800080',
20
- :xls_color_14=>'#008080',
21
- :xls_color_15=>'#C0C0C0',
22
- :xls_color_16=>'#808080',
23
- :xls_color_17=>'#9999FF',
24
- :xls_color_18=>'#993366',
25
- :xls_color_19=>'#FFFFCC',
26
- :xls_color_20=>'#CCFFFF',
27
- :xls_color_21=>'#660066',
28
- :xls_color_22=>'#FF8080',
29
- :xls_color_23=>'#0066CC',
30
- :xls_color_24=>'#CCCCFF',
31
- :xls_color_25=>'#000080',
32
- :xls_color_26=>'#FF00FF',
33
- :xls_color_27=>'#FFFF00',
34
- :xls_color_28=>'#00FFFF',
35
- :xls_color_29=>'#800080',
36
- :xls_color_30=>'#800000',
37
- :xls_color_31=>'#008080',
38
- :xls_color_32=>'#0000FF',
39
- :xls_color_33=>'#00CCFF',
40
- :xls_color_34=>'#CCFFFF',
41
- :xls_color_35=>'#CCFFCC',
42
- :xls_color_36=>'#FFFF99',
43
- :xls_color_37=>'#99CCFF',
44
- :xls_color_38=>'#FF99CC',
45
- :xls_color_39=>'#CC99FF',
46
- :xls_color_40=>'#FFCC99',
47
- :xls_color_41=>'#3366FF',
48
- :xls_color_42=>'#33CCCC',
49
- :xls_color_43=>'#99CC00',
50
- :xls_color_44=>'#FFCC00',
51
- :xls_color_45=>'#FF9900',
52
- :xls_color_46=>'#FF6600',
53
- :xls_color_47=>'#666699',
54
- :xls_color_48=>'#969696',
55
- :xls_color_49=>'#003366',
56
- :xls_color_50=>'#339966',
57
- :xls_color_51=>'#003300',
58
- :xls_color_52=>'#333300',
59
- :xls_color_53=>'#993300',
60
- :xls_color_54=>'#993366',
61
- :xls_color_55=>'#333399',
62
- :xls_color_56=>'#333333',
63
- :black=>'#000000',
64
- :white=>'#FFFFFF',
65
- :red=>'#FF0000',
66
- :green=>'#00FF00',
67
- :blue=>'#0000FF',
68
- :yellow=>'#FFFF00',
69
- :magenta=>'#FF00FF',
70
- :cyan=>'#00FFFF',
71
- :border=>'#FFFFFF',
72
- :text=>'#000000',
73
- :lime=>'#00f94c'
74
- }
75
-
6
+
76
7
  # Generates an Spreadsheet (from the spreadsheet gem) in order to build an XlS
77
8
  #
78
- # @params [Hash] A hash with options (unused so far)
9
+ # @param [Hash] options A hash with options (unused so far)
79
10
  # @return [Spreadsheet] A Spreadsheet object, ready for writing or more lower level operations
80
11
  def to_xls options={}
81
12
  book = init_spreadsheet_template
@@ -86,7 +17,7 @@ module Workbook
86
17
  xls_sheet.row(ri).height= r.format[:height] if r.format
87
18
  r.each_with_index do |c, ci|
88
19
  if c
89
- if r.header?
20
+ if r.first?
90
21
  xls_sheet.columns[ci] ||= Spreadsheet::Column.new(ci,nil)
91
22
  xls_sheet.columns[ci].width= c.format[:width]
92
23
  end
@@ -99,6 +30,10 @@ module Workbook
99
30
  book
100
31
  end
101
32
 
33
+ # Generates an Spreadsheet (from the spreadsheet gem) in order to build an XlS
34
+ #
35
+ # @param [Workbook::Format, Hash] f A Workbook::Format or hash with format-options (:font_weight, :rotation, :background_color, :number_format, :text_direction, :color, :font_family)
36
+ # @return [Spreadsheet::Format] A Spreadsheet format-object, ready for writing or more lower level operations
102
37
  def format_to_xls_format f
103
38
  xlsfmt = nil
104
39
  unless f.is_a? Workbook::Format
@@ -120,23 +55,30 @@ module Workbook
120
55
  return xlsfmt
121
56
  end
122
57
 
58
+ # Attempt to convert html-hex color value to xls color number
59
+ #
60
+ # @param [String] hex color
61
+ # @return [String] xls color
123
62
  def html_color_to_xls_color hex
124
- XLS_COLORS.each do |k,v|
63
+ Workbook::Readers::XlsShared::XLS_COLORS.each do |k,v|
125
64
  return k if (v == hex or (hex and hex != "" and k == hex.to_sym))
126
65
  end
127
66
  return nil
128
67
  end
129
68
 
69
+ # Converts standard (ruby/C++/unix/...) strftime formatting to MS's formatting
70
+ #
71
+ # @param [String, nil] numberformat (nil returns nil)
72
+ # @return [String, nil]
130
73
  def strftime_to_ms_format numberformat
131
74
  return nil if numberformat.nil?
132
- numberformat.gsub('%Y','yyyy').gsub('%A','dddd').gsub('%B','mmmm').gsub('%a','ddd').gsub('%b','mmm').gsub('%y','yy').gsub('%d','dd').gsub('%m','mm').gsub('%y','y').gsub('%y','%%y').gsub('%e','d')
75
+ return numberformat.gsub('%Y','yyyy').gsub('%A','dddd').gsub('%B','mmmm').gsub('%a','ddd').gsub('%b','mmm').gsub('%y','yy').gsub('%d','dd').gsub('%m','mm').gsub('%y','y').gsub('%y','%%y').gsub('%e','d')
133
76
  end
134
77
 
135
78
  # Write the current workbook to Microsoft Excel format (using the spreadsheet gem)
136
79
  #
137
- # @param [String] the filename
138
- # @param [Hash] options, see #to_xls
139
-
80
+ # @param [String] filename
81
+ # @param [Hash] options see #to_xls
140
82
  def write_to_xls filename="#{title}.xls", options={}
141
83
  if to_xls(options).write(filename)
142
84
  return filename
@@ -51,13 +51,13 @@ module Modules
51
51
  assert_equal("a,b,c,d\n1,2,3,4\n\n3,2,3,4\n5,2,3,4\n",align_result[:other].to_csv)
52
52
  assert_equal("a,b,c,d\n1,2,3,4\n2,2,3,4\n\n5,2,3,4\n",align_result[:self].to_csv)
53
53
 
54
- tself = Workbook::Book.new([['a','b','c','d'],[1,2,3,4],[1,3,3,4],[3,2,3,4],[5,2,3,4]]).sheet.table
55
- tother = Workbook::Book.new([['a','b','c','d'],[1,2,3,4],[2,2,3,4],[5,2,3,4]]).sheet.table
54
+ tself = Workbook::Book.new([['a','b','c','d'],[1,2,3,4],[1,3,3,4], [3,2,3,4],[5,2,3,4]]).sheet.table
55
+ tother = Workbook::Book.new([['a','b','c','d'],[1,2,3,4], [2,2,3,4], [5,2,3,4]]).sheet.table
56
56
  align_result = tself.align tother
57
57
  assert_equal("a,b,c,d\n1,2,3,4\n1,3,3,4\n\n3,2,3,4\n5,2,3,4\n",align_result[:self].to_csv)
58
58
  assert_equal("a,b,c,d\n1,2,3,4\n\n2,2,3,4\n\n5,2,3,4\n",align_result[:other].to_csv)
59
- tself = Workbook::Book.new([['a','b','c','d'],[1,2,3,4],[3,2,3,4],[5,2,3,4]]).sheet.table
60
- tother = Workbook::Book.new([['a','b','c','d'],[1,2,3,4],[1,2,3,4],[1,2,3,4],[2,2,3,4],[5,2,3,4]]).sheet.table
59
+ tself = Workbook::Book.new( [['a','b','c','d'],[1,2,3,4], [3,2,3,4],[5,2,3,4]]).sheet.table
60
+ tother = Workbook::Book.new([['a','b','c','d'],[1,2,3,4],[1,2,3,4],[1,2,3,4],[2,2,3,4], [5,2,3,4]]).sheet.table
61
61
  align_result = tself.align tother
62
62
  assert_equal("a,b,c,d\n1,2,3,4\n\n\n\n3,2,3,4\n5,2,3,4\n",align_result[:self].to_csv)
63
63
  assert_equal("a,b,c,d\n1,2,3,4\n1,2,3,4\n1,2,3,4\n2,2,3,4\n\n5,2,3,4\n",align_result[:other].to_csv)
@@ -74,6 +74,19 @@ module Modules
74
74
 
75
75
  end
76
76
 
77
+ def test_with_nil_header
78
+ a = Workbook::Book.new([['a','b',nil],[1,2,3]])
79
+ b = Workbook::Book.new([['a','b','c'],[1,2,3]])
80
+ c = a.sheet.table.diff b.sheet.table
81
+ assert_equal("a,b,(was: c)\n1,2,(was: 3)\n",c.to_csv)
82
+ end
83
+
84
+ # def test_diff_file
85
+ # a = Workbook::Book.open('test/artifacts/private_a_0.xls')
86
+ # b = Workbook::Book.open('test/artifacts/private_a_0.xls')
87
+ # y a.sheet.table.diff b.sheet.table
88
+ # end
89
+
77
90
  # def test_sort_by
78
91
  # b = Workbook::Book.new [['a','b','c','d'],[1,2,3,4],[4,2,3,3],[3,2,3,2]]
79
92
  # y b.sheet.table.sort_by{|r| r[:d]}
@@ -98,8 +111,8 @@ module Modules
98
111
  tother = bb.sheet.table
99
112
  diff_result = tself.diff tother
100
113
  assert_equal('a',diff_result.sheet.table.header[0].value)
101
- assert_equal("a,b,c,d\n1,2,3,4\n3,2,3,4\n3,3 (was: 2),3,4\n4,2,3,4\n(was: 5),(was: 2),(was: 3),(was: 4)\n",diff_result.sheet.table.to_csv)
102
- diff_result.write_to_xls
114
+ assert_equal("a,b,c,d\n1,2,3,4\n3,2,3,4\n3,3 (was: 2),3,4\n4,2,3,4\n(was: 5),(was: 2),(was: 3),(was: 4)\n",diff_result.to_csv)
115
+ diff_result.sheet.book.write_to_xls
103
116
  end
104
117
  end
105
118
  end
data/test/test_row.rb CHANGED
@@ -46,9 +46,26 @@ class TestRow < Test::Unit::TestCase
46
46
  r2.table = t
47
47
  assert_equal(false, r2.header?)
48
48
  assert_equal(true, t.first.header?)
49
+ t.header = r2
50
+ assert_equal(true, r2.header?)
51
+ assert_equal(false, t.first.header?)
52
+
49
53
  assert_equal(r1, t.first)
50
54
  end
51
55
 
56
+ def test_first?
57
+ t = Workbook::Table.new
58
+ r1 = Workbook::Row.new
59
+ r1.table = t
60
+ assert_equal(true, r1.first?)
61
+ r2 = Workbook::Row.new
62
+ r2.table = t
63
+ assert_equal(false, r2.first?)
64
+ assert_equal(true, t.first.first?)
65
+
66
+ assert_equal(r1, t.first)
67
+ end
68
+
52
69
  def test_to_symbols
53
70
  r1 = Workbook::Row.new ["test", "asdf-asd", "asdf - asdf", "asdf2"]
54
71
  assert_equal([:test, :asdfasd, :asdf_asdf, :asdf2], r1.to_symbols)
@@ -111,4 +128,41 @@ class TestRow < Test::Unit::TestCase
111
128
  r1 = Workbook::Row.new ["test", "asdf-asd"]
112
129
  assert_equal("test,asdf-asd\n",r1.to_csv)
113
130
  end
131
+
132
+ def test_clone
133
+ b = Workbook::Book.new
134
+ table = b.sheet.table
135
+ table << Workbook::Row.new(["a","b"])
136
+ row = Workbook::Row.new(["1","2"])
137
+ table << row
138
+ table << row
139
+ row[1] = Workbook::Cell.new(3)
140
+ table << table[1].clone
141
+ table.last[1].value = 5
142
+ assert_equal("a,b\n1,3\n1,3\n1,5\n", table.to_csv)
143
+ end
144
+
145
+ def test_clone_has_no_table
146
+ # actually not desired, but for now enforced.
147
+ b = Workbook::Book.new
148
+ table = b.sheet.table
149
+ table << Workbook::Row.new(["a","b"])
150
+ table << Workbook::Row.new([1,2])
151
+ row = table[1].clone
152
+ assert_equal(nil,row[:a])
153
+ assert_equal(nil,row[:b])
154
+ assert_equal(1,row[0].value)
155
+ assert_equal(2,row[1].value)
156
+ end
157
+
158
+ def test_row_hash_index_assignment
159
+ b = Workbook::Book.new
160
+ table = b.sheet.table
161
+ table << Workbook::Row.new(["a","b"])
162
+ row = Workbook::Row.new([],table)
163
+ row[1]= 12
164
+ assert_equal(12, table.last.last.value)
165
+ row[:b]= 15
166
+ assert_equal(15, table.last.last.value)
167
+ end
114
168
  end
data/test/test_sheet.rb CHANGED
@@ -22,5 +22,13 @@ class TestWorkbook < Test::Unit::TestCase
22
22
  assert_equal(w.table,t)
23
23
 
24
24
  end
25
+
26
+ def test_book
27
+ s = Workbook::Sheet.new
28
+ b = s.book
29
+ assert_equal(s.book, b)
30
+ assert_equal(s, b.sheet)
31
+ assert_equal(s.book.sheet, b.sheet.table.sheet)
32
+ end
25
33
 
26
34
  end
data/test/test_table.rb CHANGED
@@ -34,10 +34,29 @@ class TestTable< Test::Unit::TestCase
34
34
  assert_equal(r, t.last)
35
35
 
36
36
  r << 2
37
-
37
+
38
38
  assert_equal(t.last.empty?, false)
39
-
40
-
39
+ end
40
+
41
+ def test_append_row
42
+ t = Workbook::Table.new
43
+ row = t.new_row(["a","b"])
44
+ assert_equal(row, t.header)
45
+ row = Workbook::Row.new([1,2])
46
+ assert_equal(nil, row.table)
47
+ t.push(row)
48
+ assert_equal(t, row.table)
49
+ row = Workbook::Row.new([3,4])
50
+ assert_equal(nil, row.table)
51
+ t << row
52
+ assert_equal(t, row.table)
53
+ end
54
+
55
+ def test_sheet
56
+ t = Workbook::Table.new
57
+ s = t.sheet
58
+ assert_equal(t, s.table)
59
+ assert_equal(t.sheet, s)
41
60
  end
42
61
 
43
62
  end
@@ -42,5 +42,8 @@ module Writers
42
42
  b.init_spreadsheet_template
43
43
  assert_equal(Spreadsheet::Worksheet,b.xls_sheet(100).class)
44
44
  end
45
+ def test_strftime_to_ms_format_nil
46
+ assert_equal(nil, Workbook::Book.new.strftime_to_ms_format(nil))
47
+ end
45
48
  end
46
49
  end
data/workbook.gemspec CHANGED
@@ -5,7 +5,7 @@ require "workbook"
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'workbook'
7
7
  s.rubyforge_project = 'workbook'
8
- s.version = '0.2.0'
8
+ s.version = '0.2.1'
9
9
  s.date = '2013-01-10'
10
10
  s.summary = "Workbook is a datastructure to contain books of tables (an anlogy used in e.g. Excel)"
11
11
  s.description = "Workbook contains workbooks, as in a table, contains rows, contains cells, reads/writes excels and csv's and tab separated, and offers basic diffing and sorting capabilities."
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 0
9
- version: 0.2.0
8
+ - 1
9
+ version: 0.2.1
10
10
  platform: ruby
11
11
  authors:
12
12
  - Maarten Brouwers
@@ -79,9 +79,52 @@ extra_rdoc_files: []
79
79
 
80
80
  files:
81
81
  - .gitignore
82
+ - .yardoc/checksums
83
+ - .yardoc/object_types
84
+ - .yardoc/objects/root.dat
85
+ - .yardoc/proxy_types
82
86
  - Gemfile
83
87
  - Gemfile.lock
88
+ - README.md
84
89
  - Rakefile
90
+ - doc/RubyXL.html
91
+ - doc/RubyXL/Cell.html
92
+ - doc/RubyXL/Workbook.html
93
+ - doc/Workbook.html
94
+ - doc/Workbook/Book.html
95
+ - doc/Workbook/Cell.html
96
+ - doc/Workbook/Format.html
97
+ - doc/Workbook/Modules.html
98
+ - doc/Workbook/Modules/RawObjectsStorage.html
99
+ - doc/Workbook/Modules/TableDiffSort.html
100
+ - doc/Workbook/Modules/TypeParser.html
101
+ - doc/Workbook/Readers.html
102
+ - doc/Workbook/Readers/CsvReader.html
103
+ - doc/Workbook/Readers/TxtReader.html
104
+ - doc/Workbook/Readers/XlsReader.html
105
+ - doc/Workbook/Readers/XlsShared.html
106
+ - doc/Workbook/Readers/XlsxReader.html
107
+ - doc/Workbook/Row.html
108
+ - doc/Workbook/Sheet.html
109
+ - doc/Workbook/Table.html
110
+ - doc/Workbook/Template.html
111
+ - doc/Workbook/Writers.html
112
+ - doc/Workbook/Writers/CsvTableWriter.html
113
+ - doc/Workbook/Writers/XlsWriter.html
114
+ - doc/_index.html
115
+ - doc/class_list.html
116
+ - doc/css/common.css
117
+ - doc/css/full_list.css
118
+ - doc/css/style.css
119
+ - doc/file.README.html
120
+ - doc/file_list.html
121
+ - doc/frames.html
122
+ - doc/index.html
123
+ - doc/js/app.js
124
+ - doc/js/full_list.js
125
+ - doc/js/jquery.js
126
+ - doc/method_list.html
127
+ - doc/top-level-namespace.html
85
128
  - lib/workbook.rb
86
129
  - lib/workbook/book.rb
87
130
  - lib/workbook/cell.rb
@@ -92,6 +135,7 @@ files:
92
135
  - lib/workbook/readers/csv_reader.rb
93
136
  - lib/workbook/readers/txt_reader.rb
94
137
  - lib/workbook/readers/xls_reader.rb
138
+ - lib/workbook/readers/xls_shared.rb
95
139
  - lib/workbook/readers/xlsx_reader.rb
96
140
  - lib/workbook/row.rb
97
141
  - lib/workbook/sheet.rb
@@ -99,7 +143,6 @@ files:
99
143
  - lib/workbook/template.rb
100
144
  - lib/workbook/writers/csv_table_writer.rb
101
145
  - lib/workbook/writers/xls_writer.rb
102
- - readme.markdown
103
146
  - test/artifacts/book_with_tabs_and_colours.xls
104
147
  - test/artifacts/book_with_tabs_and_colours.xlsx
105
148
  - test/artifacts/complex_types.xls