docgen 0.1.0

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.
@@ -0,0 +1,22 @@
1
+ # This is a container for an entry in a list of PowerPoint packages
2
+ # containing slides that are to be inserted into a base PowerPoint deck.
3
+ class SlideSet
4
+
5
+ # name is a string that is expected to match a string found in a
6
+ # pptx file, marking the point at which to insert the slides
7
+ # contained in "package".
8
+ # package is an opened pptx file (not a file path)
9
+ def initialize name, package
10
+ @name = name
11
+ @package = package
12
+ end
13
+
14
+ def name
15
+ @name
16
+ end
17
+
18
+ def package
19
+ @package
20
+ end
21
+
22
+ end
@@ -0,0 +1,55 @@
1
+ require 'fileutils'
2
+ require 'zip'
3
+ require_relative "./settings"
4
+
5
+ module ZipUtils
6
+
7
+ def unzip zipfile_name
8
+ temp_dirname = @settings['ziptemp']
9
+ FileUtils.rm_r temp_dirname if File.directory?(temp_dirname)
10
+ content = []
11
+ Zip::File.open(zipfile_name) do |zip_file|
12
+ zip_file.each do |entry|
13
+ entry.extract("#{temp_dirname}/#{entry.name}")
14
+ input_stream = entry.get_input_stream
15
+ content << input_stream.read unless input_stream == Zip::NullInputStream
16
+ end
17
+ end
18
+ content
19
+ end
20
+
21
+ def zip source_dirname, target_filename
22
+ FileUtils.rm_f target_filename
23
+ entries = Dir.entries(source_dirname); entries.delete("."); entries.delete("..")
24
+ io = Zip::File.open(target_filename, Zip::File::CREATE);
25
+ writeEntries(source_dirname, entries, "", io)
26
+ io.close();
27
+ end
28
+
29
+ def zip_entries zipfile_name
30
+ entry_names = []
31
+ Zip::File.open(zipfile_name) do |zip_file|
32
+ zip_file.each do |entry|
33
+ entry_names << entry.name
34
+ end
35
+ end
36
+ entry_names
37
+ end
38
+
39
+ private
40
+
41
+ def writeEntries(source_dirname, entries, path, io)
42
+ entries.each { |e|
43
+ zipFilePath = path == "" ? e : File.join(path, e)
44
+ diskFilePath = File.join(source_dirname, zipFilePath)
45
+ if File.directory?(diskFilePath)
46
+ io.mkdir(zipFilePath)
47
+ subdir =Dir.entries(diskFilePath); subdir.delete("."); subdir.delete("..")
48
+ writeEntries(source_dirname, subdir, zipFilePath, io)
49
+ else
50
+ io.get_output_stream(zipFilePath) { |f| f.puts(File.open(diskFilePath, "rb").read())}
51
+ end
52
+ }
53
+ end
54
+
55
+ end
@@ -0,0 +1,3 @@
1
+ # Name of directory for temporary files during zip/unzip operations
2
+ # relative to the project root directory
3
+ ziptemp: ziptemp
@@ -0,0 +1,105 @@
1
+ %PDF-1.3
2
+ %����
3
+ 1 0 obj
4
+ << /Creator <feff006b00720061006d0064006f0077006e002000500044004600200063006f006e007600650072007400650072>
5
+ /CreationDate (D:20170209130227-08'00')
6
+ /Producer <feff0050007200610077006e>
7
+ >>
8
+ endobj
9
+ 2 0 obj
10
+ << /Type /Catalog
11
+ /Pages 3 0 R
12
+ /Names 7 0 R
13
+ /Outlines 11 0 R
14
+ >>
15
+ endobj
16
+ 3 0 obj
17
+ << /Type /Pages
18
+ /Count 1
19
+ /Kids [5 0 R]
20
+ >>
21
+ endobj
22
+ 4 0 obj
23
+ << /Length 222
24
+ /Filter [/FlateDecode]
25
+ >>
26
+ stream
27
+ x��Q�j1 ���ǖ����HpR,w{}����nC8�
28
+ �VIL�!���*��o: n�
29
+ endstream
30
+ endobj
31
+ 5 0 obj
32
+ << /Type /Page
33
+ /Parent 3 0 R
34
+ /MediaBox [0 0 595.28 841.89]
35
+ /Contents 4 0 R
36
+ /Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
37
+ /Font << /F2.0 9 0 R
38
+ /F3.0 10 0 R
39
+ >>
40
+ >>
41
+ >>
42
+ endobj
43
+ 6 0 obj
44
+ [5 0 R /XYZ 0 785.1971 null]
45
+ endobj
46
+ 7 0 obj
47
+ << /Type /Names
48
+ /Dests 8 0 R
49
+ >>
50
+ endobj
51
+ 8 0 obj
52
+ << /Names [(head1) 6 0 R]
53
+ >>
54
+ endobj
55
+ 9 0 obj
56
+ << /Type /Font
57
+ /Subtype /Type1
58
+ /BaseFont /Helvetica-Bold
59
+ /Encoding /WinAnsiEncoding
60
+ >>
61
+ endobj
62
+ 10 0 obj
63
+ << /Type /Font
64
+ /Subtype /Type1
65
+ /BaseFont /Times-Roman
66
+ /Encoding /WinAnsiEncoding
67
+ >>
68
+ endobj
69
+ 11 0 obj
70
+ << /Type /Outlines
71
+ /Count 1
72
+ /First 12 0 R
73
+ /Last 12 0 R
74
+ >>
75
+ endobj
76
+ 12 0 obj
77
+ << /Title <feff00480065006100640069006e00670020006c006500760065006c00200031>
78
+ /Parent 11 0 R
79
+ /Count 0
80
+ /Dest [5 0 R /XYZ 0 785.1971 null]
81
+ >>
82
+ endobj
83
+ xref
84
+ 0 13
85
+ 0000000000 65535 f
86
+ 0000000015 00000 n
87
+ 0000000217 00000 n
88
+ 0000000296 00000 n
89
+ 0000000353 00000 n
90
+ 0000000649 00000 n
91
+ 0000000842 00000 n
92
+ 0000000886 00000 n
93
+ 0000000933 00000 n
94
+ 0000000977 00000 n
95
+ 0000001079 00000 n
96
+ 0000001179 00000 n
97
+ 0000001253 00000 n
98
+ trailer
99
+ << /Size 13
100
+ /Root 2 0 R
101
+ /Info 1 0 R
102
+ >>
103
+ startxref
104
+ 1408
105
+ %%EOF
@@ -0,0 +1,8 @@
1
+ <html>
2
+ <head>
3
+ <title>Test Template</title>
4
+ </head>
5
+ <body>
6
+ <%= @body %>
7
+ </body>
8
+ </html>
metadata ADDED
@@ -0,0 +1,219 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: docgen
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Dave Nicolette
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-06-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.13'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sqlite3
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sequel
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '4.43'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '4.43'
83
+ - !ruby/object:Gem::Dependency
84
+ name: kramdown
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.13'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.13'
97
+ - !ruby/object:Gem::Dependency
98
+ name: nokogiri
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.7'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.7'
111
+ - !ruby/object:Gem::Dependency
112
+ name: prawn
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.1'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.1'
125
+ - !ruby/object:Gem::Dependency
126
+ name: prawn-table
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.2'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.2'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubyzip
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.2'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.2'
153
+ description: Generate documents in various formats based on standard boilerplate and
154
+ custom content.
155
+ email:
156
+ - davenicolette@gmail.com
157
+ executables: []
158
+ extensions: []
159
+ extra_rdoc_files: []
160
+ files:
161
+ - ".gitignore"
162
+ - ".rspec"
163
+ - ".travis.yml"
164
+ - CODE_OF_CONDUCT.md
165
+ - Gemfile
166
+ - LICENSE.txt
167
+ - README.md
168
+ - Rakefile
169
+ - bin/console
170
+ - bin/setup
171
+ - create_database.sh
172
+ - create_database.sql
173
+ - devinit
174
+ - devinit.log
175
+ - docgen
176
+ - docgen.gemspec
177
+ - document.html
178
+ - document.latex
179
+ - images/docgen-text-replacement.png
180
+ - images/pptx-customization.png
181
+ - lib/db.rb
182
+ - lib/docgen.rb
183
+ - lib/docgen/version.rb
184
+ - lib/gen_html.rb
185
+ - lib/gen_latex.rb
186
+ - lib/gen_pdf.rb
187
+ - lib/gen_text.rb
188
+ - lib/process_pptx.rb
189
+ - lib/settings.rb
190
+ - lib/slide_set.rb
191
+ - lib/zip_utils.rb
192
+ - settings.yml
193
+ - temp.pdf
194
+ - template.html.erb
195
+ homepage: https://github.com/neopragma/docgen
196
+ licenses:
197
+ - MIT
198
+ metadata: {}
199
+ post_install_message:
200
+ rdoc_options: []
201
+ require_paths:
202
+ - lib
203
+ required_ruby_version: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ required_rubygems_version: !ruby/object:Gem::Requirement
209
+ requirements:
210
+ - - ">="
211
+ - !ruby/object:Gem::Version
212
+ version: '0'
213
+ requirements: []
214
+ rubyforge_project:
215
+ rubygems_version: 2.6.12
216
+ signing_key:
217
+ specification_version: 4
218
+ summary: Merge boilerplate and custom content to generate documents.
219
+ test_files: []