docxer 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +119 -0
  4. data/Rakefile +9 -0
  5. data/lib/docxer.rb +29 -0
  6. data/lib/docxer/content_types.rb +68 -0
  7. data/lib/docxer/content_types/default.rb +18 -0
  8. data/lib/docxer/content_types/override.rb +18 -0
  9. data/lib/docxer/document.rb +36 -0
  10. data/lib/docxer/properties.rb +29 -0
  11. data/lib/docxer/properties/app.rb +37 -0
  12. data/lib/docxer/properties/core.rb +32 -0
  13. data/lib/docxer/relationships.rb +49 -0
  14. data/lib/docxer/relationships/relationship.rb +19 -0
  15. data/lib/docxer/version.rb +3 -0
  16. data/lib/docxer/word.rb +16 -0
  17. data/lib/docxer/word/contents.rb +6 -0
  18. data/lib/docxer/word/contents/break.rb +33 -0
  19. data/lib/docxer/word/contents/image.rb +38 -0
  20. data/lib/docxer/word/contents/paragraph.rb +59 -0
  21. data/lib/docxer/word/contents/table.rb +223 -0
  22. data/lib/docxer/word/contents/table_of_content.rb +75 -0
  23. data/lib/docxer/word/contents/text.rb +34 -0
  24. data/lib/docxer/word/document.rb +144 -0
  25. data/lib/docxer/word/effects.rb +210 -0
  26. data/lib/docxer/word/endnotes.rb +39 -0
  27. data/lib/docxer/word/fonts.rb +42 -0
  28. data/lib/docxer/word/fonts/font.rb +25 -0
  29. data/lib/docxer/word/footers.rb +30 -0
  30. data/lib/docxer/word/footers/footer.rb +118 -0
  31. data/lib/docxer/word/footnotes.rb +40 -0
  32. data/lib/docxer/word/headers.rb +30 -0
  33. data/lib/docxer/word/headers/header.rb +142 -0
  34. data/lib/docxer/word/helpers.rb +37 -0
  35. data/lib/docxer/word/medias.rb +31 -0
  36. data/lib/docxer/word/medias/media.rb +37 -0
  37. data/lib/docxer/word/numbering.rb +141 -0
  38. data/lib/docxer/word/relationships.rb +57 -0
  39. data/lib/docxer/word/relationships/relationship.rb +21 -0
  40. data/lib/docxer/word/settings.rb +61 -0
  41. data/lib/docxer/word/styles.rb +235 -0
  42. data/lib/docxer/word/themes.rb +30 -0
  43. data/lib/docxer/word/themes/theme.rb +313 -0
  44. data/lib/docxer/word/web_settings.rb +29 -0
  45. metadata +121 -0
@@ -0,0 +1,30 @@
1
+ require 'docxer/word/themes/theme'
2
+
3
+ module Docxer
4
+ module Word
5
+ class Themes
6
+
7
+ attr_accessor :themes, :counter
8
+ def initialize
9
+ @themes = []
10
+ @counter = 0
11
+
12
+ add(Theme.new)
13
+ end
14
+
15
+ def add(theme)
16
+ @counter += 1
17
+ @themes << theme.set_sequence(@counter)
18
+ theme
19
+ end
20
+
21
+ def render(zip)
22
+ @themes.each do |theme|
23
+ zip.put_next_entry("word/theme/theme#{theme.sequence}.xml")
24
+ zip.write(theme.render)
25
+ end
26
+ end
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,313 @@
1
+ #encoding: utf-8
2
+
3
+ module Docxer
4
+ module Word
5
+ class Themes
6
+ class Theme
7
+
8
+ attr_accessor :sequence
9
+ def initialize
10
+ end
11
+
12
+ def set_sequence(sequence)
13
+ @sequence = sequence
14
+ self
15
+ end
16
+
17
+ def render
18
+ Docxer.to_xml(document)
19
+ end
20
+
21
+ private
22
+ def document
23
+ Nokogiri::XML::Builder.with(Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>')) do |xml|
24
+ xml.theme( 'xmlns:a' => "http://schemas.openxmlformats.org/drawingml/2006/main", 'name' => "Office Theme" ) do
25
+ xml.parent.namespace = xml.parent.namespace_definitions.find{|ns| ns.prefix == "a" }
26
+ xml['a'].themeElements do
27
+ xml['a'].clrScheme( 'name' => "Office") do
28
+ xml['a'].dk1 do
29
+ xml['a'].sysClr( 'val' => "windowText", 'lastClr' => "000000" )
30
+ end
31
+ xml['a'].lt1 do
32
+ xml['a'].sysClr( 'val' => "window", 'lastClr' => "FFFFFF" )
33
+ end
34
+ xml['a'].dk2 do
35
+ xml['a'].srgbClr( 'val' => "1F497D" )
36
+ end
37
+ xml['a'].lt2 do
38
+ xml['a'].srgbClr( 'val' => "EEECE1" )
39
+ end
40
+ xml['a'].accent1 do
41
+ xml['a'].srgbClr( 'val' => "4F81BD" )
42
+ end
43
+ xml['a'].accent2 do
44
+ xml['a'].srgbClr( 'val' => "C0504D" )
45
+ end
46
+ xml['a'].accent3 do
47
+ xml['a'].srgbClr( 'val' => "9BBB59" )
48
+ end
49
+ xml['a'].accent4 do
50
+ xml['a'].srgbClr( 'val' => "8064A2" )
51
+ end
52
+ xml['a'].accent5 do
53
+ xml['a'].srgbClr( 'val' => "4BACC6" )
54
+ end
55
+ xml['a'].accent6 do
56
+ xml['a'].srgbClr( 'val' => "F79646" )
57
+ end
58
+ xml['a'].hlink do
59
+ xml['a'].srgbClr( 'val' => "0000FF" )
60
+ end
61
+ xml['a'].folHlink do
62
+ xml['a'].srgbClr( 'val' => "800080" )
63
+ end
64
+ end
65
+ xml['a'].fontScheme( 'name' => "Office" ) do
66
+ xml['a'].majorFont do
67
+ xml['a'].latin( 'typeface' => "Cambria" )
68
+ xml['a'].ea( 'typeface' => "" )
69
+ xml['a'].cs( 'typeface' => "" )
70
+ xml['a'].font( 'script' => "Jpan", 'typeface' => "MS ゴシック" )
71
+ xml['a'].font( 'script' => "Hang", 'typeface' => "맑은 고딕" )
72
+ xml['a'].font( 'script' => "Hans", 'typeface' => "宋体" )
73
+ xml['a'].font( 'script' => "Hant", 'typeface' => "新細明體" )
74
+ xml['a'].font( 'script' => "Arab", 'typeface' => "Times New Roman" )
75
+ xml['a'].font( 'script' => "Hebr", 'typeface' => "Times New Roman")
76
+ xml['a'].font( 'script' => "Thai", 'typeface' => "Angsana New")
77
+ xml['a'].font( 'script' => "Ethi", 'typeface' => "Nyala")
78
+ xml['a'].font( 'script' => "Beng", 'typeface' => "Vrinda")
79
+ xml['a'].font( 'script' => "Gujr", 'typeface' => "Shruti")
80
+ xml['a'].font( 'script' => "Khmr", 'typeface' => "MoolBoran")
81
+ xml['a'].font( 'script' => "Knda", 'typeface' => "Tunga")
82
+ xml['a'].font( 'script' => "Guru", 'typeface' => "Raavi")
83
+ xml['a'].font( 'script' => "Cans", 'typeface' => "Euphemia")
84
+ xml['a'].font( 'script' => "Cher", 'typeface' => "Plantagenet Cherokee")
85
+ xml['a'].font( 'script' => "Yiii", 'typeface' => "Microsoft Yi Baiti")
86
+ xml['a'].font( 'script' => "Tibt", 'typeface' => "Microsoft Himalaya")
87
+ xml['a'].font( 'script' => "Thaa", 'typeface' => "MV Boli")
88
+ xml['a'].font( 'script' => "Deva", 'typeface' => "Mangal")
89
+ xml['a'].font( 'script' => "Telu", 'typeface' => "Gautami")
90
+ xml['a'].font( 'script' => "Taml", 'typeface' => "Latha")
91
+ xml['a'].font( 'script' => "Syrc", 'typeface' => "Estrangelo Edessa")
92
+ xml['a'].font( 'script' => "Orya", 'typeface' => "Kalinga")
93
+ xml['a'].font( 'script' => "Mlym", 'typeface' => "Kartika")
94
+ xml['a'].font( 'script' => "Laoo", 'typeface' => "DokChampa")
95
+ xml['a'].font( 'script' => "Sinh", 'typeface' => "Iskoola Pota")
96
+ xml['a'].font( 'script' => "Mong", 'typeface' => "Mongolian Baiti")
97
+ xml['a'].font( 'script' => "Viet", 'typeface' => "Times New Roman")
98
+ xml['a'].font( 'script' => "Uigh", 'typeface' => "Microsoft Uighur")
99
+ xml['a'].font( 'script' => "Geor", 'typeface' => "Sylfaen")
100
+ end
101
+ xml['a'].minorFont do
102
+ xml['a'].latin( 'typeface' => "Calibri")
103
+ xml['a'].ea( 'typeface' => "")
104
+ xml['a'].cs( 'typeface' => "")
105
+ xml['a'].font( 'script' => "Jpan", 'typeface' => "MS 明朝")
106
+ xml['a'].font( 'script' => "Hang", 'typeface' => "맑은 고딕")
107
+ xml['a'].font( 'script' => "Hans", 'typeface' => "宋体")
108
+ xml['a'].font( 'script' => "Hant", 'typeface' => "新細明體")
109
+ xml['a'].font( 'script' => "Arab", 'typeface' => "Arial")
110
+ xml['a'].font( 'script' => "Hebr", 'typeface' => "Arial")
111
+ xml['a'].font( 'script' => "Thai", 'typeface' => "Cordia New")
112
+ xml['a'].font( 'script' => "Ethi", 'typeface' => "Nyala")
113
+ xml['a'].font( 'script' => "Beng", 'typeface' => "Vrinda")
114
+ xml['a'].font( 'script' => "Gujr", 'typeface' => "Shruti")
115
+ xml['a'].font( 'script' => "Khmr", 'typeface' => "DaunPenh")
116
+ xml['a'].font( 'script' => "Knda", 'typeface' => "Tunga")
117
+ xml['a'].font( 'script' => "Guru", 'typeface' => "Raavi")
118
+ xml['a'].font( 'script' => "Cans", 'typeface' => "Euphemia")
119
+ xml['a'].font( 'script' => "Cher", 'typeface' => "Plantagenet Cherokee")
120
+ xml['a'].font( 'script' => "Yiii", 'typeface' => "Microsoft Yi Baiti")
121
+ xml['a'].font( 'script' => "Tibt", 'typeface' => "Microsoft Himalaya")
122
+ xml['a'].font( 'script' => "Thaa", 'typeface' => "MV Boli")
123
+ xml['a'].font( 'script' => "Deva", 'typeface' => "Mangal")
124
+ xml['a'].font( 'script' => "Telu", 'typeface' => "Gautami")
125
+ xml['a'].font( 'script' => "Taml", 'typeface' => "Latha")
126
+ xml['a'].font( 'script' => "Syrc", 'typeface' => "Estrangelo Edessa")
127
+ xml['a'].font( 'script' => "Orya", 'typeface' => "Kalinga")
128
+ xml['a'].font( 'script' => "Mlym", 'typeface' => "Kartika")
129
+ xml['a'].font( 'script' => "Laoo", 'typeface' => "DokChampa")
130
+ xml['a'].font( 'script' => "Sinh", 'typeface' => "Iskoola Pota")
131
+ xml['a'].font( 'script' => "Mong", 'typeface' => "Mongolian Baiti")
132
+ xml['a'].font( 'script' => "Viet", 'typeface' => "Arial")
133
+ xml['a'].font( 'script' => "Uigh", 'typeface' => "Microsoft Uighur")
134
+ xml['a'].font( 'script' => "Geor", 'typeface' => "Sylfaen")
135
+ end
136
+ end
137
+ xml['a'].fmtScheme( 'name' => "Office") do
138
+ xml['a'].fillStyleLst do
139
+ xml['a'].solidFill do
140
+ xml['a'].schemeClr( 'val' => "phClr" )
141
+ end
142
+ xml['a'].gradFill( 'rotWithShape' => "1") do
143
+ xml['a'].gsLst do
144
+ xml['a'].gs( 'pos' => "0" ) do
145
+ xml['a'].schemeClr( 'val' => "phClr" ) do
146
+ xml['a'].tint( 'val' => "50000" )
147
+ xml['a'].satMod( 'val' => "300000" )
148
+ end
149
+ end
150
+ xml['a'].gs( 'pos' => "35000") do
151
+ xml['a'].schemeClr( 'val' => "phClr") do
152
+ xml['a'].tint( 'val' => "37000")
153
+ xml['a'].satMod( 'val' => "300000")
154
+ end
155
+ end
156
+ xml['a'].gs( 'pos' => "100000" ) do
157
+ xml['a'].schemeClr( 'val' => "phClr" ) do
158
+ xml['a'].tint( 'val' => "15000")
159
+ xml['a'].satMod( 'val' => "350000")
160
+ end
161
+ end
162
+ end
163
+ xml['a'].lin( 'ang' => "16200000", 'scaled' => "1")
164
+ end
165
+ xml['a'].gradFill( 'rotWithShape' => "1") do
166
+ xml['a'].gsLst do
167
+ xml['a'].gs( 'pos' => "0") do
168
+ xml['a'].schemeClr( 'val' => "phClr") do
169
+ xml['a'].shade( 'val' => "51000")
170
+ xml['a'].satMod( 'val' => "130000")
171
+ end
172
+ end
173
+ xml['a'].gs( 'pos' => "80000" ) do
174
+ xml['a'].schemeClr( 'val' => "phClr") do
175
+ xml['a'].shade( 'val' => "93000")
176
+ xml['a'].satMod( 'val' => "130000")
177
+ end
178
+ end
179
+ xml['a'].gs( 'pos' => "100000") do
180
+ xml['a'].schemeClr( 'val' => "phClr") do
181
+ xml['a'].shade( 'val' => "94000")
182
+ xml['a'].satMod( 'val' => "135000")
183
+ end
184
+ end
185
+ end
186
+ xml['a'].lin( 'ang' => "16200000", 'scaled' => "0")
187
+ end
188
+ end
189
+ xml['a'].lnStyleLst do
190
+ xml['a'].ln( 'w' => "9525", 'cap' => "flat", 'cmpd' => "sng", 'algn' => "ctr") do
191
+ xml['a'].solidFill do
192
+ xml['a'].schemeClr( 'val' => "phClr") do
193
+ xml['a'].shade( 'val' => "95000")
194
+ xml['a'].satMod( 'val' => "105000")
195
+ end
196
+ end
197
+ xml['a'].prstDash( 'val' => "solid")
198
+ end
199
+ xml['a'].ln( 'w' => "25400", 'cap' => "flat", 'cmpd' => "sng", 'algn' => "ctr") do
200
+ xml['a'].solidFill do
201
+ xml['a'].schemeClr( 'val' => "phClr")
202
+ end
203
+ xml['a'].prstDash( 'val' => "solid")
204
+ end
205
+ xml['a'].ln( 'w' => "38100", 'cap' => "flat", 'cmpd' => "sng", 'algn' => "ctr") do
206
+ xml['a'].solidFill do
207
+ xml['a'].schemeClr( 'val' => "phClr")
208
+ end
209
+ xml['a'].prstDash( 'val' => "solid")
210
+ end
211
+ end
212
+ xml['a'].effectStyleLst do
213
+ xml['a'].effectStyle do
214
+ xml['a'].effectLst do
215
+ xml['a'].outerShdw( 'blurRad' => "40000", 'dist' => "20000", 'dir' => "5400000", 'rotWithShape' => "0") do
216
+ xml['a'].srgbClr( 'val' => "000000") do
217
+ xml['a'].alpha( 'val' => "38000")
218
+ end
219
+ end
220
+ end
221
+ end
222
+ xml['a'].effectStyle do
223
+ xml['a'].effectLst do
224
+ xml['a'].outerShdw( 'blurRad' => "40000", 'dist' => "23000", 'dir' => "5400000", 'rotWithShape' => "0") do
225
+ xml['a'].srgbClr( 'val' => "000000") do
226
+ xml['a'].alpha( 'val' => "35000")
227
+ end
228
+ end
229
+ end
230
+ end
231
+ xml['a'].effectStyle do
232
+ xml['a'].effectLst do
233
+ xml['a'].outerShdw( 'blurRad' => "40000", 'dist' => "23000", 'dir' => "5400000", 'rotWithShape' => "0") do
234
+ xml['a'].srgbClr( 'val' => "000000") do
235
+ xml['a'].alpha( 'val' => "35000")
236
+ end
237
+ end
238
+ end
239
+ xml['a'].scene3d do
240
+ xml['a'].camera( 'prst' => "orthographicFront") do
241
+ xml['a'].rot( 'lat' => "0", 'lon' => "0", 'rev' => "0")
242
+ end
243
+ xml['a'].lightRig( 'rig' => "threePt", 'dir' => "t") do
244
+ xml['a'].rot( 'lat' => "0", 'lon' => "0", 'rev' => "1200000")
245
+ end
246
+ end
247
+ xml['a'].sp3d do
248
+ xml['a'].bevelT( 'w' => "63500", 'h' => "25400")
249
+ end
250
+ end
251
+ end
252
+ xml['a'].bgFillStyleLst do
253
+ xml['a'].solidFill do
254
+ xml['a'].schemeClr( 'val' => "phClr")
255
+ end
256
+ xml['a'].gradFill( 'rotWithShape' => "1") do
257
+ xml['a'].gsLst do
258
+ xml['a'].gs( 'pos' => "0") do
259
+ xml['a'].schemeClr( 'val' => "phClr") do
260
+ xml['a'].tint( 'val' => "40000")
261
+ xml['a'].satMod( 'val' => "350000")
262
+ end
263
+ end
264
+ xml['a'].gs( 'pos' => "40000") do
265
+ xml['a'].schemeClr( 'val' => "phClr") do
266
+ xml['a'].tint( 'val' => "45000")
267
+ xml['a'].shade( 'val' => "99000")
268
+ xml['a'].satMod( 'val' => "350000")
269
+ end
270
+ end
271
+ xml['a'].gs( 'pos' => "100000") do
272
+ xml['a'].schemeClr( 'val' => "phClr") do
273
+ xml['a'].shade( 'val' => "20000")
274
+ xml['a'].satMod( 'val' => "255000")
275
+ end
276
+ end
277
+ end
278
+ xml['a'].path( 'path' => "circle") do
279
+ xml['a'].fillToRect( 'l' => "50000", 't' => "-80000", 'r' => "50000", 'b' => "180000")
280
+ end
281
+ end
282
+ xml['a'].gradFill( 'rotWithShape' => "1") do
283
+ xml['a'].gsLst do
284
+ xml['a'].gs( 'pos' => "0") do
285
+ xml['a'].schemeClr( 'val' => "phClr") do
286
+ xml['a'].tint( 'val' => "80000")
287
+ xml['a'].satMod( 'val' => "300000")
288
+ end
289
+ end
290
+ xml['a'].gs( 'pos' => "100000") do
291
+ xml['a'].schemeClr( 'val' => "phClr") do
292
+ xml['a'].shade( 'val' => "30000")
293
+ xml['a'].satMod( 'val' => "200000")
294
+ end
295
+ end
296
+ end
297
+ xml['a'].path( 'path' => "circle") do
298
+ xml['a'].fillToRect( 'l' => "50000", 't' => "50000", 'r' => "50000", 'b' => "50000")
299
+ end
300
+ end
301
+ end
302
+ end
303
+ end
304
+ xml['a'].objectDefaults
305
+ xml['a'].extraClrSchemeLst
306
+ end
307
+ end
308
+ end
309
+
310
+ end
311
+ end
312
+ end
313
+ end
@@ -0,0 +1,29 @@
1
+ module Docxer
2
+ module Word
3
+ class WebSettings
4
+
5
+ attr_accessor :options
6
+ def initialize(options)
7
+ @options = options
8
+ end
9
+
10
+ def render(zip)
11
+ zip.put_next_entry('word/webSettings.xml')
12
+ zip.write(Docxer.to_xml(document))
13
+ end
14
+
15
+ private
16
+ def document
17
+ Nokogiri::XML::Builder.with(Nokogiri::XML('<?xml version="1.0" encoding="UTF-8" standalone="yes"?>')) do |xml|
18
+ xml.webSettings('xmlns:mc' => "http://schemas.openxmlformats.org/markup-compatibility/2006", 'xmlns:r' => "http://schemas.openxmlformats.org/officeDocument/2006/relationships", 'xmlns:w' => "http://schemas.openxmlformats.org/wordprocessingml/2006/main", 'xmlns:w14' => "http://schemas.microsoft.com/office/word/2010/wordml", 'mc:Ignorable' => "w14") do
19
+ xml.parent.namespace = xml.parent.namespace_definitions.find{|ns| ns.prefix == "w" }
20
+ xml.optimizeForBrowser
21
+ xml.allowPNG
22
+ end
23
+ end
24
+ end
25
+
26
+
27
+ end
28
+ end
29
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: docxer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.1
5
+ platform: ruby
6
+ authors:
7
+ - Timur Gabdrakipov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2012-03-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.6.3
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.7'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.6.3
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.7'
33
+ - !ruby/object:Gem::Dependency
34
+ name: rubyzip
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.9.9
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.9.9
47
+ description: Provides ability to create docx documents using Ruby
48
+ email: gtimti@gmail.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - LICENSE
54
+ - README.md
55
+ - Rakefile
56
+ - lib/docxer.rb
57
+ - lib/docxer/content_types.rb
58
+ - lib/docxer/content_types/default.rb
59
+ - lib/docxer/content_types/override.rb
60
+ - lib/docxer/document.rb
61
+ - lib/docxer/properties.rb
62
+ - lib/docxer/properties/app.rb
63
+ - lib/docxer/properties/core.rb
64
+ - lib/docxer/relationships.rb
65
+ - lib/docxer/relationships/relationship.rb
66
+ - lib/docxer/version.rb
67
+ - lib/docxer/word.rb
68
+ - lib/docxer/word/contents.rb
69
+ - lib/docxer/word/contents/break.rb
70
+ - lib/docxer/word/contents/image.rb
71
+ - lib/docxer/word/contents/paragraph.rb
72
+ - lib/docxer/word/contents/table.rb
73
+ - lib/docxer/word/contents/table_of_content.rb
74
+ - lib/docxer/word/contents/text.rb
75
+ - lib/docxer/word/document.rb
76
+ - lib/docxer/word/effects.rb
77
+ - lib/docxer/word/endnotes.rb
78
+ - lib/docxer/word/fonts.rb
79
+ - lib/docxer/word/fonts/font.rb
80
+ - lib/docxer/word/footers.rb
81
+ - lib/docxer/word/footers/footer.rb
82
+ - lib/docxer/word/footnotes.rb
83
+ - lib/docxer/word/headers.rb
84
+ - lib/docxer/word/headers/header.rb
85
+ - lib/docxer/word/helpers.rb
86
+ - lib/docxer/word/medias.rb
87
+ - lib/docxer/word/medias/media.rb
88
+ - lib/docxer/word/numbering.rb
89
+ - lib/docxer/word/relationships.rb
90
+ - lib/docxer/word/relationships/relationship.rb
91
+ - lib/docxer/word/settings.rb
92
+ - lib/docxer/word/styles.rb
93
+ - lib/docxer/word/themes.rb
94
+ - lib/docxer/word/themes/theme.rb
95
+ - lib/docxer/word/web_settings.rb
96
+ homepage: http://github.com/gtimti/docxer
97
+ licenses:
98
+ - MIT
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 2.4.6
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: docx files generator
120
+ test_files: []
121
+ has_rdoc: