rspreadsheet 0.5.1 → 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +1 -1
- data/lib/rspreadsheet/row.rb +5 -0
- data/lib/rspreadsheet/tools.rb +3 -0
- data/lib/rspreadsheet/version.rb +1 -1
- data/lib/rspreadsheet/xml_tied_array.rb +2 -2
- data/lib/rspreadsheet/xml_tied_repeatable.rb +19 -10
- data/rspreadsheet.gemspec +9 -9
- data/spec/row_spec.rb +21 -0
- data/spec/testfile3-header_rows_and_cells.fods +240 -0
- metadata +19 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e4265d988a9cac4a67219e2efba520a137bcc9fe
|
4
|
+
data.tar.gz: 1d4e66e3d359d8b5ac8738d801f6088d7e998eca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b9ee836a107afe9dd74427b8b3952faa781c69ed9c728b8ae4743ec52ba78f8f969b73cc0a389fda78ade0a2d0850316ae55cd04ff2522e76b73fc11c229e6f
|
7
|
+
data.tar.gz: 89f06fd5d0f2cad8964e90f57bc194cf9bcbbdf9ddf9bf90b3e76315c0018249987a3f92488270a79f19a16172a06169d3244f4e720904ffabadbea7445e0166
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
[![Build Status](https://api.travis-ci.org/gorn/rspreadsheet.svg?branch=master)](https://travis-ci.org/gorn/rspreadsheet) [![Coverage Status](https://coveralls.io/repos/gorn/rspreadsheet/badge.svg?branch=master&service=github)](https://coveralls.io/r/gorn/rspreadsheet)
|
1
|
+
[![Build Status](https://api.travis-ci.org/gorn/rspreadsheet.svg?branch=master)](https://travis-ci.org/gorn/rspreadsheet) [![Coverage Status](https://coveralls.io/repos/gorn/rspreadsheet/badge.svg?branch=master&service=github)](https://coveralls.io/r/gorn/rspreadsheet)
|
2
2
|
|
3
3
|
# rspreadsheet
|
4
4
|
|
data/lib/rspreadsheet/row.rb
CHANGED
@@ -109,6 +109,7 @@ class Row < XMLTiedItem
|
|
109
109
|
def add_row_above
|
110
110
|
parent.add_row_above(rowi)
|
111
111
|
end
|
112
|
+
alias :insert_row_above :add_row_above
|
112
113
|
|
113
114
|
def next_row; relative(+1) end
|
114
115
|
alias :next :next_row
|
@@ -117,6 +118,10 @@ class Row < XMLTiedItem
|
|
117
118
|
worksheet.row(self.rowi+rowi_offset)
|
118
119
|
end
|
119
120
|
|
121
|
+
def clone_above_row(target_rowi)
|
122
|
+
parent.clone_item_before(rowi, target_rowi)
|
123
|
+
end
|
124
|
+
|
120
125
|
# @!group Private methods, which should not be called directly
|
121
126
|
# @private
|
122
127
|
# shifts internal represetation of row by diff. This should not be called directly
|
data/lib/rspreadsheet/tools.rb
CHANGED
@@ -156,6 +156,9 @@ module Tools
|
|
156
156
|
node.nil? ? default : node.attributes.get_attribute_ns(Tools.get_namespace(ns_prefix).href,key) || default
|
157
157
|
end
|
158
158
|
end
|
159
|
+
def self.delete_ns_attribute(node,ns_prefix,key)
|
160
|
+
set_ns_attribute(node,ns_prefix,key,nil,nil)
|
161
|
+
end
|
159
162
|
def self.get_ns_attribute_value(node,ns_prefix,key,default=:undefined_default)
|
160
163
|
if default==:undefined_default
|
161
164
|
Tools.get_ns_attribute(node,ns_prefix,key).andand.value
|
data/lib/rspreadsheet/version.rb
CHANGED
@@ -131,7 +131,7 @@ module XMLTiedArray
|
|
131
131
|
|
132
132
|
# # @!group accessing subnodes
|
133
133
|
# returns xmlnode with index
|
134
|
-
#
|
134
|
+
# does NOT respect repeated_attribute
|
135
135
|
def my_subnode(aindex)
|
136
136
|
raise 'Using method which does not respect repeated_attribute with options that are using it. You probably donot want to do that.' unless subnode_options[:repeated_attribute].nil?
|
137
137
|
return xmlsubnodes[aindex-1]
|
@@ -157,7 +157,7 @@ module XMLTiedArray
|
|
157
157
|
else
|
158
158
|
raise IndexError.new("Index #{aindex} out of bounds (1..#{self.size})")
|
159
159
|
end
|
160
|
-
end
|
160
|
+
end
|
161
161
|
|
162
162
|
def prepare_empty_subnode
|
163
163
|
Tools.prepare_ns_node(
|
@@ -44,12 +44,14 @@ module XMLTiedArray_WithRepeatableItems
|
|
44
44
|
end
|
45
45
|
|
46
46
|
# @!group inserting new subnodes
|
47
|
-
|
48
|
-
def
|
49
|
-
|
47
|
+
|
48
|
+
def insert_new_empty_subnode_before_respect_repeatable(aindex)
|
49
|
+
new_subnode = prepare_repeated_subnode(1, subnode_options)
|
50
|
+
insert_subnode_before_respect_repeatable(new_subnode, aindex)
|
50
51
|
end
|
52
|
+
alias :insert_new_empty_subnode_before :insert_new_empty_subnode_before_respect_repeatable
|
51
53
|
|
52
|
-
def
|
54
|
+
def insert_subnode_before_respect_repeatable(subnode,aindex)
|
53
55
|
axmlnode = xmlnode
|
54
56
|
options = subnode_options
|
55
57
|
node,index_range = find_subnode_with_range(aindex)
|
@@ -58,15 +60,16 @@ module XMLTiedArray_WithRepeatableItems
|
|
58
60
|
[index_range.begin..aindex-1,aindex..index_range.end].reject {|range| range.size<1}.each do |range| # split original node by cloning
|
59
61
|
clone_before_and_set_repeated_attribute(node,range.size,options)
|
60
62
|
end
|
61
|
-
node.prev.prev =
|
62
|
-
node.remove!
|
63
|
+
node.prev.prev = subnode # insert subnode
|
64
|
+
node.remove! # remove the original node
|
63
65
|
else # insert outbound xmlnode
|
64
|
-
|
65
|
-
|
66
|
-
|
66
|
+
number_of_preceeding_items = aindex-1-(index+1)+1
|
67
|
+
axmlnode << prepare_repeated_subnode(number_of_preceeding_items, options) unless number_of_preceeding_items<1 # insert preceeding cells
|
68
|
+
axmlnode << subnode # insert subnode
|
67
69
|
end #TODO: Out of bounds indexes handling
|
68
70
|
return my_subnode(aindex)
|
69
71
|
end
|
72
|
+
alias :insert_subnode_before :insert_subnode_before_respect_repeatable
|
70
73
|
|
71
74
|
def prepare_repeated_subnode(times_repeated,options)
|
72
75
|
result = prepare_empty_subnode
|
@@ -80,6 +83,13 @@ module XMLTiedArray_WithRepeatableItems
|
|
80
83
|
node.prev = newnode
|
81
84
|
end
|
82
85
|
|
86
|
+
# takes item on source_index, clones it and inserts it before target_index
|
87
|
+
def clone_item_before(source_index, target_index)
|
88
|
+
newnode = my_subnode(source_index).copy(true)
|
89
|
+
Tools.delete_ns_attribute(newnode,'table',subnode_options[:repeated_attribute])
|
90
|
+
insert_subnode_before_respect_repeatable(newnode,target_index)
|
91
|
+
end
|
92
|
+
|
83
93
|
# detaches subnode with aindex
|
84
94
|
def detach_my_subnode_respect_repeated(aindex)
|
85
95
|
axmlnode = xmlnode
|
@@ -109,7 +119,6 @@ module XMLTiedArray_WithRepeatableItems
|
|
109
119
|
(node.attributes[subnode_options[:repeated_attribute]] || 1).to_i
|
110
120
|
end
|
111
121
|
|
112
|
-
|
113
122
|
# clean up item from xml (handle possible detachments) and itemcache. leave the object invalidation on the object
|
114
123
|
# this should not be called from nowhere but XMLTiedItem.delete
|
115
124
|
def delete_subitem(aindex)
|
data/rspreadsheet.gemspec
CHANGED
@@ -28,25 +28,25 @@ Gem::Specification.new do |spec|
|
|
28
28
|
|
29
29
|
# runtime dependencies
|
30
30
|
unless package_natively_installed?('ruby-libxml')
|
31
|
-
spec.add_runtime_dependency 'libxml-ruby', '3.0' # parsing XML files
|
31
|
+
spec.add_runtime_dependency 'libxml-ruby', '>=3.0' # parsing XML files
|
32
32
|
end
|
33
|
-
spec.add_runtime_dependency 'rubyzip', '
|
34
|
-
spec.add_runtime_dependency 'andand', '
|
33
|
+
spec.add_runtime_dependency 'rubyzip', '>=1.3' # opening zip files
|
34
|
+
spec.add_runtime_dependency 'andand', '>=1.3'
|
35
35
|
|
36
36
|
# development dependencies
|
37
|
+
|
38
|
+
spec.add_development_dependency "bundler", '>= 1.5', '<3' # some 2.5 rubyies contain already bundler 2 included
|
37
39
|
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.4.5')
|
38
40
|
# ruby 2.4.5 and up
|
39
|
-
spec.add_development_dependency "
|
40
|
-
spec.add_development_dependency "rake", '~>10.0'
|
41
|
+
spec.add_development_dependency "rake", '>=10.0'
|
41
42
|
else
|
42
43
|
# ruby up to 2.4.5
|
43
|
-
spec.add_development_dependency "bundler", '~> 1.5'
|
44
44
|
spec.add_development_dependency "rake", '~>0.9'
|
45
45
|
end
|
46
46
|
# testig - see http://bit.ly/1n5yM51
|
47
|
-
spec.add_development_dependency "rspec", '
|
48
|
-
spec.add_development_dependency 'pry-nav', '
|
49
|
-
spec.add_development_dependency "coveralls", '
|
47
|
+
spec.add_development_dependency "rspec", '>=2.0' # running tests
|
48
|
+
spec.add_development_dependency 'pry-nav', '>=0.0' # enables pry 'next', 'step' commands
|
49
|
+
spec.add_development_dependency "coveralls", '>=0.7' # inspecting coverage of tests
|
50
50
|
|
51
51
|
|
52
52
|
# optional and testing
|
data/spec/row_spec.rb
CHANGED
@@ -270,6 +270,27 @@ describe Rspreadsheet::Row do
|
|
270
270
|
@row = @sheet1.rows(5)
|
271
271
|
@row.worksheet.should == @sheet1
|
272
272
|
end
|
273
|
+
it 'does not skip header rows (issue #43)' do
|
274
|
+
@sheet = Rspreadsheet.open('./spec/testfile3-header_rows_and_cells.fods').worksheet(1)
|
275
|
+
@sheet.A1.should == 'Cell in header row'
|
276
|
+
@sheet.A1.should_not == 'This is first nonheader row, but it is in colheader'
|
277
|
+
@sheet.B3.should == 'First completely nonheader cell'
|
278
|
+
end
|
279
|
+
it 'can be cloned to other row' do
|
280
|
+
@sheet2.row(5)[1].should == 5
|
281
|
+
@sheet2.row(6)[1].should == 6
|
282
|
+
|
283
|
+
@sheet2.row(6)[1].should_not == 4
|
284
|
+
@sheet2.row(4).clone_above_row(6)
|
285
|
+
@sheet2.row(4)[1].should == 4
|
286
|
+
@sheet2.row(5)[1].should == 5
|
287
|
+
@sheet2.row(6)[1].should == 4
|
288
|
+
@sheet2.row(7)[1].should == 6
|
289
|
+
@sheet2.row(6)[1].should == @sheet2.row(4)[1]
|
290
|
+
@sheet2.row(6)[2].should == @sheet2.row(4)[2]
|
291
|
+
@sheet2.row(6)[3].should == @sheet2.row(4)[3]
|
292
|
+
@sheet2.row(6).cell(2).formula.should == @sheet2.row(4).cell(2).formula
|
293
|
+
end
|
273
294
|
end
|
274
295
|
|
275
296
|
|
@@ -0,0 +1,240 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
|
3
|
+
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.spreadsheet">
|
4
|
+
<office:meta><meta:creation-date>2019-09-18T16:03:23.906364218</meta:creation-date><meta:generator>LibreOffice/5.2.7.2$Linux_X86_64 LibreOffice_project/20m0$Build-2</meta:generator><dc:date>2019-09-18T16:04:54.802388660</dc:date><meta:editing-duration>PT1M31S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="1" meta:cell-count="4" meta:object-count="0"/></office:meta>
|
5
|
+
<office:settings>
|
6
|
+
<config:config-item-set config:name="ooo:view-settings">
|
7
|
+
<config:config-item config:name="VisibleAreaTop" config:type="int">0</config:config-item>
|
8
|
+
<config:config-item config:name="VisibleAreaLeft" config:type="int">0</config:config-item>
|
9
|
+
<config:config-item config:name="VisibleAreaWidth" config:type="int">10966</config:config-item>
|
10
|
+
<config:config-item config:name="VisibleAreaHeight" config:type="int">1354</config:config-item>
|
11
|
+
<config:config-item-map-indexed config:name="Views">
|
12
|
+
<config:config-item-map-entry>
|
13
|
+
<config:config-item config:name="ViewId" config:type="string">view1</config:config-item>
|
14
|
+
<config:config-item-map-named config:name="Tables">
|
15
|
+
<config:config-item-map-entry config:name="List1">
|
16
|
+
<config:config-item config:name="CursorPositionX" config:type="int">0</config:config-item>
|
17
|
+
<config:config-item config:name="CursorPositionY" config:type="int">3</config:config-item>
|
18
|
+
<config:config-item config:name="HorizontalSplitMode" config:type="short">0</config:config-item>
|
19
|
+
<config:config-item config:name="VerticalSplitMode" config:type="short">0</config:config-item>
|
20
|
+
<config:config-item config:name="HorizontalSplitPosition" config:type="int">0</config:config-item>
|
21
|
+
<config:config-item config:name="VerticalSplitPosition" config:type="int">0</config:config-item>
|
22
|
+
<config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item>
|
23
|
+
<config:config-item config:name="PositionLeft" config:type="int">0</config:config-item>
|
24
|
+
<config:config-item config:name="PositionRight" config:type="int">0</config:config-item>
|
25
|
+
<config:config-item config:name="PositionTop" config:type="int">0</config:config-item>
|
26
|
+
<config:config-item config:name="PositionBottom" config:type="int">0</config:config-item>
|
27
|
+
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
|
28
|
+
<config:config-item config:name="ZoomValue" config:type="int">100</config:config-item>
|
29
|
+
<config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
|
30
|
+
<config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
|
31
|
+
</config:config-item-map-entry>
|
32
|
+
</config:config-item-map-named>
|
33
|
+
<config:config-item config:name="ActiveTable" config:type="string">List1</config:config-item>
|
34
|
+
<config:config-item config:name="HorizontalScrollbarWidth" config:type="int">636</config:config-item>
|
35
|
+
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
|
36
|
+
<config:config-item config:name="ZoomValue" config:type="int">100</config:config-item>
|
37
|
+
<config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
|
38
|
+
<config:config-item config:name="ShowPageBreakPreview" config:type="boolean">false</config:config-item>
|
39
|
+
<config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item>
|
40
|
+
<config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item>
|
41
|
+
<config:config-item config:name="ShowGrid" config:type="boolean">false</config:config-item>
|
42
|
+
<config:config-item config:name="GridColor" config:type="long">12632256</config:config-item>
|
43
|
+
<config:config-item config:name="ShowPageBreaks" config:type="boolean">true</config:config-item>
|
44
|
+
<config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item>
|
45
|
+
<config:config-item config:name="HasSheetTabs" config:type="boolean">true</config:config-item>
|
46
|
+
<config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item>
|
47
|
+
<config:config-item config:name="IsValueHighlightingEnabled" config:type="boolean">false</config:config-item>
|
48
|
+
<config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item>
|
49
|
+
<config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item>
|
50
|
+
<config:config-item config:name="RasterResolutionX" config:type="int">1000</config:config-item>
|
51
|
+
<config:config-item config:name="RasterResolutionY" config:type="int">1000</config:config-item>
|
52
|
+
<config:config-item config:name="RasterSubdivisionX" config:type="int">1</config:config-item>
|
53
|
+
<config:config-item config:name="RasterSubdivisionY" config:type="int">1</config:config-item>
|
54
|
+
<config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">true</config:config-item>
|
55
|
+
</config:config-item-map-entry>
|
56
|
+
</config:config-item-map-indexed>
|
57
|
+
</config:config-item-set>
|
58
|
+
<config:config-item-set config:name="ooo:configuration-settings">
|
59
|
+
<config:config-item config:name="SyntaxStringRef" config:type="short">7</config:config-item>
|
60
|
+
<config:config-item config:name="IsDocumentShared" config:type="boolean">false</config:config-item>
|
61
|
+
<config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
|
62
|
+
<config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
|
63
|
+
<config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
|
64
|
+
<config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
|
65
|
+
<config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
|
66
|
+
<config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item>
|
67
|
+
<config:config-item config:name="RasterResolutionX" config:type="int">1000</config:config-item>
|
68
|
+
<config:config-item config:name="RasterResolutionY" config:type="int">1000</config:config-item>
|
69
|
+
<config:config-item config:name="HasSheetTabs" config:type="boolean">true</config:config-item>
|
70
|
+
<config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">true</config:config-item>
|
71
|
+
<config:config-item config:name="ShowPageBreaks" config:type="boolean">true</config:config-item>
|
72
|
+
<config:config-item config:name="ShowGrid" config:type="boolean">false</config:config-item>
|
73
|
+
<config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item>
|
74
|
+
<config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item>
|
75
|
+
<config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item>
|
76
|
+
<config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
|
77
|
+
<config:config-item config:name="GridColor" config:type="long">12632256</config:config-item>
|
78
|
+
<config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item>
|
79
|
+
<config:config-item config:name="PrinterName" config:type="string">Lobby-A4-Canon-color</config:config-item>
|
80
|
+
<config:config-item config:name="LinkUpdateMode" config:type="short">3</config:config-item>
|
81
|
+
<config:config-item config:name="RasterSubdivisionX" config:type="int">1</config:config-item>
|
82
|
+
<config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item>
|
83
|
+
<config:config-item config:name="RasterSubdivisionY" config:type="int">1</config:config-item>
|
84
|
+
<config:config-item config:name="AutoCalculate" config:type="boolean">true</config:config-item>
|
85
|
+
<config:config-item config:name="PrinterSetup" config:type="base64Binary">swH+/0xvYmJ5LUE0LUNhbm9uLWNvbG9yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ1VQUzpMb2JieS1BNC1DYW5vbi1jb2xvcgAAAAAAAAAWAAMA2QAAAAAABQAEAAhSAAAEdAAASm9iRGF0YSAxCnByaW50ZXI9TG9iYnktQTQtQ2Fub24tY29sb3IKb3JpZW50YXRpb249UG9ydHJhaXQKY29waWVzPTEKY29sbGF0ZT1mYWxzZQptYXJnaW5kYWp1c3RtZW50PTAsMCwwLDAKY29sb3JkZXB0aD0yNApwc2xldmVsPTAKcGRmZGV2aWNlPTEKY29sb3JkZXZpY2U9MApQUERDb250ZXhEYXRhCklucHV0U2xvdDpBdXRvbWF0aWMARHVwbGV4Ok5vbmUAUGFnZVNpemU6QTQAABIAQ09NUEFUX0RVUExFWF9NT0RFCgBEVVBMRVhfT0ZG</config:config-item>
|
86
|
+
<config:config-item config:name="ApplyUserData" config:type="boolean">false</config:config-item>
|
87
|
+
<config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
|
88
|
+
</config:config-item-set>
|
89
|
+
</office:settings>
|
90
|
+
<office:scripts>
|
91
|
+
<office:script script:language="ooo:Basic">
|
92
|
+
<ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
|
93
|
+
</office:script>
|
94
|
+
</office:scripts>
|
95
|
+
<office:font-face-decls>
|
96
|
+
<style:font-face style:name="Liberation Sans" svg:font-family="'Liberation Sans'" style:font-family-generic="swiss" style:font-pitch="variable"/>
|
97
|
+
<style:font-face style:name="AR PL SungtiL GB" svg:font-family="'AR PL SungtiL GB'" style:font-family-generic="system" style:font-pitch="variable"/>
|
98
|
+
<style:font-face style:name="DejaVu Sans" svg:font-family="'DejaVu Sans'" style:font-family-generic="system" style:font-pitch="variable"/>
|
99
|
+
<style:font-face style:name="Lohit Devanagari" svg:font-family="'Lohit Devanagari'" style:font-family-generic="system" style:font-pitch="variable"/>
|
100
|
+
</office:font-face-decls>
|
101
|
+
<office:styles>
|
102
|
+
<style:default-style style:family="table-cell">
|
103
|
+
<style:paragraph-properties style:tab-stop-distance="12.5mm"/>
|
104
|
+
<style:text-properties style:font-name="Liberation Sans" fo:language="cs" fo:country="CZ" style:font-name-asian="DejaVu Sans" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="DejaVu Sans" style:language-complex="hi" style:country-complex="IN"/>
|
105
|
+
</style:default-style>
|
106
|
+
<number:number-style style:name="N0">
|
107
|
+
<number:number number:min-integer-digits="1"/>
|
108
|
+
</number:number-style>
|
109
|
+
<number:currency-style style:name="N108P0" style:volatile="true">
|
110
|
+
<number:number number:decimal-places="2" loext:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
|
111
|
+
<number:text> </number:text>
|
112
|
+
<number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
|
113
|
+
</number:currency-style>
|
114
|
+
<number:currency-style style:name="N108">
|
115
|
+
<style:text-properties fo:color="#ff0000"/>
|
116
|
+
<number:text>-</number:text>
|
117
|
+
<number:number number:decimal-places="2" loext:min-decimal-places="2" number:min-integer-digits="1" number:grouping="true"/>
|
118
|
+
<number:text> </number:text>
|
119
|
+
<number:currency-symbol number:language="cs" number:country="CZ">Kč</number:currency-symbol>
|
120
|
+
<style:map style:condition="value()>=0" style:apply-style-name="N108P0"/>
|
121
|
+
</number:currency-style>
|
122
|
+
<style:style style:name="Default" style:family="table-cell">
|
123
|
+
<style:text-properties style:font-name-asian="AR PL SungtiL GB" style:font-family-asian="'AR PL SungtiL GB'" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-name-complex="Lohit Devanagari" style:font-family-complex="'Lohit Devanagari'" style:font-family-generic-complex="system" style:font-pitch-complex="variable"/>
|
124
|
+
</style:style>
|
125
|
+
<style:style style:name="Result" style:family="table-cell" style:parent-style-name="Default">
|
126
|
+
<style:text-properties fo:font-style="italic" style:text-underline-style="solid" style:text-underline-width="auto" style:text-underline-color="font-color" fo:font-weight="bold"/>
|
127
|
+
</style:style>
|
128
|
+
<style:style style:name="Result2" style:family="table-cell" style:parent-style-name="Result" style:data-style-name="N108"/>
|
129
|
+
<style:style style:name="Heading" style:family="table-cell" style:parent-style-name="Default">
|
130
|
+
<style:table-cell-properties style:text-align-source="fix" style:repeat-content="false"/>
|
131
|
+
<style:paragraph-properties fo:text-align="center"/>
|
132
|
+
<style:text-properties fo:font-size="16pt" fo:font-style="italic" fo:font-weight="bold"/>
|
133
|
+
</style:style>
|
134
|
+
<style:style style:name="Heading1" style:family="table-cell" style:parent-style-name="Heading">
|
135
|
+
<style:table-cell-properties style:rotation-angle="90"/>
|
136
|
+
</style:style>
|
137
|
+
</office:styles>
|
138
|
+
<office:automatic-styles>
|
139
|
+
<style:style style:name="co1" style:family="table-column">
|
140
|
+
<style:table-column-properties fo:break-before="auto" style:column-width="87.08mm"/>
|
141
|
+
</style:style>
|
142
|
+
<style:style style:name="co2" style:family="table-column">
|
143
|
+
<style:table-column-properties fo:break-before="auto" style:column-width="22.58mm"/>
|
144
|
+
</style:style>
|
145
|
+
<style:style style:name="ro1" style:family="table-row">
|
146
|
+
<style:table-row-properties style:row-height="4.52mm" fo:break-before="auto" style:use-optimal-row-height="true"/>
|
147
|
+
</style:style>
|
148
|
+
<style:style style:name="ta1" style:family="table" style:master-page-name="Default">
|
149
|
+
<style:table-properties table:display="true" style:writing-mode="lr-tb"/>
|
150
|
+
</style:style>
|
151
|
+
<style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default">
|
152
|
+
<style:text-properties style:font-name="Liberation Sans" style:font-name-asian="AR PL SungtiL GB" style:font-name-complex="Lohit Devanagari"/>
|
153
|
+
</style:style>
|
154
|
+
<style:page-layout style:name="pm1">
|
155
|
+
<style:page-layout-properties style:writing-mode="lr-tb"/>
|
156
|
+
<style:header-style>
|
157
|
+
<style:header-footer-properties fo:min-height="7.5mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-bottom="2.5mm"/>
|
158
|
+
</style:header-style>
|
159
|
+
<style:footer-style>
|
160
|
+
<style:header-footer-properties fo:min-height="7.5mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-top="2.5mm"/>
|
161
|
+
</style:footer-style>
|
162
|
+
</style:page-layout>
|
163
|
+
<style:page-layout style:name="pm2">
|
164
|
+
<style:page-layout-properties style:writing-mode="lr-tb"/>
|
165
|
+
<style:header-style>
|
166
|
+
<style:header-footer-properties fo:min-height="7.5mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-bottom="2.5mm" fo:border="2.49pt solid #000000" fo:padding="0.18mm" fo:background-color="#c0c0c0">
|
167
|
+
<style:background-image/>
|
168
|
+
</style:header-footer-properties>
|
169
|
+
</style:header-style>
|
170
|
+
<style:footer-style>
|
171
|
+
<style:header-footer-properties fo:min-height="7.5mm" fo:margin-left="0mm" fo:margin-right="0mm" fo:margin-top="2.5mm" fo:border="2.49pt solid #000000" fo:padding="0.18mm" fo:background-color="#c0c0c0">
|
172
|
+
<style:background-image/>
|
173
|
+
</style:header-footer-properties>
|
174
|
+
</style:footer-style>
|
175
|
+
</style:page-layout>
|
176
|
+
</office:automatic-styles>
|
177
|
+
<office:master-styles>
|
178
|
+
<style:master-page style:name="Default" style:page-layout-name="pm1">
|
179
|
+
<style:header>
|
180
|
+
<text:p><text:sheet-name>???</text:sheet-name></text:p>
|
181
|
+
</style:header>
|
182
|
+
<style:header-left style:display="false"/>
|
183
|
+
<style:footer>
|
184
|
+
<text:p>Stránka <text:page-number>1</text:page-number></text:p>
|
185
|
+
</style:footer>
|
186
|
+
<style:footer-left style:display="false"/>
|
187
|
+
</style:master-page>
|
188
|
+
<style:master-page style:name="Report" style:page-layout-name="pm2">
|
189
|
+
<style:header>
|
190
|
+
<style:region-left>
|
191
|
+
<text:p><text:sheet-name>???</text:sheet-name> (<text:title>???</text:title>)</text:p>
|
192
|
+
</style:region-left>
|
193
|
+
<style:region-right>
|
194
|
+
<text:p><text:date style:data-style-name="N2" text:date-value="2019-09-18">00.00.0000</text:date>, <text:time style:data-style-name="N2" text:time-value="16:15:31.823489375">00:00:00</text:time></text:p>
|
195
|
+
</style:region-right>
|
196
|
+
</style:header>
|
197
|
+
<style:header-left style:display="false"/>
|
198
|
+
<style:footer>
|
199
|
+
<text:p>Stránka <text:page-number>1</text:page-number> / <text:page-count>99</text:page-count></text:p>
|
200
|
+
</style:footer>
|
201
|
+
<style:footer-left style:display="false"/>
|
202
|
+
</style:master-page>
|
203
|
+
</office:master-styles>
|
204
|
+
<office:body>
|
205
|
+
<office:spreadsheet>
|
206
|
+
<table:calculation-settings table:case-sensitive="false" table:automatic-find-labels="false" table:use-regular-expressions="false" table:use-wildcards="true">
|
207
|
+
<table:iteration table:maximum-difference="0.0001"/>
|
208
|
+
</table:calculation-settings>
|
209
|
+
<table:table table:name="List1" table:style-name="ta1">
|
210
|
+
<table:table-header-columns>
|
211
|
+
<table:table-column table:style-name="co1" table:default-cell-style-name="Default"/>
|
212
|
+
</table:table-header-columns>
|
213
|
+
<table:table-column table:style-name="co2" table:default-cell-style-name="Default"/>
|
214
|
+
<table:table-header-rows>
|
215
|
+
<table:table-row table:style-name="ro1">
|
216
|
+
<table:table-cell office:value-type="string" calcext:value-type="string">
|
217
|
+
<text:p>Cell in header row</text:p>
|
218
|
+
</table:table-cell>
|
219
|
+
<table:table-cell/>
|
220
|
+
</table:table-row>
|
221
|
+
<table:table-row table:style-name="ro1">
|
222
|
+
<table:table-cell office:value-type="string" calcext:value-type="string">
|
223
|
+
<text:p>Row is also header row</text:p>
|
224
|
+
</table:table-cell>
|
225
|
+
<table:table-cell/>
|
226
|
+
</table:table-row>
|
227
|
+
</table:table-header-rows>
|
228
|
+
<table:table-row table:style-name="ro1">
|
229
|
+
<table:table-cell office:value-type="string" calcext:value-type="string">
|
230
|
+
<text:p>This is first nonheader row, but it is in colheader</text:p>
|
231
|
+
</table:table-cell>
|
232
|
+
<table:table-cell table:style-name="ce1" office:value-type="string" calcext:value-type="string">
|
233
|
+
<text:p>First completely nonheader cell</text:p>
|
234
|
+
</table:table-cell>
|
235
|
+
</table:table-row>
|
236
|
+
</table:table>
|
237
|
+
<table:named-expressions/>
|
238
|
+
</office:spreadsheet>
|
239
|
+
</office:body>
|
240
|
+
</office:document>
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspreadsheet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakub A.Těšínský
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: andand
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -64,54 +64,54 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '0.9'
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '0.9'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: rspec
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
79
|
+
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
81
|
version: '2.0'
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
|
-
- - "
|
86
|
+
- - ">="
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '2.0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: pry-nav
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- - "
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0.0'
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- - "
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0.0'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: coveralls
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
|
-
- - "
|
107
|
+
- - ">="
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0.7'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
|
-
- - "
|
114
|
+
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: '0.7'
|
117
117
|
description: Manipulating LibreOffice Calc (OpenDocument Spreadsheet) files with Ruby.
|
@@ -178,6 +178,7 @@ files:
|
|
178
178
|
- spec/testfile1.fods
|
179
179
|
- spec/testfile1.ods
|
180
180
|
- spec/testfile2-images.ods
|
181
|
+
- spec/testfile3-header_rows_and_cells.fods
|
181
182
|
- spec/tools_spec.rb
|
182
183
|
- spec/workbook_spec.rb
|
183
184
|
- spec/worksheet_spec.rb
|
@@ -202,7 +203,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
203
|
version: '0'
|
203
204
|
requirements: []
|
204
205
|
rubyforge_project:
|
205
|
-
rubygems_version: 2.
|
206
|
+
rubygems_version: 2.5.2.1
|
206
207
|
signing_key:
|
207
208
|
specification_version: 4
|
208
209
|
summary: Manipulating LibreOffice Calc (OpenDocument Spreadsheet) files from Ruby
|
@@ -227,6 +228,7 @@ test_files:
|
|
227
228
|
- spec/testfile1.fods
|
228
229
|
- spec/testfile1.ods
|
229
230
|
- spec/testfile2-images.ods
|
231
|
+
- spec/testfile3-header_rows_and_cells.fods
|
230
232
|
- spec/tools_spec.rb
|
231
233
|
- spec/workbook_spec.rb
|
232
234
|
- spec/worksheet_spec.rb
|