docxi 0.0.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 (45) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +119 -0
  4. data/Rakefile +10 -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 +120 -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,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: docxi
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Irfan Babar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-14 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: Create docx template using Ruby
48
+ email: salman.shan@phaedrasolutions.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: ''
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.3
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: Docx Template Generator
120
+ test_files: []