spreadsheet 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ === 0.7.3 / 26.06.2012
2
+
3
+ * Fix Format borders
4
+ * see https://github.com/zdavatz/spreadsheet/pull/6 for full details.
5
+ * patches by uraki66@gmail.com
6
+
1
7
  === 0.7.2 / 14.06.2012
2
8
 
3
9
  * many changes by Mina Naguib <mina.git@naguib.ca>
data/README.txt CHANGED
@@ -1,8 +1,8 @@
1
- Last Update: 07.05.2011 - Zeno R.R. Davatz
1
+ Last Update: 26.06.2012 - Zeno R.R. Davatz
2
2
 
3
3
  = Spreadsheet
4
4
 
5
- http://spreadsheet.rubyforge.org
5
+ https://github.com/zdavatz/spreadsheet
6
6
 
7
7
  The Mailing List can be found here:
8
8
 
@@ -10,7 +10,7 @@ http://groups.google.com/group/rubyspreadsheet
10
10
 
11
11
  The code can be found here:
12
12
 
13
- http://spreadsheet.rubyforge.org
13
+ https://github.com/zdavatz/spreadsheet
14
14
 
15
15
  For a viewable directory of all recent changes, please see:
16
16
 
@@ -24,7 +24,6 @@ For Non-GPLv3 commercial licencing, please see:
24
24
 
25
25
  http://www.spreadsheet.ch
26
26
 
27
-
28
27
  == Description
29
28
 
30
29
  The Spreadsheet Library is designed to read and write Spreadsheet Documents.
data/lib/spreadsheet.rb CHANGED
@@ -42,7 +42,7 @@ module Spreadsheet
42
42
 
43
43
  ##
44
44
  # The version of Spreadsheet you are using.
45
- VERSION = '0.7.2'
45
+ VERSION = '0.7.3'
46
46
 
47
47
  ##
48
48
  # Default client Encoding. Change this value if your application uses a
@@ -411,6 +411,28 @@ module Internals
411
411
  :distributed => 4,
412
412
  }
413
413
  NGILA_V_FX = XF_V_ALIGN.invert
414
+ # border line styles taken from http://www.openoffice.org/sc/excelfileformat.pdf
415
+ XF_BORDER_LINE_STYLES = {
416
+ 0x00 => :none,
417
+ 0x01 => :thin,
418
+ 0x02 => :medium,
419
+ 0x03 => :dashed,
420
+ 0x04 => :dotted,
421
+ 0x05 => :thick,
422
+ 0x06 => :double,
423
+ 0x07 => :hair,
424
+ # the following are only valid for BIFF8 and higher:
425
+ 0x08 => :medium_dashed,
426
+ 0x09 => :thin_dash_dotted,
427
+ 0x0a => :medium_dash_dotted,
428
+ 0x0b => :thin_dash_dot_dotted,
429
+ 0x0c => :medium_dash_dot_dotted,
430
+ 0x0d => :slanted_medium_dash_dotted
431
+ }
432
+ # ensure reader always gets a valid line style
433
+ XF_BORDER_LINE_STYLES.default = :none
434
+ SELYTS_ENIL_REDROB_FX = XF_BORDER_LINE_STYLES.invert
435
+ SELYTS_ENIL_REDROB_FX.default = 0x00
414
436
  OPCODE_SIZE = 4
415
437
  ROW_HEIGHT = 12.1
416
438
  SST_CHUNKSIZE = 20
@@ -1048,21 +1048,23 @@ class Reader
1048
1048
  fmt.indent_level = xf_indent & 0x0f
1049
1049
  fmt.shrink = xf_indent & 0x10 > 0
1050
1050
  fmt.text_direction = NOITCERID_TXET_FX[xf_indent & 0xc0]
1051
- fmt.left = xf_borders & 0x0000000f > 0
1052
- fmt.right = xf_borders & 0x000000f0 > 0
1053
- fmt.top = xf_borders & 0x00000f00 > 0
1054
- fmt.bottom = xf_borders & 0x0000f000 > 0
1055
- fmt.left_color = COLOR_CODES[xf_borders & 0x007f0000] || :border
1056
- fmt.right_color = COLOR_CODES[xf_borders & 0x3f800000] || :border
1051
+ fmt.left = XF_BORDER_LINE_STYLES[xf_borders & 0x0000000f]
1052
+ fmt.right = XF_BORDER_LINE_STYLES[(xf_borders & 0x000000f0) >> 4]
1053
+ fmt.top = XF_BORDER_LINE_STYLES[(xf_borders & 0x00000f00) >> 8]
1054
+ fmt.bottom = XF_BORDER_LINE_STYLES[(xf_borders & 0x0000f000) >> 12]
1055
+ fmt.left_color = COLOR_CODES[(xf_borders & 0x007f0000) >> 16] || :black
1056
+ fmt.right_color = COLOR_CODES[(xf_borders & 0x3f800000) >> 23] || :black
1057
1057
  fmt.cross_down = xf_borders & 0x40000000 > 0
1058
1058
  fmt.cross_up = xf_borders & 0x80000000 > 0
1059
- fmt.top_color = COLOR_CODES[xf_brdcolors & 0x0000007f] || :border
1060
- fmt.bottom_color = COLOR_CODES[xf_brdcolors & 0x00003f80] || :border
1061
- fmt.diagonal_color = COLOR_CODES[xf_brdcolors & 0x001fc000] || :border
1062
- #fmt.diagonal_style = COLOR_CODES[xf_brdcolors & 0x01e00000]
1063
- fmt.pattern = xf_brdcolors & 0xfc000000
1059
+ if xf_brdcolors
1060
+ fmt.top_color = COLOR_CODES[xf_brdcolors & 0x0000007f] || :black
1061
+ fmt.bottom_color = COLOR_CODES[(xf_brdcolors & 0x00003f80) >> 7] || :black
1062
+ fmt.diagonal_color = COLOR_CODES[(xf_brdcolors & 0x001fc000) >> 14] || :black
1063
+ #fmt.diagonal_style = COLOR_CODES[xf_brdcolors & 0x01e00000]
1064
+ fmt.pattern = (xf_brdcolors & 0xfc000000) >> 26
1065
+ end
1064
1066
  fmt.pattern_fg_color = COLOR_CODES[xf_pattern & 0x007f] || :border
1065
- fmt.pattern_bg_color = COLOR_CODES[xf_pattern & 0x3f80] || :pattern_bg
1067
+ fmt.pattern_bg_color = COLOR_CODES[(xf_pattern & 0x3f80) >> 7] || :pattern_bg
1066
1068
  @workbook.add_format fmt
1067
1069
  end
1068
1070
  def read_sheet_protection worksheet, op, data
@@ -21,13 +21,22 @@ class Format < DelegateClass Spreadsheet::Format
21
21
  color_code(@format.send(key) || default)
22
22
  end
23
23
  end
24
+ def Format.line_style key, default
25
+ define_method key do
26
+ style_code(@format.send(key) || default)
27
+ end
28
+ end
24
29
  boolean :hidden, :locked, :merge_range, :shrink, :text_justlast, :text_wrap,
25
- :cross_down, :cross_up, :left, :right, :top, :bottom
26
- color :left_color, :border
27
- color :right_color, :border
28
- color :top_color, :border
29
- color :bottom_color, :border
30
- color :diagonal_color, :border
30
+ :cross_down, :cross_up
31
+ line_style :left, :none
32
+ line_style :right, :none
33
+ line_style :top, :none
34
+ line_style :bottom, :none
35
+ color :left_color, :black
36
+ color :right_color, :black
37
+ color :top_color, :black
38
+ color :bottom_color, :black
39
+ color :diagonal_color, :black
31
40
  color :pattern_fg_color, :pattern_bg
32
41
  color :pattern_bg_color, :pattern_bg
33
42
  attr_reader :format
@@ -41,6 +50,9 @@ class Format < DelegateClass Spreadsheet::Format
41
50
  def color_code color
42
51
  SEDOC_ROLOC[color]
43
52
  end
53
+ def style_code style
54
+ SELYTS_ENIL_REDROB_FX[style]
55
+ end
44
56
  def font_index
45
57
  @writer.font_index @workbook, font.key
46
58
  end
@@ -212,7 +224,7 @@ class Format < DelegateClass Spreadsheet::Format
212
224
  rot
213
225
  end
214
226
  def xf_type_prot type
215
- type = type.to_s.downcase == 'style' ? 0xfff5 : 0x0000
227
+ type = type.to_s.downcase == 'style' ? 0xfff4 : 0x0000
216
228
  type |= locked
217
229
  type |= hidden << 1
218
230
  type
@@ -229,7 +241,7 @@ class Format < DelegateClass Spreadsheet::Format
229
241
  then
230
242
  atr_alc = 1
231
243
  end
232
- atr_bdr = [top, bottom, left, right, cross_up, cross_down].max
244
+ atr_bdr = 1
233
245
  atr_pat = 0
234
246
  if @format.pattern_fg_color != :border \
235
247
  || @format.pattern_bg_color != :pattern_bg \
@@ -21,16 +21,32 @@ module Spreadsheet
21
21
  # #shrink:: Shrink the contents to fit the cell.
22
22
  # #text_justlast:: Force the last line of a cell to be justified. This
23
23
  # probably makes sense if horizontal_align = :justify
24
- # #left:: Draw a border to the left of the cell.
25
- # #right:: Draw a border to the right of the cell.
26
- # #top:: Draw a border at the top of the cell.
27
- # #bottom:: Draw a border at the bottom of the cell.
24
+ # #left:: Apply a border style to the left of the cell.
25
+ # #right:: Apply a border style to the right of the cell.
26
+ # #top:: Apply a border style at the top of the cell.
27
+ # #bottom:: Apply a border style at the bottom of the cell.
28
28
  # #rotation_stacked:: Characters in the cell are stacked on top of each
29
29
  # other. Excel will ignore other rotation values if
30
30
  # this is set.
31
31
  boolean :cross_down, :cross_up, :hidden, :locked,
32
- :merge_range, :shrink, :text_justlast, :text_wrap, :left, :right,
33
- :top, :bottom, :rotation_stacked
32
+ :merge_range, :shrink, :text_justlast, :text_wrap,
33
+ :rotation_stacked
34
+ ##
35
+ # Border line styles
36
+ # Valid values: :none, :thin, :medium, :dashed, :dotted, :thick,
37
+ # :double, :hair, :medium_dashed, :thin_dash_dotted,
38
+ # :medium_dash_dotted, :thin_dash_dot_dotted,
39
+ # :medium_dash_dot_dotted, :slanted_medium_dash_dotted
40
+ # Default: :none
41
+ styles = [ :thin, :medium, :dashed, :dotted, :thick,
42
+ :double, :hair, :medium_dashed, :thin_dash_dotted,
43
+ :medium_dash_dotted, :thin_dash_dot_dotted,
44
+ :medium_dash_dot_dotted, :slanted_medium_dash_dotted ]
45
+ enum :left, :none, *styles
46
+ enum :right, :none, *styles
47
+ enum :top, :none, *styles
48
+ enum :bottom, :none, *styles
49
+
34
50
  ##
35
51
  # Color attributes
36
52
  colors :bottom_color, :top_color, :left_color, :right_color,
@@ -77,11 +93,11 @@ module Spreadsheet
77
93
  @number_format = client 'GENERAL', 'UTF-8'
78
94
  @rotation = 0
79
95
  @pattern = 0
80
- @bottom_color = :builtin_black
81
- @top_color = :builtin_black
82
- @left_color = :builtin_black
83
- @right_color = :builtin_black
84
- @diagonal_color = :builtin_black
96
+ @bottom_color = :black
97
+ @top_color = :black
98
+ @left_color = :black
99
+ @right_color = :black
100
+ @diagonal_color = :black
85
101
  @pattern_fg_color = :border
86
102
  @pattern_bg_color = :pattern_bg
87
103
  @regexes = {
@@ -116,21 +132,21 @@ module Spreadsheet
116
132
  self.vertical_align = location rescue ArgumentError
117
133
  end
118
134
  ##
119
- # Returns an Array containing the status of the four borders:
135
+ # Returns an Array containing the line styles of the four borders:
120
136
  # bottom, top, right, left
121
137
  def border
122
- [bottom,top,right,left]
138
+ [bottom, top, right, left]
123
139
  end
124
140
  ##
125
- # Activate or deactivate all four borders (left, right, top, bottom)
126
- def border=(boolean)
127
- [:bottom=, :top=, :right=, :left=].each do |writer| send writer, boolean end
141
+ # Set same line style on all four borders at once (left, right, top, bottom)
142
+ def border=(style)
143
+ [:bottom=, :top=, :right=, :left=].each do |writer| send writer, style end
128
144
  end
129
145
  ##
130
146
  # Returns an Array containing the colors of the four borders:
131
147
  # bottom, top, right, left
132
148
  def border_color
133
- [@bottom_color,@top_color,@left_color,@right_color]
149
+ [@bottom_color,@top_color,@right_color,@left_color]
134
150
  end
135
151
  ##
136
152
  # Set all four border colors to _color_ (left, right, top, bottom)
@@ -65,6 +65,12 @@ module Spreadsheet
65
65
  @height = 12.1
66
66
  end
67
67
  ##
68
+ # The default Format of this Row, if you have set one.
69
+ # Returns the Worksheet's default or the Workbook's default Format otherwise.
70
+ def default_format
71
+ @default_format || @worksheet.default_format || @workbook.default_format
72
+ end
73
+ ##
68
74
  # Set the default Format used when writing a Cell if no explicit Format is
69
75
  # stored for the cell.
70
76
  def default_format= format
data/spreadsheet.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = "spreadsheet"
3
- s.version = "0.7.0"
3
+ s.version = "0.7.3"
4
4
  s.summary = "The Spreadsheet Library is designed to read and write Spreadsheet Documents"
5
5
  s.description = "As of version 0.6.0, only Microsoft Excel compatible spreadsheets are supported"
6
6
  s.author = "Masaomi Hatakeyama, Zeno R.R. Davatz"
metadata CHANGED
@@ -1,71 +1,86 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spreadsheet
3
- version: !ruby/object:Gem::Version
4
- version: 0.7.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 5
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 7
9
+ - 3
10
+ version: 0.7.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Masaomi Hatakeyama, Zeno R.R. Davatz
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-06-14 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-06-26 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: ruby-ole
16
- requirement: &8107060 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '1.0'
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 15
29
+ segments:
30
+ - 1
31
+ - 0
32
+ version: "1.0"
22
33
  type: :runtime
23
- prerelease: false
24
- version_requirements: *8107060
25
- - !ruby/object:Gem::Dependency
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
26
36
  name: rdoc
27
- requirement: &8106340 !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
28
39
  none: false
29
- requirements:
40
+ requirements:
30
41
  - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '3.10'
42
+ - !ruby/object:Gem::Version
43
+ hash: 19
44
+ segments:
45
+ - 3
46
+ - 10
47
+ version: "3.10"
33
48
  type: :development
34
- prerelease: false
35
- version_requirements: *8106340
36
- - !ruby/object:Gem::Dependency
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
37
51
  name: hoe
38
- requirement: &8105620 !ruby/object:Gem::Requirement
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
39
54
  none: false
40
- requirements:
55
+ requirements:
41
56
  - - ~>
42
- - !ruby/object:Gem::Version
43
- version: '2.13'
57
+ - !ruby/object:Gem::Version
58
+ hash: 25
59
+ segments:
60
+ - 2
61
+ - 13
62
+ version: "2.13"
44
63
  type: :development
45
- prerelease: false
46
- version_requirements: *8105620
47
- description: ! 'The Spreadsheet Library is designed to read and write Spreadsheet
48
- Documents.
49
-
64
+ version_requirements: *id003
65
+ description: |-
66
+ The Spreadsheet Library is designed to read and write Spreadsheet Documents.
50
67
  As of version 0.6.0, only Microsoft Excel compatible spreadsheets are
51
-
52
68
  supported. Spreadsheet is a combination/complete rewrite of the
53
-
54
69
  Spreadsheet::Excel Library by Daniel J. Berger and the ParseExcel Library by
55
-
56
- Hannes Wyss. Spreadsheet can read, write and modify Spreadsheet Documents.'
57
- email:
70
+ Hannes Wyss. Spreadsheet can read, write and modify Spreadsheet Documents.
71
+ email:
58
72
  - mhatakeyama@ywesee.com, zdavatz@ywesee.com
59
- executables:
73
+ executables:
60
74
  - xlsopcodes
61
75
  extensions: []
62
- extra_rdoc_files:
76
+
77
+ extra_rdoc_files:
63
78
  - GUIDE.txt
64
79
  - History.txt
65
80
  - LICENSE.txt
66
81
  - Manifest.txt
67
82
  - README.txt
68
- files:
83
+ files:
69
84
  - .gitignore
70
85
  - GUIDE.txt
71
86
  - History.txt
@@ -136,30 +151,39 @@ files:
136
151
  - test/worksheet.rb
137
152
  - test/workbook_protection.rb
138
153
  - .gemtest
139
- homepage: http://spreadsheet.rubyforge.org
154
+ homepage: https://github.com/zdavatz/spreadsheet
140
155
  licenses: []
156
+
141
157
  post_install_message:
142
- rdoc_options:
158
+ rdoc_options:
143
159
  - --main
144
160
  - README.txt
145
- require_paths:
161
+ require_paths:
146
162
  - lib
147
- required_ruby_version: !ruby/object:Gem::Requirement
163
+ required_ruby_version: !ruby/object:Gem::Requirement
148
164
  none: false
149
- requirements:
150
- - - ! '>='
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- required_rubygems_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ hash: 3
169
+ segments:
170
+ - 0
171
+ version: "0"
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
173
  none: false
155
- requirements:
156
- - - ! '>='
157
- - !ruby/object:Gem::Version
158
- version: '0'
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ hash: 3
178
+ segments:
179
+ - 0
180
+ version: "0"
159
181
  requirements: []
182
+
160
183
  rubyforge_project: spreadsheet
161
184
  rubygems_version: 1.8.15
162
185
  signing_key:
163
186
  specification_version: 3
164
187
  summary: The Spreadsheet Library is designed to read and write Spreadsheet Documents
165
188
  test_files: []
189
+