spreadsheet 0.6.1.1 → 0.6.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,3 +1,13 @@
1
+ === 0.6.1.2 / 2008-10-20
2
+
3
+ * 2 Bugfixes
4
+
5
+ * Corrected the Font-Encoding values in Excel::Internals
6
+ (Thanks to Bjorn Hjelle for the Bugreport)
7
+ * Spreadsheet now skips Richtext-Formatting runs and Asian Phonetic
8
+ Settings when reading the SST, fixing a problem where the presence of
9
+ Richtext could lead to an incomplete SST.
10
+
1
11
  === 0.6.1.1 / 2008-10-20
2
12
 
3
13
  * 1 Bugfix
@@ -163,6 +163,7 @@ module Internals
163
163
  }
164
164
  SEPYT_TNEMEPACSE = ESCAPEMENT_TYPES.invert
165
165
  FONT_ENCODINGS = {
166
+ 0x00 => :iso_latin1,
166
167
  0x01 => :default,
167
168
  0x02 => :symbol,
168
169
  0x4d => :apple_roman,
@@ -179,7 +180,7 @@ module Internals
179
180
  0xba => :baltic,
180
181
  0xcc => :cyrillic,
181
182
  0xde => :thai,
182
- 0xee => :latin2,
183
+ 0xee => :iso_latin2,
183
184
  0xff => :oem_latin1,
184
185
  }
185
186
  SGNIDOCNE_TNOF = FONT_ENCODINGS.invert
@@ -197,8 +198,6 @@ module Internals
197
198
  }
198
199
  LEAP_ERROR = Date.new 1900, 2, 28
199
200
  OPCODES = {
200
- :annotation => 0x01b6, # Details unknown
201
- :note => 0x001c, # Details unknown
202
201
  :blank => 0x0201, # BLANK ➜ 6.7
203
202
  :boolerr => 0x0205, # BOOLERR ➜ 6.10
204
203
  :boundsheet => 0x0085, # ●● BOUNDSHEET ➜ 6.12
@@ -99,7 +99,7 @@ module Biff8
99
99
  # List of rt formatting runs (➜ 3.2)
100
100
  # [var.] sz (optional, only if phonetic=1)
101
101
  # Asian Phonetic Settings Block (➜ 3.4.2)
102
- chars, offset, wide, phonetic, richtext, available, owing \
102
+ chars, offset, wide, phonetic, richtext, available, owing, skip \
103
103
  = read_string_header work, count_length
104
104
  string, data = read_string_body work, offset, available, wide > 0
105
105
  if owing > 0
@@ -132,11 +132,20 @@ module Biff8
132
132
  phonetic = (opts >> 2) & 1
133
133
  richtext = (opts >> 3) & 1
134
134
  size = chars * (wide + 1)
135
+ skip = 0
136
+ if richtext > 0
137
+ runs, = work[offset + 1 + count_length, 2].unpack 'v'
138
+ skip = 4 * runs
139
+ end
140
+ if phonetic > 0
141
+ psize, = work[offset + 1 + count_length + richtext * 2, 4].unpack 'V'
142
+ skip += psize
143
+ end
135
144
  flagsize = 1 + count_length + richtext * 2 + phonetic * 4
136
145
  avbl = [work.size - offset, flagsize + size].min
137
146
  have_chrs = (avbl - flagsize) / (1 + wide)
138
147
  owing = chars - have_chrs
139
- [chars, flagsize, wide, phonetic, richtext, avbl, owing]
148
+ [chars, flagsize, wide, phonetic, richtext, avbl, owing, skip]
140
149
  end
141
150
  ##
142
151
  # Insert null-characters into a compressed UTF-16 string
@@ -153,13 +162,13 @@ module Biff8
153
162
  :ole => @data,
154
163
  :reader => self
155
164
  sst.chars, sst.flags, wide, sst.phonetic, sst.richtext, sst.available,
156
- sst.continued_chars = read_string_header work, 2, pos
165
+ sst.continued_chars, skip = read_string_header work, 2, pos
157
166
  sst.wide = wide > 0
158
167
  if sst.continued?
159
168
  @incomplete_sst = sst
160
169
  end
161
170
  @workbook.add_shared_string sst
162
- pos += sst.available
171
+ pos += sst.available + skip
163
172
  end
164
173
  end
165
174
  end
@@ -853,7 +853,7 @@ class Reader
853
853
  @pos += len
854
854
  code = SEDOCPO.fetch(op, op)
855
855
  #puts "0x%04x/%-16s (0x%08x) %5i: %s" % [op, code.inspect, pos, len, work[0,16].inspect]
856
- puts "0x%04x/%-16s %5i: %s" % [op, code.inspect, len, work[0,32].inspect]
856
+ #puts "0x%04x/%-16s %5i: %s" % [op, code.inspect, len, work[0,32].inspect]
857
857
  [ pos, code, len + OPCODE_SIZE, work]
858
858
  end
859
859
  end
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.6.1.1'
45
+ VERSION = '0.6.1.2'
46
46
 
47
47
  ##
48
48
  # Default client Encoding. Change this value if your application uses a
data/test/integration.rb CHANGED
@@ -1030,19 +1030,5 @@ module Spreadsheet
1030
1030
  sheet.name
1031
1031
  assert_not_nil sheet.offset
1032
1032
  end
1033
- def test_file_comment
1034
- source = File.expand_path 'data/test_comment.xls', File.dirname(__FILE__)
1035
- book = Spreadsheet.open source
1036
- sheet = book.worksheet 0
1037
- row = sheet.row 0
1038
- ann = row.annotation 0
1039
- assert_equal 'cellcontent', row.cell(0)
1040
- assert_equal 'cellcomment', ann
1041
- assert_equal 'HW', ann.author
1042
- row = sheet.row 1
1043
- ann = row.annotation 1
1044
- assert_equal 'cellcontent', row.cell(1)
1045
- assert_equal 'annotation', ann
1046
- end
1047
1033
  end
1048
1034
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spreadsheet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1.1
4
+ version: 0.6.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hannes Wyss
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-20 00:00:00 +02:00
12
+ date: 2008-10-21 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency