spreadbase 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,23 +1,3 @@
1
- # encoding: UTF-8
2
-
3
- =begin
4
- Copyright 2012 Saverio Miroddi saverio.pub2 <a-hat!> gmail.com
5
-
6
- This file is part of SpreadBase.
7
-
8
- SpreadBase is free software: you can redistribute it and/or modify it under the
9
- terms of the GNU Lesser General Public License as published by the Free Software
10
- Foundation, either version 3 of the License, or (at your option) any later
11
- version.
12
-
13
- SpreadBase is distributed in the hope that it will be useful, but WITHOUT ANY
14
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15
- PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16
-
17
- You should have received a copy of the GNU Lesser General Public License along
18
- with SpreadBase. If not, see <http://www.gnu.org/licenses/>.
19
- =end
20
-
21
1
  module SpreadBase # :nodoc:
22
2
 
23
3
  # Represents the abstraction of a document, merging both the file and the
@@ -42,16 +22,15 @@ module SpreadBase # :nodoc:
42
22
  #
43
23
  # _options_:
44
24
  #
45
- # +force_18_strings_encoding+:: ('UTF-8') on ruby 1.8, when converting to UTF-8, assume the strings are using the specified format.
46
25
  # +floats_as_bigdecimal+:: (false) decode floats as BigDecimal instead of Float
47
26
  #
48
- def initialize( document_path=nil, options={} )
27
+ def initialize(document_path=nil, options={})
49
28
  @document_path = document_path
50
29
  @options = options.clone
51
30
 
52
- if @document_path && File.exists?( document_path )
53
- document_archive = IO.read( document_path )
54
- decoded_document = Codecs::OpenDocument12.new.decode_archive( document_archive, options )
31
+ if @document_path && File.exist?(document_path)
32
+ document_archive = IO.read(document_path)
33
+ decoded_document = Codecs::OpenDocument12.new.decode_archive(document_archive, options)
55
34
 
56
35
  @column_width_styles = decoded_document.column_width_styles
57
36
  @tables = decoded_document.tables
@@ -69,28 +48,28 @@ module SpreadBase # :nodoc:
69
48
  #
70
49
  # +prettify+:: Prettifies the content.xml file before saving.
71
50
  #
72
- def save( options={} )
73
- options = @options.merge( options )
51
+ def save(options={})
52
+ options = @options.merge(options)
74
53
 
75
54
  raise "At least one table must be present" if @tables.empty?
76
55
  raise "Document path not specified" if @document_path.nil?
77
56
 
78
- document_archive = Codecs::OpenDocument12.new.encode_to_archive( self, options )
57
+ document_archive = Codecs::OpenDocument12.new.encode_to_archive(self, options)
79
58
 
80
- File.open( @document_path, 'wb' ) { | file | file << document_archive }
59
+ File.open(@document_path, 'wb') { | file | file << document_archive }
81
60
  end
82
61
 
83
62
  # _options_:
84
63
  #
85
64
  # +with_headers+:: Print the tables with headers.
86
65
  #
87
- def to_s( options={} )
88
- options.merge!( :row_prefix => ' ' )
66
+ def to_s(options={})
67
+ options.merge!(row_prefix: ' ')
89
68
 
90
- tables.inject( '' ) do | output, table |
69
+ tables.inject('') do | output, table |
91
70
  output << "#{ table.name }:" << "\n" << "\n"
92
71
 
93
- output << table.to_s( options ) << "\n"
72
+ output << table.to_s(options) << "\n"
94
73
  end
95
74
  end
96
75
 
@@ -1,23 +1,3 @@
1
- # encoding: UTF-8
2
-
3
- =begin
4
- Copyright 2012 Saverio Miroddi saverio.pub2 <a-hat!> gmail.com
5
-
6
- This file is part of SpreadBase.
7
-
8
- SpreadBase is free software: you can redistribute it and/or modify it under the
9
- terms of the GNU Lesser General Public License as published by the Free Software
10
- Foundation, either version 3 of the License, or (at your option) any later
11
- version.
12
-
13
- SpreadBase is distributed in the hope that it will be useful, but WITHOUT ANY
14
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15
- PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16
-
17
- You should have received a copy of the GNU Lesser General Public License along
18
- with SpreadBase. If not, see <http://www.gnu.org/licenses/>.
19
- =end
20
-
21
1
  module SpreadBase # :nodoc:
22
2
 
23
3
  # Currently generic helper class
@@ -28,10 +8,10 @@ module SpreadBase # :nodoc:
28
8
  #
29
9
  # The instance is duplicated Object#clone, when necessary - note that this method is not meant to do a deep copy.
30
10
  #
31
- def make_array_from_repetitions( instance, repetitions )
32
- ( 1 .. repetitions ).inject( [] ) do | cumulative_result, i |
11
+ def make_array_from_repetitions(instance, repetitions)
12
+ (1..repetitions).inject([]) do | cumulative_result, i |
33
13
  case instance
34
- when Fixnum, Float, BigDecimal, Date, Time, TrueClass, FalseClass, NilClass #, DateTime is a Date
14
+ when Integer, Float, BigDecimal, Date, Time, TrueClass, FalseClass, NilClass #, DateTime is a Date
35
15
  cumulative_result << instance
36
16
  when String, Array
37
17
  cumulative_result << instance.clone
@@ -54,54 +34,49 @@ module SpreadBase # :nodoc:
54
34
  # +row_prefix+:: Prefix this string to each row.
55
35
  # +with_header+:: First row will be separated from the remaining ones.
56
36
  #
57
- # +formatting_block+:: If passed, values will be formatted by the block.
58
- # If no block is passed, or it returns nil or :standard, the standard formatting is used.
59
- #
60
- def pretty_print_rows( rows, options={}, &formatting_block )
61
- row_prefix = options[ :row_prefix ] || ''
62
- with_headers = options[ :with_headers ]
37
+ def pretty_print_rows(rows, options={})
38
+ row_prefix = options[:row_prefix] || ''
39
+ with_headers = options[:with_headers]
63
40
 
64
41
  output = ""
65
42
 
66
- formatting_block = lambda { | value | value.to_s } if ! block_given?
67
-
68
43
  if rows.size > 0
69
- max_column_sizes = [ 0 ] * rows.map( &:size ).max
44
+ max_column_sizes = [0] * rows.map(&:size).max
70
45
 
71
46
  # Compute maximum widths
72
47
 
73
48
  rows.each do | values |
74
49
  values.each_with_index do | value, i |
75
- formatted_value = pretty_print_value( value, &formatting_block )
50
+ formatted_value = pretty_print_value(value)
76
51
  formatted_value_width = formatted_value.chars.to_a.size
77
52
 
78
- max_column_sizes[ i ] = formatted_value_width if formatted_value_width > max_column_sizes[ i ]
53
+ max_column_sizes[i] = formatted_value_width if formatted_value_width > max_column_sizes[i]
79
54
  end
80
55
  end
81
56
 
82
57
  # Print!
83
58
 
84
- output << row_prefix << '+-' + max_column_sizes.map { | size | '-' * size }.join( '-+-' ) + '-+' << "\n"
59
+ output << row_prefix << '+-' + max_column_sizes.map { | size | '-' * size }.join('-+-') + '-+' << "\n"
85
60
 
86
- print_pattern = '| ' + max_column_sizes.map { | size | "%-#{ size }s" }.join( ' | ' ) + ' |'
61
+ print_pattern = '| ' + max_column_sizes.map { | size | "%-#{ size }s" }.join(' | ') + ' |'
87
62
 
88
63
  rows.each_with_index do | row, row_index |
89
64
  # Ensure that we always have a number of values equal to the max width
90
65
  #
91
- formatted_row_values = ( 0 ... max_column_sizes.size ).map do | column_index |
92
- value = row[ column_index ]
66
+ formatted_row_values = (0...max_column_sizes.size).map do | column_index |
67
+ value = row[column_index]
93
68
 
94
- pretty_print_value( value, &formatting_block )
69
+ pretty_print_value(value)
95
70
  end
96
71
 
97
72
  output << row_prefix << print_pattern % formatted_row_values << "\n"
98
73
 
99
74
  if with_headers && row_index == 0
100
- output << row_prefix << '+-' + max_column_sizes.map { | size | '-' * size }.join( '-+-' ) + '-+' << "\n"
75
+ output << row_prefix << '+-' + max_column_sizes.map { | size | '-' * size }.join('-+-') + '-+' << "\n"
101
76
  end
102
77
  end
103
78
 
104
- output << row_prefix << '+-' + max_column_sizes.map { | size | '-' * size }.join( '-+-' ) + '-+' << "\n"
79
+ output << row_prefix << '+-' + max_column_sizes.map { | size | '-' * size }.join('-+-') + '-+' << "\n"
105
80
  end
106
81
 
107
82
  output
@@ -109,27 +84,18 @@ module SpreadBase # :nodoc:
109
84
 
110
85
  private
111
86
 
112
- def pretty_print_value( value, &formatting_block )
113
- custom_result = block_given? && yield( value )
114
-
115
- if custom_result && custom_result != :standard
116
- custom_result
87
+ def pretty_print_value(value)
88
+ case value
89
+ when BigDecimal
90
+ value.to_s('F')
91
+ when Time, DateTime
92
+ value.strftime('%Y-%m-%d %H:%M:%S %z')
93
+ when String, Date, Numeric, TrueClass, FalseClass
94
+ value.to_s
95
+ when nil
96
+ "NIL"
117
97
  else
118
- case value
119
- when BigDecimal
120
- value.to_s( 'F' )
121
- when Time, DateTime
122
- # Time#to_s renders differently between 1.8.7 and 1.9.3; 1.8.7's rendering is bizarrely
123
- # inconsistent with the Date and DateTime ones.
124
- #
125
- value.strftime( '%Y-%m-%d %H:%M:%S %z' )
126
- when String, Date, Numeric, TrueClass, FalseClass
127
- value.to_s
128
- when nil
129
- "NIL"
130
- else
131
- value.inspect
132
- end
98
+ value.inspect
133
99
  end
134
100
  end
135
101
 
@@ -1,23 +1,3 @@
1
- # encoding: UTF-8
2
-
3
- =begin
4
- Copyright 2012 Saverio Miroddi saverio.pub2 <a-hat!> gmail.com
5
-
6
- This file is part of SpreadBase.
7
-
8
- SpreadBase is free software: you can redistribute it and/or modify it under the
9
- terms of the GNU Lesser General Public License as published by the Free Software
10
- Foundation, either version 3 of the License, or (at your option) any later
11
- version.
12
-
13
- SpreadBase is distributed in the hope that it will be useful, but WITHOUT ANY
14
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15
- PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16
-
17
- You should have received a copy of the GNU Lesser General Public License along
18
- with SpreadBase. If not, see <http://www.gnu.org/licenses/>.
19
- =end
20
-
21
1
  module SpreadBase # :nodoc:
22
2
 
23
3
  # Represents the abstraction of a table and its contents.
@@ -32,7 +12,7 @@ module SpreadBase # :nodoc:
32
12
 
33
13
  include SpreadBase::Helpers
34
14
 
35
- attr_accessor :name, :data
15
+ attr_accessor :name
36
16
 
37
17
  # Array of style names; nil when not associated to any column width.
38
18
  #
@@ -41,16 +21,24 @@ module SpreadBase # :nodoc:
41
21
  # _params_:
42
22
  #
43
23
  # +name+:: (required) Name of the table
44
- # +data+:: (Array.new) 2d matrix of the data. if not empty, the rows need to be all of the same size
24
+ # +raw_data+:: (Array.new) 2d matrix of the data. if not empty, the rows need to be all of the same size
45
25
  #
46
- def initialize( name, data=[] )
26
+ def initialize(name, raw_data=[])
47
27
  raise "Table name required" if name.nil? || name == ''
48
28
 
49
29
  @name = name
50
- @data = data
30
+ self.data = raw_data
51
31
  @column_width_styles = []
52
32
  end
53
33
 
34
+ def data=(the_data)
35
+ @data = the_data.map { | the_row | array_to_cells(the_row) }
36
+ end
37
+
38
+ def data(options={})
39
+ @data.map { | the_row | the_row.map { | cell | cell_to_value(cell, options) } }
40
+ end
41
+
54
42
  # Access a cell value.
55
43
  #
56
44
  # _params_:
@@ -60,13 +48,14 @@ module SpreadBase # :nodoc:
60
48
  #
61
49
  # _returns_ the value, which is automatically converted to the Ruby data type.
62
50
  #
63
- def []( column_identifier, row_index )
64
- row = row( row_index )
65
- column_index = decode_column_identifier( column_identifier )
51
+ def [](column_identifier, row_index, options={})
52
+ the_row = row(row_index, options)
66
53
 
67
- check_column_index( row, column_index )
54
+ column_index = decode_column_identifier(column_identifier)
68
55
 
69
- row[ column_index ]
56
+ check_column_index(the_row, column_index)
57
+
58
+ the_row[column_index]
70
59
  end
71
60
 
72
61
  # Writes a value in a cell.
@@ -77,13 +66,15 @@ module SpreadBase # :nodoc:
77
66
  # +row_index+:: int (0-based). see notes about the rows indexing.
78
67
  # +value+:: value
79
68
  #
80
- def []=( column_identifier, row_index, value )
81
- row = row( row_index )
82
- column_index = decode_column_identifier( column_identifier )
69
+ def []=(column_identifier, row_index, value)
70
+ check_row_index(row_index)
71
+
72
+ the_row = @data[row_index]
73
+ column_index = decode_column_identifier(column_identifier)
83
74
 
84
- check_column_index( row, column_index )
75
+ check_column_index(the_row, column_index)
85
76
 
86
- row[ column_index ] = value
77
+ the_row[column_index] = value_to_cell(value)
87
78
  end
88
79
 
89
80
  # Returns an array containing the values of a single row.
@@ -92,10 +83,14 @@ module SpreadBase # :nodoc:
92
83
  #
93
84
  # +row_index+:: int or range (0-based). see notes about the rows indexing.
94
85
  #
95
- def row( row_index )
96
- check_row_index( row_index )
86
+ def row(row_index, options={})
87
+ check_row_index(row_index)
97
88
 
98
- @data[ row_index ]
89
+ if row_index.is_a?(Range)
90
+ @data[row_index].map { | row | cells_to_array(row, options) }
91
+ else
92
+ cells_to_array(@data[row_index], options)
93
+ end
99
94
  end
100
95
 
101
96
  # Deletes a row.
@@ -108,10 +103,16 @@ module SpreadBase # :nodoc:
108
103
  #
109
104
  # _returns_ the deleted row[s]
110
105
  #
111
- def delete_row( row_index )
112
- check_row_index( row_index )
106
+ def delete_row(row_index)
107
+ check_row_index(row_index)
108
+
109
+ deleted_cells = @data.slice!(row_index)
113
110
 
114
- @data.slice!( row_index )
111
+ if row_index.is_a?(Range)
112
+ deleted_cells.map { | row | cells_to_array(row) }
113
+ else
114
+ cells_to_array(deleted_cells)
115
+ end
115
116
  end
116
117
 
117
118
  # Inserts a row.
@@ -123,16 +124,18 @@ module SpreadBase # :nodoc:
123
124
  # +row_index+:: int (0-based). must be between 0 and (including) the table rows size.
124
125
  # +row+:: array of values. if the table is not empty, must have the same size of the table width.
125
126
  #
126
- def insert_row( row_index, row )
127
- check_row_index( row_index, :allow_append => true )
127
+ def insert_row(row_index, row)
128
+ check_row_index(row_index, allow_append: true)
128
129
 
129
- @data.insert( row_index, row )
130
+ cells = array_to_cells(row)
131
+
132
+ @data.insert(row_index, cells)
130
133
  end
131
134
 
132
135
  # This operation won't modify the column width styles in any case.
133
136
  #
134
- def append_row( row )
135
- insert_row( @data.size, row )
137
+ def append_row(row)
138
+ insert_row(@data.size, row)
136
139
  end
137
140
 
138
141
  # Returns an array containing the values of a single column.
@@ -146,21 +149,25 @@ module SpreadBase # :nodoc:
146
149
  # for multiple access, use a range either of int or excel-format identifiers - pay attention, because ( 'A'..'c' ) is not semantically correct.
147
150
  # interestingly, ruby letter ranges convention is the same as the excel columns one.
148
151
  #
149
- def column( column_identifier )
150
- if column_identifier.is_a?( Range )
151
- min_index = decode_column_identifier( column_identifier.min )
152
- max_index = decode_column_identifier( column_identifier.max )
152
+ def column(column_identifier, options={})
153
+ if column_identifier.is_a?(Range)
154
+ min_index = decode_column_identifier(column_identifier.min)
155
+ max_index = decode_column_identifier(column_identifier.max)
153
156
 
154
- ( min_index .. max_index ).map do | column_index |
155
- @data.map do | row |
156
- row[ column_index ]
157
+ (min_index..max_index).map do | column_index |
158
+ @data.map do | the_row |
159
+ cell = the_row[column_index]
160
+
161
+ cell_to_value(cell, options)
157
162
  end
158
163
  end
159
164
  else
160
- column_index = decode_column_identifier( column_identifier )
165
+ column_index = decode_column_identifier(column_identifier)
161
166
 
162
- @data.map do | row |
163
- row[ column_index ]
167
+ @data.map do | the_row |
168
+ cell = the_row[column_index]
169
+
170
+ cell_to_value(cell, options)
164
171
  end
165
172
  end
166
173
  end
@@ -175,25 +182,29 @@ module SpreadBase # :nodoc:
175
182
  #
176
183
  # _returns_ the deleted column
177
184
  #
178
- def delete_column( column_identifier )
179
- if column_identifier.is_a?( Range )
180
- min_index = decode_column_identifier( column_identifier.min )
181
- max_index = decode_column_identifier( column_identifier.max )
185
+ def delete_column(column_identifier)
186
+ if column_identifier.is_a?(Range)
187
+ min_index = decode_column_identifier(column_identifier.min)
188
+ max_index = decode_column_identifier(column_identifier.max)
182
189
 
183
- reverse_result = max_index.downto( min_index ).map do | column_index |
190
+ reverse_result = max_index.downto(min_index).map do | column_index |
184
191
  @data.map do | row |
185
- row.slice!( column_index )
192
+ cell = row.slice!(column_index)
193
+
194
+ cell_to_value(cell)
186
195
  end
187
196
  end
188
197
 
189
198
  reverse_result.reverse
190
199
  else
191
- column_index = decode_column_identifier( column_identifier )
200
+ column_index = decode_column_identifier(column_identifier)
192
201
 
193
- @column_width_styles.slice!( column_index )
202
+ @column_width_styles.slice!(column_index)
194
203
 
195
204
  @data.map do | row |
196
- row.slice!( column_index )
205
+ cell = row.slice!(column_index)
206
+
207
+ cell_to_value(cell)
197
208
  end
198
209
  end
199
210
  end
@@ -208,37 +219,63 @@ module SpreadBase # :nodoc:
208
219
  # when int, follow the same idea of the rows indexing (ruby semantics).
209
220
  # +column+:: array of values. if the table is not empty, it must have the same size of the table height.
210
221
  #
211
- def insert_column( column_identifier, column )
222
+ def insert_column(column_identifier, column)
212
223
  raise "Inserting column size (#{ column.size }) different than existing columns size (#{ @data.size })" if @data.size > 0 && column.size != @data.size
213
224
 
214
- column_index = decode_column_identifier( column_identifier )
225
+ column_index = decode_column_identifier(column_identifier)
215
226
 
216
- @column_width_styles.insert( column_index, nil )
227
+ @column_width_styles.insert(column_index, nil)
217
228
 
218
229
  if @data.size > 0
219
- @data.zip( column ).each do | row, value |
220
- row.insert( column_index, value )
230
+ @data.zip(column).each do | row, value |
231
+ cell = value_to_cell(value)
232
+
233
+ row.insert(column_index, cell)
221
234
  end
222
235
  else
223
- @data = column.map { | value | [ value ] }
236
+ @data = column.map do | value |
237
+ [value_to_cell(value)]
238
+ end
224
239
  end
225
240
 
226
241
  end
227
242
 
228
- def append_column( column )
243
+ def append_column(column)
229
244
  column_index = @data.size > 0 ? @data.first.size : 0
230
245
 
231
- insert_column( column_index, column )
246
+ insert_column(column_index, column)
232
247
  end
233
248
 
234
249
  # _returns_ a matrix representation of the tables, with the values being separated by commas.
235
250
  #
236
- def to_s( options={} )
237
- pretty_print_rows( @data, options )
251
+ def to_s(options={})
252
+ pretty_print_rows(data, options)
238
253
  end
239
254
 
240
255
  private
241
256
 
257
+ def array_to_cells(the_row)
258
+ the_row.map { | value | value_to_cell(value) }
259
+ end
260
+
261
+ def value_to_cell(value)
262
+ value.is_a?(Cell) ? value : Cell.new(value)
263
+ end
264
+
265
+ def cells_to_array(cells, options={})
266
+ cells.map { | cell | cell_to_value(cell, options) }
267
+ end
268
+
269
+ def cell_to_value(cell, options={})
270
+ as_cell = options[:as_cell]
271
+
272
+ if as_cell
273
+ cell
274
+ else
275
+ cell.value if cell
276
+ end
277
+ end
278
+
242
279
  # Check that row index points to an existing record, or, in case of :allow_append,
243
280
  # point to one unit above the last row.
244
281
  #
@@ -246,17 +283,17 @@ module SpreadBase # :nodoc:
246
283
  #
247
284
  # +allow_append+:: Allow pointing to one unit above the last row.
248
285
  #
249
- def check_row_index( row_index, options={} )
250
- allow_append = options [ :allow_append ]
286
+ def check_row_index(row_index, options={})
287
+ allow_append = options [:allow_append]
251
288
 
252
289
  positive_limit = allow_append ? @data.size : @data.size - 1
253
290
 
254
- row_index = row_index.max if row_index.is_a?( Range )
291
+ row_index = row_index.max if row_index.is_a?(Range)
255
292
 
256
293
  raise "Invalid row index (#{ row_index }) - allowed 0 to #{ positive_limit }" if row_index < 0 || row_index > positive_limit
257
294
  end
258
295
 
259
- def check_column_index( row, column_index )
296
+ def check_column_index(row, column_index)
260
297
  raise "Invalid column index (#{ column_index }) for the given row - allowed 0 to #{ row.size - 1 }" if column_index >= row.size
261
298
  end
262
299
 
@@ -265,12 +302,9 @@ module SpreadBase # :nodoc:
265
302
  # Raises an error for invalid identifiers/indexes.
266
303
  #
267
304
  # _returns_ a 0-based decimal number.
268
- #--
269
- # Motherf#### base-26 bijective numeration - I would have gladly saved my f* time. At least
270
- # there were a few cute ladies at the Charleston lesson.
271
305
  #
272
- def decode_column_identifier( column_identifier )
273
- if column_identifier.is_a?( Fixnum )
306
+ def decode_column_identifier(column_identifier)
307
+ if column_identifier.is_a?(Integer)
274
308
  raise "Negative column indexes not allowed: #{ column_identifier }" if column_identifier < 0
275
309
 
276
310
  column_identifier
@@ -280,9 +314,9 @@ module SpreadBase # :nodoc:
280
314
 
281
315
  raise "Invalid letter for in column identifier (allowed 'a/A' to 'z/Z')" if letters.any? { | letter | letter < 'A' || letter > 'Z' }
282
316
 
283
- base_10_value = letters.inject( 0 ) do | sum, letter |
284
- letter_ord = letter.unpack( 'C' ).first
285
- sum * 26 + ( letter_ord - upcase_a_ord + 1 )
317
+ base_10_value = letters.inject(0) do | sum, letter |
318
+ letter_ord = letter.unpack('C').first
319
+ sum * 26 + (letter_ord - upcase_a_ord + 1)
286
320
  end
287
321
 
288
322
  base_10_value -= 1
@@ -1,5 +1,3 @@
1
- # encoding: UTF-8
2
-
3
1
  module SpreadBase
4
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
5
3
  end
data/lib/spreadbase.rb CHANGED
@@ -1,33 +1,12 @@
1
- # encoding: UTF-8
1
+ require_relative 'spreadbase/helpers/helpers'
2
2
 
3
- =begin
4
- Copyright 2012 Saverio Miroddi saverio.pub2 <a-hat!> gmail.com
3
+ require_relative 'spreadbase/document'
4
+ require_relative 'spreadbase/table'
5
+ require_relative 'spreadbase/cell'
5
6
 
6
- This file is part of SpreadBase.
7
-
8
- SpreadBase is free software: you can redistribute it and/or modify it under the
9
- terms of the GNU Lesser General Public License as published by the Free Software
10
- Foundation, either version 3 of the License, or (at your option) any later
11
- version.
12
-
13
- SpreadBase is distributed in the hope that it will be useful, but WITHOUT ANY
14
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
15
- PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
16
-
17
- You should have received a copy of the GNU Lesser General Public License along
18
- with SpreadBase. If not, see <http://www.gnu.org/licenses/>.
19
- =end
20
-
21
- require 'rubygems'
22
-
23
- require File.expand_path( '../spreadbase/helpers/helpers', __FILE__ )
24
-
25
- require File.expand_path( '../spreadbase/document', __FILE__ )
26
- require File.expand_path( '../spreadbase/table', __FILE__ )
27
-
28
- require File.expand_path( '../spreadbase/codecs/open_document_12_modules/encoding', __FILE__ )
29
- require File.expand_path( '../spreadbase/codecs/open_document_12_modules/decoding', __FILE__ )
30
- require File.expand_path( '../spreadbase/codecs/open_document_12', __FILE__ )
7
+ require_relative 'spreadbase/codecs/open_document_12_modules/encoding'
8
+ require_relative 'spreadbase/codecs/open_document_12_modules/decoding'
9
+ require_relative 'spreadbase/codecs/open_document_12'
31
10
 
32
11
  # = Spreadbase
33
12
  #