axlsx 1.0.15 → 1.1.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/.yardopts +1 -0
- data/CHANGELOG.md +58 -2
- data/README.md +425 -207
- data/Rakefile +6 -2
- data/examples/axlsx.xlsx +0 -0
- data/examples/example.csv +1000 -0
- data/examples/example.rb +266 -132
- data/examples/example.xlsx +0 -0
- data/examples/example_streamed.xlsx +0 -0
- data/examples/no-use_autowidth.xlsx +0 -0
- data/examples/real_example.rb +63 -0
- data/examples/sample.png +0 -0
- data/examples/shared_strings_example.xlsx +0 -0
- data/lib/axlsx/content_type/content_type.rb +13 -12
- data/lib/axlsx/content_type/default.rb +10 -6
- data/lib/axlsx/content_type/override.rb +13 -8
- data/lib/axlsx/doc_props/app.rb +38 -41
- data/lib/axlsx/doc_props/core.rb +13 -17
- data/lib/axlsx/drawing/axis.rb +39 -19
- data/lib/axlsx/drawing/bar_3D_chart.rb +34 -32
- data/lib/axlsx/drawing/bar_series.rb +14 -14
- data/lib/axlsx/drawing/cat_axis.rb +16 -14
- data/lib/axlsx/drawing/cat_axis_data.rb +17 -18
- data/lib/axlsx/drawing/chart.rb +40 -41
- data/lib/axlsx/drawing/drawing.rb +27 -12
- data/lib/axlsx/drawing/graphic_frame.rb +22 -21
- data/lib/axlsx/drawing/hlink_click.rb~ +0 -0
- data/lib/axlsx/drawing/hyperlink.rb +96 -0
- data/lib/axlsx/drawing/hyperlink.rb~ +64 -0
- data/lib/axlsx/drawing/line_3D_chart.rb +31 -28
- data/lib/axlsx/drawing/line_series.rb +12 -11
- data/lib/axlsx/drawing/marker.rb +11 -8
- data/lib/axlsx/drawing/named_axis_data.rb +36 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +18 -16
- data/lib/axlsx/drawing/pic.rb +47 -33
- data/lib/axlsx/drawing/picture_locking.rb +22 -18
- data/lib/axlsx/drawing/pie_3D_chart.rb +11 -8
- data/lib/axlsx/drawing/pie_series.rb +16 -12
- data/lib/axlsx/drawing/scaling.rb +11 -10
- data/lib/axlsx/drawing/scatter_chart.rb +69 -0
- data/lib/axlsx/drawing/scatter_series.rb +39 -0
- data/lib/axlsx/drawing/ser_axis.rb +11 -10
- data/lib/axlsx/drawing/series.rb +16 -15
- data/lib/axlsx/drawing/series_title.rb +15 -14
- data/lib/axlsx/drawing/title.rb +27 -26
- data/lib/axlsx/drawing/two_cell_anchor.rb +19 -20
- data/lib/axlsx/drawing/val_axis.rb +9 -7
- data/lib/axlsx/drawing/val_axis_data.rb +18 -17
- data/lib/axlsx/drawing/view_3D.rb +23 -20
- data/lib/axlsx/package.rb +117 -52
- data/lib/axlsx/rels/relationship.rb +27 -8
- data/lib/axlsx/rels/relationships.rb +9 -2
- data/lib/axlsx/stylesheet/border.rb +28 -23
- data/lib/axlsx/stylesheet/border_pr.rb +17 -15
- data/lib/axlsx/stylesheet/cell_alignment.rb +24 -21
- data/lib/axlsx/stylesheet/cell_protection.rb +11 -7
- data/lib/axlsx/stylesheet/cell_style.rb +9 -5
- data/lib/axlsx/stylesheet/color.rb +20 -14
- data/lib/axlsx/stylesheet/fill.rb +8 -5
- data/lib/axlsx/stylesheet/font.rb +22 -14
- data/lib/axlsx/stylesheet/gradient_fill.rb +20 -17
- data/lib/axlsx/stylesheet/gradient_stop.rb +10 -6
- data/lib/axlsx/stylesheet/num_fmt.rb +13 -6
- data/lib/axlsx/stylesheet/pattern_fill.rb +26 -10
- data/lib/axlsx/stylesheet/styles.rb +55 -41
- data/lib/axlsx/stylesheet/table_style.rb +10 -4
- data/lib/axlsx/stylesheet/table_style_element.rb +11 -7
- data/lib/axlsx/stylesheet/table_styles.rb +12 -8
- data/lib/axlsx/stylesheet/xf.rb +30 -25
- data/lib/axlsx/util/cbf.rb +69 -33
- data/lib/axlsx/util/constants.rb +39 -20
- data/lib/axlsx/util/doc/_index.html +84 -0
- data/lib/axlsx/util/doc/class_list.html +47 -0
- data/lib/axlsx/util/doc/css/common.css +1 -0
- data/lib/axlsx/util/doc/css/full_list.css +55 -0
- data/lib/axlsx/util/doc/css/style.css +322 -0
- data/lib/axlsx/util/doc/file_list.html +46 -0
- data/lib/axlsx/util/doc/frames.html +13 -0
- data/lib/axlsx/util/doc/index.html +84 -0
- data/lib/axlsx/util/doc/js/app.js +205 -0
- data/lib/axlsx/util/doc/js/full_list.js +173 -0
- data/lib/axlsx/util/doc/js/jquery.js +16 -0
- data/lib/axlsx/util/doc/method_list.html +46 -0
- data/lib/axlsx/util/doc/top-level-namespace.html +95 -0
- data/lib/axlsx/util/font_tables.rb~ +0 -0
- data/lib/axlsx/util/ms_off_crypto.rb +10 -10
- data/lib/axlsx/util/parser.rb +1 -0
- data/lib/axlsx/util/simple_typed_list.rb +20 -10
- data/lib/axlsx/util/storage.rb +1 -1
- data/lib/axlsx/util/validators.rb +23 -7
- data/lib/axlsx/version.rb +5 -2
- data/lib/axlsx/workbook/shared_strings_table.rb +68 -0
- data/lib/axlsx/workbook/shared_strings_table.rb~ +69 -0
- data/lib/axlsx/workbook/workbook.rb +82 -26
- data/lib/axlsx/workbook/worksheet/cell.rb +166 -130
- data/lib/axlsx/workbook/worksheet/col.rb +114 -0
- data/lib/axlsx/workbook/worksheet/col.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +29 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
- data/lib/axlsx/workbook/worksheet/row.rb +53 -21
- data/lib/axlsx/workbook/worksheet/shared_strings_table.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/table.rb +96 -0
- data/lib/axlsx/workbook/worksheet/table.rb~ +97 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +275 -124
- data/lib/axlsx.rb +41 -14
- data/lib/schema/dc.xsd +5 -5
- data/lib/schema/dcmitype.xsd +5 -3
- data/lib/schema/dcterms.xsd +15 -15
- data/lib/schema/opc-coreProperties.xsd +6 -2
- data/lib/schema/xml.xsd +7 -8
- data/test/benchmark.rb +73 -0
- data/test/content_type/tc_content_type.rb +31 -31
- data/test/content_type/tc_default.rb +9 -22
- data/test/content_type/tc_override.rb +8 -21
- data/test/doc_props/tc_app.rb +2 -8
- data/test/doc_props/tc_core.rb +6 -7
- data/test/drawing/tc_axis.rb +7 -3
- data/test/drawing/tc_bar_3D_chart.rb +6 -7
- data/test/drawing/tc_bar_series.rb +4 -5
- data/test/drawing/tc_cat_axis.rb +2 -3
- data/test/drawing/tc_cat_axis_data.rb +2 -3
- data/test/drawing/tc_chart.rb +13 -14
- data/test/drawing/tc_drawing.rb +7 -8
- data/test/drawing/tc_graphic_frame.rb +3 -4
- data/test/drawing/tc_hyperlink.rb +69 -0
- data/test/drawing/tc_line_3d_chart.rb +5 -6
- data/test/drawing/tc_line_series.rb +3 -4
- data/test/drawing/tc_marker.rb +3 -4
- data/test/drawing/tc_one_cell_anchor.rb +6 -7
- data/test/drawing/tc_pic.rb +13 -8
- data/test/drawing/tc_picture_locking.rb +2 -3
- data/test/drawing/tc_pie_3D_chart.rb +5 -6
- data/test/drawing/tc_pie_series.rb +4 -5
- data/test/drawing/tc_scaling.rb +3 -4
- data/test/drawing/tc_scatter_chart.rb +43 -0
- data/test/drawing/tc_scatter_series.rb +20 -0
- data/test/drawing/tc_ser_axis.rb +2 -3
- data/test/drawing/tc_series.rb +4 -5
- data/test/drawing/tc_series_title.rb +4 -5
- data/test/drawing/tc_title.rb +4 -5
- data/test/drawing/tc_two_cell_anchor.rb +4 -5
- data/test/drawing/tc_val_axis.rb +2 -3
- data/test/drawing/tc_val_axis_data.rb +2 -3
- data/test/drawing/tc_view_3D.rb +6 -7
- data/test/profile.rb +34 -0
- data/test/rels/tc_relationship.rb +10 -6
- data/test/rels/tc_relationships.rb +4 -5
- data/test/stylesheet/tc_border.rb +3 -4
- data/test/stylesheet/tc_border_pr.rb +3 -4
- data/test/stylesheet/tc_cell_alignment.rb +10 -6
- data/test/stylesheet/tc_cell_protection.rb +2 -3
- data/test/stylesheet/tc_cell_style.rb +2 -3
- data/test/stylesheet/tc_color.rb +2 -3
- data/test/stylesheet/tc_fill.rb +1 -2
- data/test/stylesheet/tc_font.rb +12 -5
- data/test/stylesheet/tc_gradient_fill.rb +1 -2
- data/test/stylesheet/tc_gradient_stop.rb +1 -2
- data/test/stylesheet/tc_num_fmt.rb +1 -2
- data/test/stylesheet/tc_pattern_fill.rb +3 -4
- data/test/stylesheet/tc_styles.rb +31 -6
- data/test/stylesheet/tc_table_style.rb +2 -3
- data/test/stylesheet/tc_table_style_element.rb +2 -3
- data/test/stylesheet/tc_table_styles.rb +3 -4
- data/test/stylesheet/tc_xf.rb +16 -17
- data/test/tc_axlsx.rb +39 -0
- data/test/tc_helper.rb +3 -0
- data/test/tc_package.rb +43 -9
- data/test/util/tc_simple_typed_list.rb +8 -9
- data/test/util/tc_validators.rb +7 -8
- data/test/workbook/tc_shared_strings_table.rb +38 -0
- data/test/workbook/tc_workbook.rb +32 -6
- data/test/workbook/worksheet/table/tc_table.rb +71 -0
- data/test/workbook/worksheet/table/tc_table.rb~ +72 -0
- data/test/workbook/worksheet/tc_cell.rb +80 -13
- data/test/workbook/worksheet/tc_col.rb +59 -0
- data/test/workbook/worksheet/tc_col.rb~ +10 -0
- data/test/workbook/worksheet/tc_date_time_converter.rb +132 -0
- data/test/workbook/worksheet/tc_page_margins.rb +97 -0
- data/test/workbook/worksheet/tc_row.rb +54 -4
- data/test/workbook/worksheet/tc_worksheet.rb +205 -31
- metadata +78 -84
- data/examples/example.rb~ +0 -112
- data/test/drawing/tc_line_series.tc~ +0 -34
- data/test/drawing/tc_picture_locking.rb~ +0 -77
data/lib/axlsx/util/cbf.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
|
|
3
4
|
# The Cfb class is a MS-OFF-CRYPTOGRAPHY specific OLE (MS-CBF) writer implementation. No attempt is made to re-invent the wheel for read/write of compound binary files.
|
|
@@ -10,13 +11,13 @@ module Axlsx
|
|
|
10
11
|
VERSION_PACKING = 'l s30 l3'
|
|
11
12
|
|
|
12
13
|
# The serialization for the MS-OFF-CRYPTO dataspace map stream
|
|
13
|
-
DATA_SPACE_MAP_PACKING = 'l6 s16 l s25'
|
|
14
|
+
DATA_SPACE_MAP_PACKING = 'l6 s16 l s25 x2'
|
|
14
15
|
|
|
15
16
|
# The serialization for the MS-OFF-CRYPTO strong encrytion data space stream
|
|
16
|
-
STRONG_ENCRYPTION_DATA_SPACE_PACKING = 'l3
|
|
17
|
+
STRONG_ENCRYPTION_DATA_SPACE_PACKING = 'l3 s26'
|
|
17
18
|
|
|
18
19
|
# The serialization for the MS-OFF-CRYPTO primary stream
|
|
19
|
-
PRIMARY_PACKING = 'l3 s38 l
|
|
20
|
+
PRIMARY_PACKING = 'l3 s38 l s40 l3 x12 l'
|
|
20
21
|
|
|
21
22
|
# The cutoff size that determines if a stream should be in the mini-fat or the fat
|
|
22
23
|
MINI_CUTOFF = 4096
|
|
@@ -28,6 +29,7 @@ module Axlsx
|
|
|
28
29
|
# @param [MsOffCrypto] ms_off_crypto
|
|
29
30
|
def initialize(ms_off_crypto)
|
|
30
31
|
@file_name = ms_off_crypto.file_name
|
|
32
|
+
@ms_off_crypto = ms_off_crypto
|
|
31
33
|
create_storages
|
|
32
34
|
mini_fat_stream
|
|
33
35
|
mini_fat
|
|
@@ -95,6 +97,17 @@ module Axlsx
|
|
|
95
97
|
@header ||= create_header
|
|
96
98
|
end
|
|
97
99
|
|
|
100
|
+
# returns the encryption info from the ms_off_crypt object provided during intialization
|
|
101
|
+
# @return [String] encryption info
|
|
102
|
+
def encryption_info
|
|
103
|
+
@ms_off_crypto.encryption_info
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# returns the encrypted package from the ms_off_crypt object provided during initalization
|
|
107
|
+
# @return [String] encrypted package
|
|
108
|
+
def encrypted_package
|
|
109
|
+
@ms_off_crypto.encrypted_package
|
|
110
|
+
end
|
|
98
111
|
|
|
99
112
|
# writes the compound binary file to disk
|
|
100
113
|
def save
|
|
@@ -114,12 +127,11 @@ module Axlsx
|
|
|
114
127
|
# Generates the storages required for ms-office-cryptography cfb
|
|
115
128
|
def create_storages
|
|
116
129
|
@storages = []
|
|
117
|
-
@encryption_info = ms_off_crypto.encryption_info
|
|
118
|
-
@encrypted_package = ms_off_crypto.encrypted_package
|
|
119
|
-
|
|
120
|
-
@storages.
|
|
121
|
-
@storages << Storage.new('
|
|
122
|
-
@storages << Storage.new('EncryptedPackage', :data=>@encrypted_package, :color=>Storage::COLORS[:red], :size=>@encrypted_package.size)
|
|
130
|
+
@encryption_info = @ms_off_crypto.encryption_info
|
|
131
|
+
@encrypted_package = @ms_off_crypto.encrypted_package
|
|
132
|
+
|
|
133
|
+
@storages << Storage.new('EncryptionInfo', :data=>encryption_info, :left=>3, :right=>11) # example shows right child. do we need the summary info????
|
|
134
|
+
@storages << Storage.new('EncryptedPackage', :data=>encrypted_package, :color=>Storage::COLORS[:red])
|
|
123
135
|
@storages << Storage.new([6].pack("c")+"DataSpaces", :child=>5, :modified =>129685612740945580, :created=>129685612740819979)
|
|
124
136
|
@storages << version
|
|
125
137
|
@storages << data_space_map
|
|
@@ -128,6 +140,12 @@ module Axlsx
|
|
|
128
140
|
@storages << Storage.new('TransformInfo', :color => Storage::COLORS[:red], :child=>9, :created=>129685612740834130, :modified=>129685612740943959)
|
|
129
141
|
@storages << Storage.new('StrongEncryptionTransform', :child=>10, :created=>129685612740834169, :modified=>129685612740942280)
|
|
130
142
|
@storages << primary
|
|
143
|
+
# @storages << summary_information
|
|
144
|
+
# @storages << document_summary_information
|
|
145
|
+
|
|
146
|
+
# we do this at the end as we need to build the minifat stream to determine the size. #HOWEVER - it looks like the size should not include the padding?
|
|
147
|
+
@storages.unshift Storage.new('Root Entry', :type=>Storage::TYPES[:root], :color=>Storage::COLORS[:red], :child=>1, :data => mini_fat_stream)
|
|
148
|
+
|
|
131
149
|
end
|
|
132
150
|
|
|
133
151
|
# generates the mini fat stream
|
|
@@ -135,10 +153,11 @@ module Axlsx
|
|
|
135
153
|
def create_mini_fat_stream
|
|
136
154
|
mfs = []
|
|
137
155
|
@storages.select{ |s| s.type == Storage::TYPES[:stream] && s.size < MINI_CUTOFF}.each_with_index do |stream, index|
|
|
156
|
+
puts "#{stream.name.pack('c*')}: #{stream.data.size}"
|
|
138
157
|
mfs.concat stream.data
|
|
139
|
-
mfs.concat Array.new(64 - (mfs.size % 64), 0) if mfs.size % 64
|
|
158
|
+
mfs.concat Array.new(64 - (mfs.size % 64), 0) if mfs.size % 64 > 0
|
|
159
|
+
puts "mini fat stream size: #{mfs.size}"
|
|
140
160
|
end
|
|
141
|
-
@storages[0].size = mfs.size
|
|
142
161
|
mfs.concat(Array.new(512 - (mfs.size % 512), 0))
|
|
143
162
|
mfs.pack 'c*'
|
|
144
163
|
end
|
|
@@ -149,7 +168,7 @@ module Axlsx
|
|
|
149
168
|
mfs = []
|
|
150
169
|
@storages.select{ |s| s.type == Storage::TYPES[:stream] && s.size >= MINI_CUTOFF}.each_with_index do |stream, index|
|
|
151
170
|
mfs.concat stream.data
|
|
152
|
-
mfs.concat Array.new(512 - (mfs.size % 512), 0) if mfs.size % 512
|
|
171
|
+
mfs.concat Array.new(512 - (mfs.size % 512), 0) if mfs.size % 512 > 0
|
|
153
172
|
end
|
|
154
173
|
mfs.pack 'c*'
|
|
155
174
|
end
|
|
@@ -214,7 +233,7 @@ module Axlsx
|
|
|
214
233
|
# creates the stron encryption data space storage
|
|
215
234
|
# @return [Storgae]
|
|
216
235
|
def create_strong_encryption_data_space
|
|
217
|
-
v_stream = [8,1,50,"StrongEncryptionTransform".bytes.to_a].flatten.pack STRONG_ENCRYPTION_DATA_SPACE_PACKING
|
|
236
|
+
v_stream = [8,1,50,"StrongEncryptionTransform".bytes.to_a,0].flatten.pack STRONG_ENCRYPTION_DATA_SPACE_PACKING
|
|
218
237
|
Storage.new("StrongEncryptionDataSpace", :data=>v_stream, :size => v_stream.size)
|
|
219
238
|
end
|
|
220
239
|
|
|
@@ -222,41 +241,58 @@ module Axlsx
|
|
|
222
241
|
# @return [Storgae]
|
|
223
242
|
def create_primary
|
|
224
243
|
v_stream = [88,1,76,"{FF9A3F03-56EF-4613-BDD5-5A41C1D07246}".bytes.to_a].flatten
|
|
225
|
-
v_stream.concat [78, "Microsoft.Container.EncryptionTransform".bytes.to_a,1,1,1,4].flatten
|
|
244
|
+
v_stream.concat [78, "Microsoft.Container.EncryptionTransform".bytes.to_a,0,1,1,1,4].flatten
|
|
226
245
|
v_stream = v_stream.pack PRIMARY_PACKING
|
|
227
246
|
Storage.new([6].pack("c")+"Primary", :data=>v_stream)
|
|
228
247
|
end
|
|
229
248
|
|
|
230
249
|
|
|
231
|
-
SUMMARY_INFORMATION_PACKING = ""
|
|
232
250
|
# creates the summary information storage
|
|
233
251
|
# @return [Storage]
|
|
234
252
|
def create_summary_information
|
|
235
|
-
# FEFF 0000 030A 0100 0000 0000 0000 0000
|
|
236
|
-
# 0000 0000 0000 0000 0100 0000 E085 9FF2
|
|
237
|
-
# F94F 6810 AB91 0800 2B27 B3D9 3000 0000
|
|
238
|
-
# AC00 0000 0700 0000 0100 0000 4000 0000
|
|
239
|
-
# 0400 0000 4800 0000 0800 0000 5800 0000
|
|
240
|
-
# 1200 0000 6800 0000 0C00 0000 8C00 0000
|
|
241
|
-
# 0D00 0000 9800 0000 1300 0000 A400 0000
|
|
242
|
-
# 0200 0000 E9FD 0000 1E00 0000 0800 0000
|
|
243
|
-
# 7261 6E64 796D 0000 1E00 0000 0800 0000
|
|
244
|
-
# 7261 6E64 796D 0000 1E00 0000 1C00 0000
|
|
245
|
-
# 4D69 6372 6F73 6F66 7420 4D61 6369 6E74
|
|
246
|
-
# 6F73 6820 4578 6365 6C00 0000 4000 0000
|
|
247
|
-
# 10AC 5396 60BC CC01 4000 0000 40F4 FDAF
|
|
248
|
-
# 60BC CC01 0300 0000 0100 0000
|
|
249
253
|
v_stream = []
|
|
250
|
-
v_stream
|
|
251
|
-
|
|
254
|
+
v_stream.concat [0xFEFF, 0x0000, 0x030A, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000]
|
|
255
|
+
v_stream.concat [0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0xE085, 0x9FF2]
|
|
256
|
+
v_stream.concat [0xF94F, 0x6810, 0xAB91, 0x0800, 0x2B27, 0xB3D9, 0x3000, 0x0000]
|
|
257
|
+
v_stream.concat [0xAC00, 0x0000, 0x0700, 0x0000, 0x0100, 0x0000, 0x4000, 0x0000]
|
|
258
|
+
v_stream.concat [0x0400, 0x0000, 0x4800, 0x0000, 0x0800, 0x0000, 0x5800, 0x0000]
|
|
259
|
+
v_stream.concat [0x1200, 0x0000, 0x6800, 0x0000, 0x0C00, 0x0000, 0x8C00, 0x0000]
|
|
260
|
+
v_stream.concat [0x0D00, 0x0000, 0x9800, 0x0000, 0x1300, 0x0000, 0xA400, 0x0000]
|
|
261
|
+
v_stream.concat [0x0200, 0x0000, 0xE9FD, 0x0000, 0x1E00, 0x0000, 0x0800, 0x0000]
|
|
262
|
+
v_stream.concat [0x7261, 0x6E64, 0x796D, 0x0000, 0x1E00, 0x0000, 0x0800, 0x0000]
|
|
263
|
+
v_stream.concat [0x7261, 0x6E64, 0x796D, 0x0000, 0x1E00, 0x0000, 0x1C00, 0x0000]
|
|
264
|
+
v_stream.concat [0x4D69, 0x6372, 0x6F73, 0x6F66, 0x7420, 0x4D61, 0x6369, 0x6E74]
|
|
265
|
+
v_stream.concat [0x6F73, 0x6820, 0x4578, 0x6365, 0x6C00, 0x0000, 0x4000, 0x0000]
|
|
266
|
+
v_stream.concat [0x10AC, 0x5396, 0x60BC, 0xCC01, 0x4000, 0x0000, 0x40F4, 0xFDAF]
|
|
267
|
+
v_stream.concat [0x60BC, 0xCC01, 0x0300, 0x0000, 0x0100, 0x0000]
|
|
268
|
+
|
|
269
|
+
v_stream = v_stream.pack "s*"
|
|
270
|
+
|
|
271
|
+
Storage.new([5].pack('c')+"SummaryInformation", :data=>v_stream, :left => 2)
|
|
252
272
|
end
|
|
253
273
|
|
|
254
|
-
|
|
274
|
+
|
|
255
275
|
# creates the document summary information storage
|
|
256
276
|
# @return [Storage]
|
|
257
277
|
def create_document_summary_information
|
|
258
278
|
v_stream = []
|
|
259
|
-
v_stream
|
|
279
|
+
v_stream.concat [0xFEFF, 0x0000, 0x030A, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000]
|
|
280
|
+
v_stream.concat [0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0000, 0x02D5, 0xCDD5]
|
|
281
|
+
v_stream.concat [0x9C2E, 0x1B10, 0x9397, 0x0800, 0x2B2C, 0xF9AE, 0x3000, 0x0000]
|
|
282
|
+
v_stream.concat [0xCC00, 0x0000, 0x0900, 0x0000, 0x0100, 0x0000, 0x5000, 0x0000]
|
|
283
|
+
v_stream.concat [0x0F00, 0x0000, 0x5800, 0x0000, 0x1700, 0x0000, 0x6400, 0x0000]
|
|
284
|
+
v_stream.concat [0x0B00, 0x0000, 0x6C00, 0x0000, 0x1000, 0x0000, 0x7400, 0x0000]
|
|
285
|
+
v_stream.concat [0x1300, 0x0000, 0x7C00, 0x0000, 0x1600, 0x0000, 0x8400, 0x0000]
|
|
286
|
+
v_stream.concat [0x0D00, 0x0000, 0x8C00, 0x0000, 0x0C00, 0x0000, 0x9F00, 0x0000]
|
|
287
|
+
v_stream.concat [0x0200, 0x0000, 0xE9FD, 0x0000, 0x1E00, 0x0000, 0x0400, 0x0000]
|
|
288
|
+
v_stream.concat [0x0000, 0x0000, 0x0300, 0x0000, 0x0000, 0x0C00, 0x0B00, 0x0000]
|
|
289
|
+
v_stream.concat [0x0000, 0x0000, 0x0B00, 0x0000, 0x0000, 0x0000, 0x0B00, 0x0000]
|
|
290
|
+
v_stream.concat [0x0000, 0x0000, 0x0B00, 0x0000, 0x0000, 0x0000, 0x1E10, 0x0000]
|
|
291
|
+
v_stream.concat [0x0100, 0x0000, 0x0700, 0x0000, 0x5368, 0x6565, 0x7431, 0x000C]
|
|
292
|
+
v_stream.concat [0x1000, 0x0002, 0x0000, 0x001E, 0x0000, 0x0013, 0x0000, 0x00E3]
|
|
293
|
+
v_stream.concat [0x83AF, 0xE383, 0xBCE3, 0x82AF, 0xE382, 0xB7E3, 0x83BC, 0xE383]
|
|
294
|
+
v_stream.concat [0x8800, 0x0300, 0x0000, 0x0100, 0x0000, 0x0000]
|
|
295
|
+
v_stream = v_stream.pack 'c*'
|
|
260
296
|
Storage.new([5].pack('c')+"DocumentSummaryInformation", :data=>v_stream)
|
|
261
297
|
end
|
|
262
298
|
|
data/lib/axlsx/util/constants.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
module Axlsx
|
|
2
3
|
|
|
3
4
|
# XML Encoding
|
|
@@ -20,7 +21,7 @@ module Axlsx
|
|
|
20
21
|
|
|
21
22
|
# dc elements (core) namespace
|
|
22
23
|
CORE_NS_DC = "http://purl.org/dc/elements/1.1/"
|
|
23
|
-
|
|
24
|
+
|
|
24
25
|
# dcmit (core) namespcace
|
|
25
26
|
CORE_NS_DCMIT = "http://purl.org/dc/dcmitype/"
|
|
26
27
|
|
|
@@ -29,10 +30,10 @@ module Axlsx
|
|
|
29
30
|
|
|
30
31
|
# xml schema namespace
|
|
31
32
|
CORE_NS_XSI = "http://www.w3.org/2001/XMLSchema-instance"
|
|
32
|
-
|
|
33
|
+
|
|
33
34
|
# spreadsheet drawing namespace
|
|
34
35
|
XML_NS_XDR = "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
|
|
35
|
-
|
|
36
|
+
|
|
36
37
|
# drawing namespace
|
|
37
38
|
XML_NS_A = "http://schemas.openxmlformats.org/drawingml/2006/main"
|
|
38
39
|
|
|
@@ -42,13 +43,12 @@ module Axlsx
|
|
|
42
43
|
# relationships namespace
|
|
43
44
|
XML_NS_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"
|
|
44
45
|
|
|
45
|
-
|
|
46
46
|
# relationships name space
|
|
47
47
|
RELS_R = "http://schemas.openxmlformats.org/package/2006/relationships"
|
|
48
48
|
|
|
49
49
|
# table rels namespace
|
|
50
50
|
TABLE_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
# workbook rels namespace
|
|
53
53
|
WORKBOOK_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
|
|
54
54
|
|
|
@@ -64,6 +64,9 @@ module Axlsx
|
|
|
64
64
|
# styles rels namespace
|
|
65
65
|
STYLES_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"
|
|
66
66
|
|
|
67
|
+
# shared strings namespace
|
|
68
|
+
SHARED_STRINGS_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"
|
|
69
|
+
|
|
67
70
|
# drawing rels namespace
|
|
68
71
|
DRAWING_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"
|
|
69
72
|
|
|
@@ -73,7 +76,10 @@ module Axlsx
|
|
|
73
76
|
# image rels namespace
|
|
74
77
|
IMAGE_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
|
|
75
78
|
|
|
76
|
-
#
|
|
79
|
+
# image rels namespace
|
|
80
|
+
HYPERLINK_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"
|
|
81
|
+
|
|
82
|
+
# table content type
|
|
77
83
|
TABLE_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"
|
|
78
84
|
|
|
79
85
|
# workbook content type
|
|
@@ -83,14 +89,14 @@ module Axlsx
|
|
|
83
89
|
APP_CT = "application/vnd.openxmlformats-officedocument.extended-properties+xml"
|
|
84
90
|
|
|
85
91
|
# rels content type
|
|
86
|
-
RELS_CT = "application/vnd.openxmlformats-package.relationships+xml"
|
|
92
|
+
RELS_CT = "application/vnd.openxmlformats-package.relationships+xml"
|
|
87
93
|
|
|
88
94
|
# styles content type
|
|
89
95
|
STYLES_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"
|
|
90
96
|
|
|
91
97
|
# xml content type
|
|
92
98
|
XML_CT = "application/xml"
|
|
93
|
-
|
|
99
|
+
|
|
94
100
|
# worksheet content type
|
|
95
101
|
WORKSHEET_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
|
|
96
102
|
|
|
@@ -120,7 +126,7 @@ module Axlsx
|
|
|
120
126
|
|
|
121
127
|
# jpeg extension
|
|
122
128
|
JPEG_EX = "jpeg"
|
|
123
|
-
|
|
129
|
+
|
|
124
130
|
# gif extension
|
|
125
131
|
GIF_EX = "gif"
|
|
126
132
|
|
|
@@ -135,10 +141,13 @@ module Axlsx
|
|
|
135
141
|
|
|
136
142
|
# styles part
|
|
137
143
|
STYLES_PN = "styles.xml"
|
|
138
|
-
|
|
144
|
+
|
|
145
|
+
# shared_strings part
|
|
146
|
+
SHARED_STRINGS_PN = "sharedStrings.xml"
|
|
147
|
+
|
|
139
148
|
# app part
|
|
140
149
|
APP_PN = "docProps/app.xml"
|
|
141
|
-
|
|
150
|
+
|
|
142
151
|
# core part
|
|
143
152
|
CORE_PN = "docProps/core.xml"
|
|
144
153
|
|
|
@@ -163,32 +172,38 @@ module Axlsx
|
|
|
163
172
|
# drawing rels part
|
|
164
173
|
DRAWING_RELS_PN = "drawings/_rels/drawing%d.xml.rels"
|
|
165
174
|
|
|
175
|
+
# drawing part
|
|
176
|
+
TABLE_PN = "tables/table%d.xml"
|
|
177
|
+
|
|
166
178
|
# chart part
|
|
167
179
|
CHART_PN = "charts/chart%d.xml"
|
|
168
180
|
|
|
169
181
|
# chart part
|
|
170
182
|
IMAGE_PN = "media/image%d.%s"
|
|
171
183
|
|
|
184
|
+
# location of schema files for validation
|
|
185
|
+
SCHEMA_BASE = File.dirname(__FILE__)+'/../../schema/'
|
|
186
|
+
|
|
172
187
|
# App validation schema
|
|
173
|
-
APP_XSD = "
|
|
188
|
+
APP_XSD = SCHEMA_BASE + "shared-documentPropertiesExtended.xsd"
|
|
174
189
|
|
|
175
190
|
# core validation schema
|
|
176
|
-
CORE_XSD = "
|
|
191
|
+
CORE_XSD = SCHEMA_BASE + "opc-coreProperties.xsd"
|
|
177
192
|
|
|
178
193
|
# content types validation schema
|
|
179
|
-
CONTENT_TYPES_XSD = "
|
|
194
|
+
CONTENT_TYPES_XSD = SCHEMA_BASE + "opc-contentTypes.xsd"
|
|
180
195
|
|
|
181
196
|
# rels validation schema
|
|
182
|
-
RELS_XSD = "
|
|
197
|
+
RELS_XSD = SCHEMA_BASE + "opc-relationships.xsd"
|
|
183
198
|
|
|
184
199
|
# spreadsheetML validation schema
|
|
185
|
-
SML_XSD = "
|
|
186
|
-
|
|
200
|
+
SML_XSD = SCHEMA_BASE + "sml.xsd"
|
|
201
|
+
|
|
187
202
|
# drawing validation schema
|
|
188
|
-
DRAWING_XSD = "
|
|
203
|
+
DRAWING_XSD = SCHEMA_BASE + "dml-spreadsheetDrawing.xsd"
|
|
189
204
|
|
|
190
205
|
# number format id for pecentage formatting using the default formatting id.
|
|
191
|
-
NUM_FMT_PERCENT = 9
|
|
206
|
+
NUM_FMT_PERCENT = 9
|
|
192
207
|
|
|
193
208
|
# number format id for date format like 2011/11/13
|
|
194
209
|
NUM_FMT_YYYYMMDD = 100
|
|
@@ -203,7 +218,7 @@ module Axlsx
|
|
|
203
218
|
STYLE_DATE = 2
|
|
204
219
|
|
|
205
220
|
# error messages RestrictionValidor
|
|
206
|
-
ERR_RESTRICTION = "Invalid Data: %s. %s must be one of %s."
|
|
221
|
+
ERR_RESTRICTION = "Invalid Data: %s. %s must be one of %s."
|
|
207
222
|
|
|
208
223
|
# error message DataTypeValidator
|
|
209
224
|
ERR_TYPE = "Invalid Data %s for %s. must be %s."
|
|
@@ -211,6 +226,10 @@ module Axlsx
|
|
|
211
226
|
# error message for RegexValidator
|
|
212
227
|
ERR_REGEX = "Invalid Data. %s does not match %s."
|
|
213
228
|
|
|
229
|
+
# error message for sheets that use a name which is longer than 31 bytes
|
|
230
|
+
ERR_SHEET_NAME_TOO_LONG = "Your worksheet name '%s' is too long. Worksheet names must be 31 characters (bytes) or less"
|
|
231
|
+
|
|
214
232
|
# error message for duplicate sheet names
|
|
215
233
|
ERR_DUPLICATE_SHEET_NAME = "There is already a worksheet in this workbook named '%s'. Please use a unique name"
|
|
234
|
+
|
|
216
235
|
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
6
|
+
<title>
|
|
7
|
+
Documentation by YARD 0.7.5
|
|
8
|
+
|
|
9
|
+
</title>
|
|
10
|
+
|
|
11
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
|
|
12
|
+
|
|
13
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
|
14
|
+
|
|
15
|
+
<script type="text/javascript" charset="utf-8">
|
|
16
|
+
relpath = '';
|
|
17
|
+
if (relpath != '') relpath += '/';
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
|
21
|
+
|
|
22
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
</head>
|
|
26
|
+
<body>
|
|
27
|
+
<script type="text/javascript" charset="utf-8">
|
|
28
|
+
if (window.top.frames.main) document.body.className = 'frames';
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<div id="header">
|
|
32
|
+
<div id="menu">
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
<span class="title"></span>
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div id="search">
|
|
42
|
+
|
|
43
|
+
<a id="class_list_link" href="#">Class List</a>
|
|
44
|
+
|
|
45
|
+
<a id="method_list_link" href="#">Method List</a>
|
|
46
|
+
|
|
47
|
+
<a id="file_list_link" href="#">File List</a>
|
|
48
|
+
|
|
49
|
+
</div>
|
|
50
|
+
<div class="clear"></div>
|
|
51
|
+
</div>
|
|
52
|
+
|
|
53
|
+
<iframe id="search_frame"></iframe>
|
|
54
|
+
|
|
55
|
+
<div id="content"><h1 class="noborder title">Documentation by YARD 0.7.5</h1>
|
|
56
|
+
<div id="listing">
|
|
57
|
+
<h1 class="alphaindex">Alphabetic Index</h1>
|
|
58
|
+
|
|
59
|
+
<div class="clear"></div>
|
|
60
|
+
<h2>Namespace Listing A-Z</h2>
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
<table>
|
|
66
|
+
<tr>
|
|
67
|
+
<td valign='top' width="33%">
|
|
68
|
+
|
|
69
|
+
</td>
|
|
70
|
+
</tr>
|
|
71
|
+
</table>
|
|
72
|
+
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
</div>
|
|
76
|
+
|
|
77
|
+
<div id="footer">
|
|
78
|
+
Generated on Wed Apr 18 20:10:42 2012 by
|
|
79
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
80
|
+
0.7.5 (ruby-1.9.3).
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
</body>
|
|
84
|
+
</html>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
3
|
+
<html>
|
|
4
|
+
<head>
|
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
6
|
+
|
|
7
|
+
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
|
8
|
+
|
|
9
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
|
14
|
+
|
|
15
|
+
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<base id="base_target" target="_parent" />
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<script type="text/javascript" charset="utf-8">
|
|
22
|
+
if (window.top.frames.main) {
|
|
23
|
+
document.getElementById('base_target').target = 'main';
|
|
24
|
+
document.body.className = 'frames';
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
<div id="content">
|
|
28
|
+
<h1 id="full_list_header">Class List</h1>
|
|
29
|
+
<div id="nav">
|
|
30
|
+
|
|
31
|
+
<a target="_self" href="class_list.html">Classes</a>
|
|
32
|
+
|
|
33
|
+
<a target="_self" href="method_list.html">Methods</a>
|
|
34
|
+
|
|
35
|
+
<a target="_self" href="file_list.html">Files</a>
|
|
36
|
+
|
|
37
|
+
</div>
|
|
38
|
+
<div id="search">Search: <input type="text" /></div>
|
|
39
|
+
|
|
40
|
+
<ul id="full_list" class="class">
|
|
41
|
+
<li><span class='object_link'><a href="top-level-namespace.html" title=" (root)">Top Level Namespace</a></span></li>
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
</ul>
|
|
45
|
+
</div>
|
|
46
|
+
</body>
|
|
47
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/* Override this file with custom rules */
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
body {
|
|
2
|
+
margin: 0;
|
|
3
|
+
font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
|
|
4
|
+
font-size: 13px;
|
|
5
|
+
height: 101%;
|
|
6
|
+
overflow-x: hidden;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; }
|
|
10
|
+
.clear { clear: both; }
|
|
11
|
+
#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; }
|
|
12
|
+
#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; }
|
|
13
|
+
#full_list { padding: 0; list-style: none; margin-left: 0; }
|
|
14
|
+
#full_list ul { padding: 0; }
|
|
15
|
+
#full_list li { padding: 5px; padding-left: 12px; margin: 0; font-size: 1.1em; list-style: none; }
|
|
16
|
+
#noresults { padding: 7px 12px; }
|
|
17
|
+
#content.insearch #noresults { margin-left: 7px; }
|
|
18
|
+
ul.collapsed ul, ul.collapsed li { display: none; }
|
|
19
|
+
ul.collapsed.search_uncollapsed { display: block; }
|
|
20
|
+
ul.collapsed.search_uncollapsed li { display: list-item; }
|
|
21
|
+
li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; }
|
|
22
|
+
li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; }
|
|
23
|
+
li { color: #888; cursor: pointer; }
|
|
24
|
+
li.deprecated { text-decoration: line-through; font-style: italic; }
|
|
25
|
+
li.r1 { background: #f0f0f0; }
|
|
26
|
+
li.r2 { background: #fafafa; }
|
|
27
|
+
li:hover { background: #ddd; }
|
|
28
|
+
li small:before { content: "("; }
|
|
29
|
+
li small:after { content: ")"; }
|
|
30
|
+
li small.search_info { display: none; }
|
|
31
|
+
a:link, a:visited { text-decoration: none; color: #05a; }
|
|
32
|
+
li.clicked { background: #05a; color: #ccc; }
|
|
33
|
+
li.clicked a:link, li.clicked a:visited { color: #eee; }
|
|
34
|
+
li.clicked a.toggle { opacity: 0.5; background-position: bottom right; }
|
|
35
|
+
li.collapsed.clicked a.toggle { background-position: top right; }
|
|
36
|
+
#search input { border: 1px solid #bbb; -moz-border-radius: 3px; -webkit-border-radius: 3px; }
|
|
37
|
+
#nav { margin-left: 10px; font-size: 0.9em; display: none; color: #aaa; }
|
|
38
|
+
#nav a:link, #nav a:visited { color: #358; }
|
|
39
|
+
#nav a:hover { background: transparent; color: #5af; }
|
|
40
|
+
|
|
41
|
+
.frames #content h1 { margin-top: 0; }
|
|
42
|
+
.frames li { white-space: nowrap; cursor: normal; }
|
|
43
|
+
.frames li small { display: block; font-size: 0.8em; }
|
|
44
|
+
.frames li small:before { content: ""; }
|
|
45
|
+
.frames li small:after { content: ""; }
|
|
46
|
+
.frames li small.search_info { display: none; }
|
|
47
|
+
.frames #search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; }
|
|
48
|
+
.frames #content.insearch #search { background-position: center right; }
|
|
49
|
+
.frames #search input { width: 110px; }
|
|
50
|
+
.frames #nav { display: block; }
|
|
51
|
+
|
|
52
|
+
#full_list.insearch li { display: none; }
|
|
53
|
+
#full_list.insearch li.found { display: list-item; padding-left: 10px; }
|
|
54
|
+
#full_list.insearch li a.toggle { display: none; }
|
|
55
|
+
#full_list.insearch li small.search_info { display: block; }
|