workbook 0.2.0 → 0.2.1
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/.yardoc/checksums +18 -0
- data/.yardoc/object_types +3 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/Gemfile.lock +1 -1
- data/{readme.markdown → README.md} +36 -10
- data/doc/RubyXL.html +128 -0
- data/doc/RubyXL/Cell.html +202 -0
- data/doc/RubyXL/Workbook.html +447 -0
- data/doc/Workbook.html +130 -0
- data/doc/Workbook/Book.html +1484 -0
- data/doc/Workbook/Cell.html +1402 -0
- data/doc/Workbook/Format.html +654 -0
- data/doc/Workbook/Modules.html +117 -0
- data/doc/Workbook/Modules/RawObjectsStorage.html +508 -0
- data/doc/Workbook/Modules/TableDiffSort.html +620 -0
- data/doc/Workbook/Modules/TypeParser.html +1012 -0
- data/doc/Workbook/Readers.html +117 -0
- data/doc/Workbook/Readers/CsvReader.html +262 -0
- data/doc/Workbook/Readers/TxtReader.html +238 -0
- data/doc/Workbook/Readers/XlsReader.html +362 -0
- data/doc/Workbook/Readers/XlsShared.html +189 -0
- data/doc/Workbook/Readers/XlsxReader.html +295 -0
- data/doc/Workbook/Row.html +1939 -0
- data/doc/Workbook/Sheet.html +528 -0
- data/doc/Workbook/Table.html +883 -0
- data/doc/Workbook/Template.html +639 -0
- data/doc/Workbook/Writers.html +117 -0
- data/doc/Workbook/Writers/CsvTableWriter.html +175 -0
- data/doc/Workbook/Writers/XlsWriter.html +865 -0
- data/doc/_index.html +336 -0
- data/doc/class_list.html +53 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +328 -0
- data/doc/file.README.html +236 -0
- data/doc/file_list.html +55 -0
- data/doc/frames.html +28 -0
- data/doc/index.html +236 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +972 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/workbook/book.rb +38 -29
- data/lib/workbook/cell.rb +25 -0
- data/lib/workbook/format.rb +9 -2
- data/lib/workbook/modules/raw_objects_storage.rb +5 -0
- data/lib/workbook/modules/table_diff_sort.rb +8 -6
- data/lib/workbook/modules/type_parser.rb +16 -3
- data/lib/workbook/readers/xls_reader.rb +1 -70
- data/lib/workbook/readers/xls_shared.rb +75 -0
- data/lib/workbook/row.rb +89 -17
- data/lib/workbook/sheet.rb +26 -0
- data/lib/workbook/table.rb +20 -1
- data/lib/workbook/template.rb +12 -11
- data/lib/workbook/writers/xls_writer.rb +19 -77
- data/test/test_modules_table_diff_sort.rb +19 -6
- data/test/test_row.rb +54 -0
- data/test/test_sheet.rb +8 -0
- data/test/test_table.rb +22 -3
- data/test/test_writers_xls_writer.rb +3 -0
- data/workbook.gemspec +1 -1
- metadata +46 -3
data/lib/workbook/template.rb
CHANGED
@@ -1,26 +1,23 @@
|
|
1
1
|
require 'workbook/modules/raw_objects_storage'
|
2
2
|
|
3
3
|
module Workbook
|
4
|
-
|
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
|
-
|
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
|
-
# @
|
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.
|
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]
|
138
|
-
# @param [Hash] options
|
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 =
|
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.
|
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
|
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.
|
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
|
-
-
|
9
|
-
version: 0.2.
|
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
|