rubyXL 1.2.10 → 2.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.
Files changed (101) hide show
  1. data/Gemfile +14 -10
  2. data/Gemfile.lock +80 -21
  3. data/LICENSE.txt +1 -1
  4. data/README.rdoc +88 -82
  5. data/Rakefile +7 -2
  6. data/VERSION +1 -1
  7. data/lib/rubyXL.rb +13 -7
  8. data/lib/rubyXL/cell.rb +108 -268
  9. data/lib/rubyXL/generic_storage.rb +40 -0
  10. data/lib/rubyXL/objects/border.rb +66 -0
  11. data/lib/rubyXL/objects/calculation_chain.rb +28 -0
  12. data/lib/rubyXL/objects/cell_style.rb +75 -0
  13. data/lib/rubyXL/objects/color.rb +25 -0
  14. data/lib/rubyXL/objects/column_range.rb +74 -0
  15. data/lib/rubyXL/objects/container_nodes.rb +122 -0
  16. data/lib/rubyXL/objects/data_validation.rb +43 -0
  17. data/lib/rubyXL/objects/document_properties.rb +76 -0
  18. data/lib/rubyXL/objects/extensions.rb +36 -0
  19. data/lib/rubyXL/objects/fill.rb +57 -0
  20. data/lib/rubyXL/objects/font.rb +111 -0
  21. data/lib/rubyXL/objects/formula.rb +24 -0
  22. data/lib/rubyXL/objects/ooxml_object.rb +295 -0
  23. data/lib/rubyXL/objects/reference.rb +110 -0
  24. data/lib/rubyXL/objects/relationships.rb +59 -0
  25. data/lib/rubyXL/objects/shared_strings.rb +57 -0
  26. data/lib/rubyXL/objects/sheet_data.rb +149 -0
  27. data/lib/rubyXL/objects/sheet_view.rb +71 -0
  28. data/lib/rubyXL/objects/stylesheet.rb +200 -0
  29. data/lib/rubyXL/objects/text.rb +87 -0
  30. data/lib/rubyXL/objects/theme.rb +64 -0
  31. data/lib/rubyXL/objects/workbook.rb +233 -0
  32. data/lib/rubyXL/objects/worksheet.rb +485 -0
  33. data/lib/rubyXL/parser.rb +78 -442
  34. data/lib/rubyXL/workbook.rb +216 -385
  35. data/lib/rubyXL/worksheet.rb +509 -1062
  36. data/lib/rubyXL/writer/content_types_writer.rb +104 -68
  37. data/lib/rubyXL/writer/core_writer.rb +26 -43
  38. data/lib/rubyXL/writer/generic_writer.rb +43 -0
  39. data/lib/rubyXL/writer/root_rels_writer.rb +11 -19
  40. data/lib/rubyXL/writer/styles_writer.rb +6 -398
  41. data/lib/rubyXL/writer/theme_writer.rb +321 -327
  42. data/lib/rubyXL/writer/workbook_writer.rb +63 -67
  43. data/lib/rubyXL/writer/worksheet_writer.rb +29 -218
  44. data/rdoc/created.rid +39 -0
  45. data/rdoc/fonts.css +167 -0
  46. data/rdoc/fonts/Lato-Light.ttf +0 -0
  47. data/rdoc/fonts/Lato-LightItalic.ttf +0 -0
  48. data/rdoc/fonts/Lato-Regular.ttf +0 -0
  49. data/rdoc/fonts/Lato-RegularItalic.ttf +0 -0
  50. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  51. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  52. data/rdoc/images/add.png +0 -0
  53. data/rdoc/images/arrow_up.png +0 -0
  54. data/rdoc/images/brick.png +0 -0
  55. data/rdoc/images/brick_link.png +0 -0
  56. data/rdoc/images/bug.png +0 -0
  57. data/rdoc/images/bullet_black.png +0 -0
  58. data/rdoc/images/bullet_toggle_minus.png +0 -0
  59. data/rdoc/images/bullet_toggle_plus.png +0 -0
  60. data/rdoc/images/date.png +0 -0
  61. data/rdoc/images/delete.png +0 -0
  62. data/rdoc/images/find.png +0 -0
  63. data/rdoc/images/loadingAnimation.gif +0 -0
  64. data/rdoc/images/macFFBgHack.png +0 -0
  65. data/rdoc/images/package.png +0 -0
  66. data/rdoc/images/page_green.png +0 -0
  67. data/rdoc/images/page_white_text.png +0 -0
  68. data/rdoc/images/page_white_width.png +0 -0
  69. data/rdoc/images/plugin.png +0 -0
  70. data/rdoc/images/ruby.png +0 -0
  71. data/rdoc/images/tag_blue.png +0 -0
  72. data/rdoc/images/tag_green.png +0 -0
  73. data/rdoc/images/transparent.png +0 -0
  74. data/rdoc/images/wrench.png +0 -0
  75. data/rdoc/images/wrench_orange.png +0 -0
  76. data/rdoc/images/zoom.png +0 -0
  77. data/rdoc/js/darkfish.js +140 -0
  78. data/rdoc/js/jquery.js +18 -0
  79. data/rdoc/js/navigation.js +142 -0
  80. data/rdoc/js/search.js +109 -0
  81. data/rdoc/js/search_index.js +1 -0
  82. data/rdoc/js/searcher.js +228 -0
  83. data/rdoc/rdoc.css +580 -0
  84. data/rubyXL.gemspec +90 -34
  85. data/spec/lib/cell_spec.rb +29 -59
  86. data/spec/lib/parser_spec.rb +35 -19
  87. data/spec/lib/reference_spec.rb +29 -0
  88. data/spec/lib/stylesheet_spec.rb +29 -0
  89. data/spec/lib/workbook_spec.rb +22 -17
  90. data/spec/lib/worksheet_spec.rb +47 -202
  91. metadata +185 -148
  92. data/lib/.DS_Store +0 -0
  93. data/lib/rubyXL/Hash.rb +0 -60
  94. data/lib/rubyXL/color.rb +0 -14
  95. data/lib/rubyXL/private_class.rb +0 -265
  96. data/lib/rubyXL/writer/app_writer.rb +0 -62
  97. data/lib/rubyXL/writer/calc_chain_writer.rb +0 -33
  98. data/lib/rubyXL/writer/shared_strings_writer.rb +0 -30
  99. data/lib/rubyXL/writer/workbook_rels_writer.rb +0 -59
  100. data/lib/rubyXL/zip.rb +0 -20
  101. data/spec/lib/hash_spec.rb +0 -28
@@ -1,77 +1,73 @@
1
- # require File.expand_path(File.join(File.dirname(__FILE__),'workbook'))
2
- # require File.expand_path(File.join(File.dirname(__FILE__),'worksheet'))
3
- # require File.expand_path(File.join(File.dirname(__FILE__),'cell'))
4
- # require File.expand_path(File.join(File.dirname(__FILE__),'color'))
5
- require 'rubygems'
6
- require 'nokogiri'
7
-
8
1
  module RubyXL
9
- module Writer
10
- class WorkbookWriter
11
- attr_accessor :dirpath, :filepath, :workbook
2
+ module Writer
3
+ class WorkbookWriter < GenericWriter
12
4
 
13
- def initialize(dirpath, wb)
14
- @dirpath = dirpath
15
- @workbook = wb
16
- @filepath = dirpath + '/xl/workbook.xml'
17
- end
5
+ def filepath
6
+ File.join('xl', 'workbook.xml')
7
+ end
18
8
 
19
- def write()
20
- builder = Nokogiri::XML::Builder.new do |xml|
21
- xml.workbook('xmlns'=>"http://schemas.openxmlformats.org/spreadsheetml/2006/main",
22
- 'xmlns:r'=>"http://schemas.openxmlformats.org/officeDocument/2006/relationships") {
23
- #attributes out of order here
24
- xml.fileVersion('appName'=>'xl', 'lastEdited'=>'4','lowestEdited'=>'4','rupBuild'=>'4505')
25
- #TODO following line - date 1904? check if mac only
26
- if @workbook.date1904.nil? || @workbook.date1904.to_s == ''
27
- xml.workbookPr('showInkAnnotation'=>'0', 'autoCompressPictures'=>'0')
28
- else
29
- xml.workbookPr('date1904'=>@workbook.date1904.to_s, 'showInkAnnotation'=>'0', 'autoCompressPictures'=>'0')
30
- end
31
- xml.bookViews {
32
- #attributes out of order here
33
- xml.workbookView('xWindow'=>'-20', 'yWindow'=>'-20',
34
- 'windowWidth'=>'21600','windowHeight'=>'13340','tabRatio'=>'500')
35
- }
36
- index = 0
37
- xml.sheets {
38
- @workbook.worksheets.each_with_index do |sheet,i|
39
- xml.sheet('name'=>sheet.sheet_name, 'sheetId'=>(i+1).to_s(),
40
- 'r:id'=>'rId'+(i+1).to_s())
41
- index = i+1
9
+ def write()
10
+ new_xml = render_xml do |xml|
11
+ xml << (xml.create_element('workbook',
12
+ :xmlns => 'http://schemas.openxmlformats.org/spreadsheetml/2006/main',
13
+ 'xmlns:r' => 'http://schemas.openxmlformats.org/officeDocument/2006/relationships') { |root|
14
+ root << xml.create_element('fileVersion', { :appName => 'xl', :lastEdited => 4,
15
+ :lowestEdited => 4, :rupBuild => 4505 })
16
+
17
+ params = { :showInkAnnotation => 0, :autoCompressPictures => 0 }
18
+
19
+ #TODO following line - date 1904? check if mac only
20
+ params[:date1904] = 1 if @workbook.date1904
21
+ root << xml.create_element('workbookPr', params)
22
+
23
+ root << (xml.create_element('bookViews') { |views|
24
+ views << xml.create_element('workbookView', { :xWindow => -20, :yWindow => -20,
25
+ :windowWidth => 21600, :windowHeight => 13340, :tabRatio => 500 })
26
+ })
27
+
28
+ index = 1
29
+ root << (xml.create_element('sheets') { |sheet_xml|
30
+ @workbook.worksheets.each_with_index { |sheet, i|
31
+ sheet_xml << xml.create_element('sheet', { :name => sheet.sheet_name,
32
+ :sheetId => sheet.sheet_id || index,
33
+ 'r:id'=> "rId#{index}" })
34
+ index += 1
35
+ }
36
+ })
37
+
38
+ unless @workbook.external_links.empty?
39
+
40
+ root << (xml.create_element('externalReferences') { |refs|
41
+ # Need to correlate these with WorkbookRelsWriter
42
+ @workbook.external_links.each_value {
43
+ refs << xml.create_element('externalReference', { 'r:id' => "rId#{index}" })
44
+ index += 1
45
+ }
46
+ })
42
47
  end
43
- }
44
- unless @workbook.external_links.nil?
45
- xml.externalReferences {
46
- index.upto(@workbook.external_links.size-1) do |id|
47
- xml.externalReference('r:id'=>"rId#{id+index}")
48
- end
49
- }
50
- end
51
48
 
52
- # nokogiri builder creates CDATA tag around content,
53
- # using .text creates "html safe" &lt; and &gt; in place of < and >
54
- # xml to hash method does not seem to function well for this particular piece of xml
55
- xml.cdata @workbook.defined_names.to_s
49
+ if @workbook.defined_name_container && !@workbook.defined_name_container.defined_names.empty? then
50
+ root << xml.create_element('definedNames') { |names|
51
+ @workbook.defined_name_container.defined_names.each { |name| names << name.write_xml(xml) }
52
+ }
53
+ end
54
+
55
+ #TODO see if this changes with formulas
56
+ #attributes out of order here
57
+ root << xml.create_element('calcPr', { :calcId => 130407, :concurrentCalc => 0 } )
56
58
 
57
- #TODO see if this changes with formulas
58
- #attributes out of order here
59
- xml.calcPr('calcId'=>'130407', 'concurrentCalc'=>'0')
60
- xml.extLst {
61
- xml.ext('xmlns:mx'=>"http://schemas.microsoft.com/office/mac/excel/2008/main",
62
- 'uri'=>"http://schemas.microsoft.com/office/mac/excel/2008/main") {
63
- xml['mx'].ArchID('Flags'=>'2')
64
- }
65
- }
66
- }
59
+ root << (xml.create_element('extLst') { |list|
60
+ list << (xml.create_element('ext', {
61
+ 'xmlns:mx' => 'http://schemas.microsoft.com/office/mac/excel/2008/main',
62
+ :uri => 'http://schemas.microsoft.com/office/mac/excel/2008/main'}) { |ext|
63
+ ext << xml.create_element('mx:ArchID', { :Flags => 2 })
64
+
65
+ })
66
+ })
67
+ })
68
+ end
67
69
  end
68
- contents = builder.to_xml
69
- contents = contents.gsub(/\n/,'')
70
- contents = contents.gsub(/>(\s)+</,'><')
71
- contents = contents.gsub(/<!\[CDATA\[(.*)\]\]>/,'\1')
72
- contents = contents.sub(/<\?xml version=\"1.0\"\?>/,'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+"\n")
73
- contents
70
+
74
71
  end
75
72
  end
76
73
  end
77
- end
@@ -1,230 +1,41 @@
1
- require 'rubygems'
2
- require 'nokogiri'
3
-
4
1
  module RubyXL
5
2
  module Writer
6
- class WorksheetWriter
7
- attr_accessor :dirpath, :filepath, :sheet_num, :workbook, :worksheet
3
+ class WorksheetWriter < GenericWriter
8
4
 
9
- def initialize(dirpath, wb, sheet_num=1)
10
- @dirpath = dirpath
11
- @workbook = wb
12
- @sheet_num = sheet_num
13
- @worksheet = @workbook.worksheets[@sheet_num]
14
- @filepath = dirpath + '/xl/worksheets/sheet'+(sheet_num+1).to_s()+'.xml'
5
+ def initialize(workbook, sheet_index = 0)
6
+ @workbook = workbook
7
+ @sheet_index = sheet_index
8
+ @worksheet = @workbook.worksheets[@sheet_index]
15
9
  end
16
10
 
17
- def write()
18
- builder = Nokogiri::XML::Builder.new do |xml|
19
- xml.worksheet('xmlns'=>"http://schemas.openxmlformats.org/spreadsheetml/2006/main",
20
- 'xmlns:r'=>"http://schemas.openxmlformats.org/officeDocument/2006/relationships",
21
- 'xmlns:mc'=>"http://schemas.openxmlformats.org/markup-compatibility/2006",
22
- 'xmlns:mv'=>"urn:schemas-microsoft-com:mac:vml",
23
- 'mc:Ignorable'=>'mv',
24
- 'mc:PreserveAttributes'=>'mv:*') {
25
- col = 0
26
- @worksheet.sheet_data.each do |row|
27
- if row.size > col
28
- col = row.size
29
- end
30
- end
31
- row = Integer(@worksheet.sheet_data.size)
32
- dimension = 'A1:'
33
- dimension += Cell.convert_to_cell(row-1,col-1)
34
- xml.dimension('ref'=>dimension)
35
- xml.sheetViews {
36
- view = @worksheet.sheet_view
37
- if view.nil? || view[:attributes].nil?
38
- xml.sheetView('tabSelected'=>1,'view'=>'normalLayout','workbookViewId'=>0)
39
- raise 'end test' #TODO remove
40
- else
41
- view = view[:attributes]
42
- if view[:view].nil?
43
- view[:view] = 'normalLayout'
44
- end
45
-
46
- if view[:workbookViewId].nil?
47
- view[:workbookViewId] = 0
48
- end
49
-
50
- if view[:zoomScale].nil? || view[:zoomScaleNormal].nil?
51
- view[:zoomScale] = 100
52
- view[:zoomScaleNormal] = 100
53
- end
54
-
55
- if view[:tabSelected].nil?
56
- view[:tabSelected] = 1
57
- end
58
-
59
- xml.sheetView('tabSelected'=>view[:tabSelected],
60
- 'view'=>view[:view],
61
- 'workbookViewId'=>view[:workbookViewId],
62
- 'zoomScale'=>view[:zoomScale],
63
- 'zoomScaleNormal'=>view[:zoomScaleNormal]) {
64
- #TODO
65
- #can't be done unless I figure out a way to programmatically add attributes.
66
- #(can't put xSplit with an invalid value)
67
- # unless @worksheet.pane.nil?
68
- # xml.pane('state'=>@worksheet.pane[:state])
69
- # end
70
- # unless view[:selection].nil?
71
- # xml.
72
- # end
73
- }
74
- end
75
- }
76
- xml.sheetFormatPr('baseColWidth'=>'10','defaultRowHeight'=>'13')
77
-
78
- unless @worksheet.cols.nil? || @worksheet.cols.size==0
79
- xml.cols {
80
- if !@worksheet.cols.is_a?(Array)
81
- @worksheet.cols = [@worksheet.cols]
82
- end
83
- @worksheet.cols.each do |col|
84
- if col[:attributes][:customWidth].nil?
85
- col[:attributes][:customWidth] = '0'
86
- end
87
- if col[:attributes][:width].nil?
88
- col[:attributes][:width] = '10'
89
- col[:attributes][:customWidth] = '0'
90
- end
91
- # unless col[:attributes] == {}
92
- xml.col('style'=>@workbook.style_corrector[col[:attributes][:style].to_s].to_s,
93
- 'min'=>col[:attributes][:min].to_s,
94
- 'max'=>col[:attributes][:max].to_s,
95
- 'width'=>col[:attributes][:width].to_s,
96
- 'customWidth'=>col[:attributes][:customWidth].to_s)
97
- # end
98
- end
99
- }
100
- end
101
-
102
- xml.sheetData {
103
- i=0
104
- @worksheet.sheet_data.each_with_index do |row,i|
105
- #TODO fix this spans thing. could be 2:3 (not necessary)
106
- if @worksheet.row_styles[(i+1).to_s].nil?
107
- @worksheet.row_styles[(i+1).to_s] = {}
108
- @worksheet.row_styles[(i+1).to_s][:style] = '0'
109
- end
110
- custom_format = '1'
111
- if @worksheet.row_styles[(i+1).to_s][:style] == '0'
112
- custom_format = '0'
113
- end
114
-
115
- @worksheet.row_styles[(i+1).to_s][:style] = @workbook.style_corrector[@worksheet.row_styles[(i+1).to_s][:style].to_s]
116
- row_opts = {
117
- 'r'=>(i+1).to_s,
118
- 'spans'=>'1:'+row.size.to_s,
119
- 'customFormat'=>custom_format
120
- }
121
- unless @worksheet.row_styles[(i+1).to_s][:style].to_s == ''
122
- row_opts['s'] = @worksheet.row_styles[(i+1).to_s][:style].to_s
123
- end
124
- unless @worksheet.row_styles[(i+1).to_s][:height].to_s == ''
125
- row_opts['ht'] = @worksheet.row_styles[(i+1).to_s][:height].to_s
126
- end
127
- unless @worksheet.row_styles[(i+1).to_s][:customheight].to_s == ''
128
- row_opts['customHeight'] = @worksheet.row_styles[(i+1).to_s][:customHeight].to_s
129
- end
130
- xml.row(row_opts) {
131
- row.each_with_index do |dat, j|
132
- unless dat.nil?
133
- #TODO do xml.c for all cases, inside specific.
134
- # if dat.formula.nil?
135
- dat.style_index = @workbook.style_corrector[dat.style_index.to_s]
136
- c_opts = {'r'=>Cell.convert_to_cell(i,j), 's'=>dat.style_index.to_s}
137
- unless dat.datatype.nil? || dat.datatype == ''
138
- c_opts['t'] = dat.datatype
139
- end
140
- xml.c(c_opts) {
141
- unless dat.formula.nil?
142
- if dat.formula_attributes.nil? || dat.formula_attributes.empty?
143
- xml.f dat.formula.to_s
144
- else
145
- xml.f('t'=>dat.formula_attributes['t'].to_s, 'ref'=>dat.formula_attributes['ref'], 'si'=>dat.formula_attributes['si']).nokogiri dat.formula
146
- end
147
- end
148
- if(dat.datatype == 's')
149
- unless dat.value.nil? #empty cell, but has a style
150
- xml.v @workbook.shared_strings[dat.value].to_s
151
- end
152
- elsif(dat.datatype == 'str')
153
- xml.v dat.value.to_s
154
- elsif(dat.datatype == '') #number
155
- xml.v dat.value.to_s
156
- end
157
- }
158
- #
159
- # else
160
- # xml.c('r'=>Cell.convert_to_cell(i,j)) {
161
- # xml.v dat.value.to_s
162
- # }
163
- # end #data.formula.nil?
164
- end #unless dat.nil?
165
- end #row.each_with_index
166
- }
167
- end
168
- }
169
-
170
-
171
- xml.sheetCalcPr('fullCalcOnLoad'=>'1')
172
-
173
- unless @worksheet.merged_cells.nil? || @worksheet.merged_cells.size==0
174
- #There is some kind of bug here that when merged_cells is sometimes a hash and not an array
175
- #initial attempt at a fix fails in corrupted excel documents leaving as is for now.
176
- xml.mergeCells {
177
- @worksheet.merged_cells.each do |merged_cell|
178
- xml.mergeCell('ref'=>merged_cell[:attributes][:ref].to_s)
179
- end
180
- }
181
- end
182
-
183
- xml.phoneticPr('fontId'=>'1','type'=>'noConversion')
184
-
185
- unless @worksheet.validations.nil?
186
- xml.dataValidations('count'=>@worksheet.validations.size.to_s) {
187
- @worksheet.validations.each do |validation|
188
- xml.dataValidation('type'=>validation[:attributes][:type],
189
- 'sqref'=>validation[:attributes][:sqref],
190
- 'allowBlank'=>Integer(validation[:attributes][:allowBlank]).to_s,
191
- 'showInputMessage'=>Integer(validation[:attributes][:showInputMessage]).to_s,
192
- 'showErrorMessage'=>Integer(validation[:attributes][:showErrorMessage]).to_s) {
193
- unless validation[:formula1].nil?
194
- xml.formula1 validation[:formula1]
195
- end
196
- }
197
- end
198
- }
199
- end
200
-
201
- xml.pageMargins('left'=>'0.75','right'=>'0.75','top'=>'1',
202
- 'bottom'=>'1','header'=>'0.5','footer'=>'0.5')
11
+ def filepath
12
+ File.join('xl', 'worksheets', "sheet#{@sheet_index + 1}.xml")
13
+ end
203
14
 
204
- xml.pageSetup('orientation'=>'portrait',
205
- 'horizontalDpi'=>'4294967292', 'verticalDpi'=>'4294967292')
15
+ def ooxml_object
16
+ @worksheet
17
+ end
206
18
 
207
- unless @worksheet.legacy_drawing.nil?
208
- xml.legacyDrawing('r:id'=>@worksheet.legacy_drawing[:attributes][:id])
209
- end
19
+ =begin
20
+ root << xml.create_element('sheetFormatPr', { :baseColWidth => 10, :defaultRowHeight => 13 })
21
+ root << xml.create_element('sheetCalcPr', { :fullCalcOnLoad => 1 })
22
+ root << xml.create_element('pageMargins', { :left => 0.75, :right => 0.75, :top => 1, :bottom => 1,
23
+ :header => 0.5, :footer => 0.5 })
24
+ root << xml.create_element('pageSetup', { :orientation => 'portrait',
25
+ :horizontalDpi => 4294967292, :verticalDpi => 4294967292 })
210
26
 
211
27
  unless @worksheet.extLst.nil?
212
- xml.extLst {
213
- xml.ext('xmlns:mx'=>"http://schemas.microsoft.com/office/mac/excel/2008/main",
214
- 'uri'=>"http://schemas.microsoft.com/office/mac/excel/2008/main") {
215
- xml['mx'].PLV('Mode'=>'1', 'OnePage'=>'0','WScale'=>'0')
216
- }
217
- }
28
+ root << (xml.create_element('extLst') { |extlst|
29
+ extlst << (xml.create_element('ext', {
30
+ 'xmlns:mx' => 'http://schemas.microsoft.com/office/mac/excel/2008/main',
31
+ 'uri' => 'http://schemas.microsoft.com/office/mac/excel/2008/main' }) { |ext|
32
+ ext << xml.create_element('mx:PLV', { :Mode => 1, :OnePage => 0, :WScale => 0 })
33
+ })
34
+ })
218
35
  end
219
- }
220
- end
221
- contents = builder.to_xml
222
- contents = contents.gsub(/\n/,'')
223
- contents = contents.gsub(/>(\s)+</,'><')
224
- contents = contents.sub(/<\?xml version=\"1.0\"\?>/,'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'+"\n")
225
- contents
226
- end
36
+ =end
37
+
38
+ end # class
227
39
 
228
- end
229
- end
230
40
  end
41
+ end
data/rdoc/created.rid ADDED
@@ -0,0 +1,39 @@
1
+ Fri, 07 Feb 2014 01:35:58 +0000
2
+ README.rdoc Fri, 07 Feb 2014 00:46:48 +0000
3
+ lib/rubyXL.rb Thu, 06 Feb 2014 21:53:31 +0000
4
+ lib/rubyXL/cell.rb Wed, 05 Feb 2014 20:52:23 +0000
5
+ lib/rubyXL/generic_storage.rb Sat, 14 Dec 2013 00:24:20 +0000
6
+ lib/rubyXL/objects/border.rb Fri, 07 Feb 2014 00:37:47 +0000
7
+ lib/rubyXL/objects/calculation_chain.rb Tue, 04 Feb 2014 23:41:39 +0000
8
+ lib/rubyXL/objects/cell_style.rb Wed, 29 Jan 2014 22:24:05 +0000
9
+ lib/rubyXL/objects/color.rb Wed, 29 Jan 2014 22:24:07 +0000
10
+ lib/rubyXL/objects/column_range.rb Wed, 29 Jan 2014 22:24:09 +0000
11
+ lib/rubyXL/objects/container_nodes.rb Tue, 04 Feb 2014 01:21:17 +0000
12
+ lib/rubyXL/objects/data_validation.rb Thu, 30 Jan 2014 23:08:07 +0000
13
+ lib/rubyXL/objects/document_properties.rb Tue, 04 Feb 2014 21:29:05 +0000
14
+ lib/rubyXL/objects/extensions.rb Mon, 03 Feb 2014 23:35:23 +0000
15
+ lib/rubyXL/objects/fill.rb Wed, 29 Jan 2014 22:24:15 +0000
16
+ lib/rubyXL/objects/font.rb Thu, 30 Jan 2014 23:44:34 +0000
17
+ lib/rubyXL/objects/formula.rb Thu, 30 Jan 2014 23:08:14 +0000
18
+ lib/rubyXL/objects/ooxml_object.rb Fri, 07 Feb 2014 01:35:27 +0000
19
+ lib/rubyXL/objects/reference.rb Wed, 29 Jan 2014 22:24:26 +0000
20
+ lib/rubyXL/objects/relationships.rb Tue, 04 Feb 2014 23:52:30 +0000
21
+ lib/rubyXL/objects/shared_strings.rb Tue, 04 Feb 2014 21:34:11 +0000
22
+ lib/rubyXL/objects/sheet_data.rb Thu, 06 Feb 2014 23:07:20 +0000
23
+ lib/rubyXL/objects/sheet_view.rb Wed, 05 Feb 2014 19:39:10 +0000
24
+ lib/rubyXL/objects/stylesheet.rb Wed, 05 Feb 2014 20:56:22 +0000
25
+ lib/rubyXL/objects/text.rb Thu, 30 Jan 2014 03:47:55 +0000
26
+ lib/rubyXL/objects/theme.rb Wed, 29 Jan 2014 22:25:25 +0000
27
+ lib/rubyXL/objects/workbook.rb Tue, 04 Feb 2014 01:34:19 +0000
28
+ lib/rubyXL/objects/worksheet.rb Thu, 30 Jan 2014 23:39:15 +0000
29
+ lib/rubyXL/parser.rb Thu, 06 Feb 2014 22:25:56 +0000
30
+ lib/rubyXL/workbook.rb Thu, 06 Feb 2014 22:26:47 +0000
31
+ lib/rubyXL/worksheet.rb Fri, 07 Feb 2014 00:25:25 +0000
32
+ lib/rubyXL/writer/content_types_writer.rb Thu, 30 Jan 2014 01:47:57 +0000
33
+ lib/rubyXL/writer/core_writer.rb Tue, 14 Jan 2014 23:50:12 +0000
34
+ lib/rubyXL/writer/generic_writer.rb Tue, 04 Feb 2014 21:20:48 +0000
35
+ lib/rubyXL/writer/root_rels_writer.rb Tue, 14 Jan 2014 23:50:12 +0000
36
+ lib/rubyXL/writer/styles_writer.rb Thu, 30 Jan 2014 21:17:08 +0000
37
+ lib/rubyXL/writer/theme_writer.rb Tue, 14 Jan 2014 23:50:12 +0000
38
+ lib/rubyXL/writer/workbook_writer.rb Wed, 29 Jan 2014 01:01:31 +0000
39
+ lib/rubyXL/writer/worksheet_writer.rb Thu, 30 Jan 2014 21:15:31 +0000
data/rdoc/fonts.css ADDED
@@ -0,0 +1,167 @@
1
+ /*
2
+ * Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/),
3
+ * with Reserved Font Name "Source". All Rights Reserved. Source is a
4
+ * trademark of Adobe Systems Incorporated in the United States and/or other
5
+ * countries.
6
+ *
7
+ * This Font Software is licensed under the SIL Open Font License, Version
8
+ * 1.1.
9
+ *
10
+ * This license is copied below, and is also available with a FAQ at:
11
+ * http://scripts.sil.org/OFL
12
+ */
13
+
14
+ @font-face {
15
+ font-family: "Source Code Pro";
16
+ font-style: normal;
17
+ font-weight: 400;
18
+ src: local("Source Code Pro"),
19
+ local("SourceCodePro-Regular"),
20
+ url("fonts/SourceCodePro-Regular.ttf") format("truetype");
21
+ }
22
+
23
+ @font-face {
24
+ font-family: "Source Code Pro";
25
+ font-style: normal;
26
+ font-weight: 700;
27
+ src: local("Source Code Pro Bold"),
28
+ local("SourceCodePro-Bold"),
29
+ url("fonts/SourceCodePro-Bold.ttf") format("truetype");
30
+ }
31
+
32
+ /*
33
+ * Copyright (c) 2010, Łukasz Dziedzic (dziedzic@typoland.com),
34
+ * with Reserved Font Name Lato.
35
+ *
36
+ * This Font Software is licensed under the SIL Open Font License, Version
37
+ * 1.1.
38
+ *
39
+ * This license is copied below, and is also available with a FAQ at:
40
+ * http://scripts.sil.org/OFL
41
+ */
42
+
43
+ @font-face {
44
+ font-family: "Lato";
45
+ font-style: normal;
46
+ font-weight: 300;
47
+ src: local("Lato Light"),
48
+ local("Lato-Light"),
49
+ url("fonts/Lato-Light.ttf") format("truetype");
50
+ }
51
+
52
+ @font-face {
53
+ font-family: "Lato";
54
+ font-style: italic;
55
+ font-weight: 300;
56
+ src: local("Lato Light Italic"),
57
+ local("Lato-LightItalic"),
58
+ url("fonts/Lato-LightItalic.ttf") format("truetype");
59
+ }
60
+
61
+ @font-face {
62
+ font-family: "Lato";
63
+ font-style: normal;
64
+ font-weight: 700;
65
+ src: local("Lato Regular"),
66
+ local("Lato-Regular"),
67
+ url("fonts/Lato-Regular.ttf") format("truetype");
68
+ }
69
+
70
+ @font-face {
71
+ font-family: "Lato";
72
+ font-style: italic;
73
+ font-weight: 700;
74
+ src: local("Lato Italic"),
75
+ local("Lato-Italic"),
76
+ url("fonts/Lato-RegularItalic.ttf") format("truetype");
77
+ }
78
+
79
+ /*
80
+ * -----------------------------------------------------------
81
+ * SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
82
+ * -----------------------------------------------------------
83
+ *
84
+ * PREAMBLE
85
+ * The goals of the Open Font License (OFL) are to stimulate worldwide
86
+ * development of collaborative font projects, to support the font creation
87
+ * efforts of academic and linguistic communities, and to provide a free and
88
+ * open framework in which fonts may be shared and improved in partnership
89
+ * with others.
90
+ *
91
+ * The OFL allows the licensed fonts to be used, studied, modified and
92
+ * redistributed freely as long as they are not sold by themselves. The
93
+ * fonts, including any derivative works, can be bundled, embedded,
94
+ * redistributed and/or sold with any software provided that any reserved
95
+ * names are not used by derivative works. The fonts and derivatives,
96
+ * however, cannot be released under any other type of license. The
97
+ * requirement for fonts to remain under this license does not apply
98
+ * to any document created using the fonts or their derivatives.
99
+ *
100
+ * DEFINITIONS
101
+ * "Font Software" refers to the set of files released by the Copyright
102
+ * Holder(s) under this license and clearly marked as such. This may
103
+ * include source files, build scripts and documentation.
104
+ *
105
+ * "Reserved Font Name" refers to any names specified as such after the
106
+ * copyright statement(s).
107
+ *
108
+ * "Original Version" refers to the collection of Font Software components as
109
+ * distributed by the Copyright Holder(s).
110
+ *
111
+ * "Modified Version" refers to any derivative made by adding to, deleting,
112
+ * or substituting -- in part or in whole -- any of the components of the
113
+ * Original Version, by changing formats or by porting the Font Software to a
114
+ * new environment.
115
+ *
116
+ * "Author" refers to any designer, engineer, programmer, technical
117
+ * writer or other person who contributed to the Font Software.
118
+ *
119
+ * PERMISSION & CONDITIONS
120
+ * Permission is hereby granted, free of charge, to any person obtaining
121
+ * a copy of the Font Software, to use, study, copy, merge, embed, modify,
122
+ * redistribute, and sell modified and unmodified copies of the Font
123
+ * Software, subject to the following conditions:
124
+ *
125
+ * 1) Neither the Font Software nor any of its individual components,
126
+ * in Original or Modified Versions, may be sold by itself.
127
+ *
128
+ * 2) Original or Modified Versions of the Font Software may be bundled,
129
+ * redistributed and/or sold with any software, provided that each copy
130
+ * contains the above copyright notice and this license. These can be
131
+ * included either as stand-alone text files, human-readable headers or
132
+ * in the appropriate machine-readable metadata fields within text or
133
+ * binary files as long as those fields can be easily viewed by the user.
134
+ *
135
+ * 3) No Modified Version of the Font Software may use the Reserved Font
136
+ * Name(s) unless explicit written permission is granted by the corresponding
137
+ * Copyright Holder. This restriction only applies to the primary font name as
138
+ * presented to the users.
139
+ *
140
+ * 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
141
+ * Software shall not be used to promote, endorse or advertise any
142
+ * Modified Version, except to acknowledge the contribution(s) of the
143
+ * Copyright Holder(s) and the Author(s) or with their explicit written
144
+ * permission.
145
+ *
146
+ * 5) The Font Software, modified or unmodified, in part or in whole,
147
+ * must be distributed entirely under this license, and must not be
148
+ * distributed under any other license. The requirement for fonts to
149
+ * remain under this license does not apply to any document created
150
+ * using the Font Software.
151
+ *
152
+ * TERMINATION
153
+ * This license becomes null and void if any of the above conditions are
154
+ * not met.
155
+ *
156
+ * DISCLAIMER
157
+ * THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
158
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
159
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
160
+ * OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
161
+ * COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
162
+ * INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
163
+ * DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
164
+ * FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
165
+ * OTHER DEALINGS IN THE FONT SOFTWARE.
166
+ */
167
+