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.
- checksums.yaml +7 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +66 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/create_database.sh +1 -0
- data/create_database.sql +55 -0
- data/devinit +71 -0
- data/devinit.log +25 -0
- data/docgen +0 -0
- data/docgen.gemspec +43 -0
- data/document.html +22 -0
- data/document.latex +50 -0
- data/images/docgen-text-replacement.png +0 -0
- data/images/pptx-customization.png +0 -0
- data/lib/db.rb +25 -0
- data/lib/docgen.rb +58 -0
- data/lib/docgen/version.rb +3 -0
- data/lib/gen_html.rb +14 -0
- data/lib/gen_latex.rb +15 -0
- data/lib/gen_pdf.rb +18 -0
- data/lib/gen_text.rb +7 -0
- data/lib/process_pptx.rb +230 -0
- data/lib/settings.rb +13 -0
- data/lib/slide_set.rb +22 -0
- data/lib/zip_utils.rb +55 -0
- data/settings.yml +3 -0
- data/temp.pdf +105 -0
- data/template.html.erb +8 -0
- metadata +219 -0
data/lib/slide_set.rb
ADDED
@@ -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
|
data/lib/zip_utils.rb
ADDED
@@ -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
|
data/settings.yml
ADDED
data/temp.pdf
ADDED
@@ -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
|
data/template.html.erb
ADDED
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: []
|