paperwork 0.2.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 +15 -0
- data/.gitlab-ci.yml +65 -0
- data/.rspec +3 -0
- data/.rubocop.yml +68 -0
- data/.travis.yml +6 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +68 -0
- data/LICENSE.txt +21 -0
- data/README.md +86 -0
- data/Rakefile +16 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/custom.css +1 -0
- data/custom.js +1 -0
- data/lib/paperwork.rb +39 -0
- data/lib/paperwork/assets/paperwork/presentation.css +58 -0
- data/lib/paperwork/assets/presentation.css +153 -0
- data/lib/paperwork/config.rb +45 -0
- data/lib/paperwork/tasks.rb +25 -0
- data/lib/paperwork/tasks/base.rb +47 -0
- data/lib/paperwork/tasks/build_dir.rb +27 -0
- data/lib/paperwork/tasks/build_file.rb +32 -0
- data/lib/paperwork/tasks/document.rb +106 -0
- data/lib/paperwork/tasks/middleman_template/Gemfile +11 -0
- data/lib/paperwork/tasks/middleman_template/Gemfile.lock +131 -0
- data/lib/paperwork/tasks/middleman_template/config.rb +82 -0
- data/lib/paperwork/tasks/middleman_template/data/.keep +0 -0
- data/lib/paperwork/tasks/middleman_template/lib/doc_renderer.rb +137 -0
- data/lib/paperwork/tasks/middleman_template/lib/info_helpers.rb +43 -0
- data/lib/paperwork/tasks/middleman_template/package.json +12 -0
- data/lib/paperwork/tasks/middleman_template/source/images/.keep +0 -0
- data/lib/paperwork/tasks/middleman_template/source/javascripts/site.js +8 -0
- data/lib/paperwork/tasks/middleman_template/source/layouts/_document.erb +49 -0
- data/lib/paperwork/tasks/middleman_template/source/layouts/_header.erb +28 -0
- data/lib/paperwork/tasks/middleman_template/source/layouts/_info.erb +23 -0
- data/lib/paperwork/tasks/middleman_template/source/layouts/_navbar.erb +13 -0
- data/lib/paperwork/tasks/middleman_template/source/layouts/layout.erb +11 -0
- data/lib/paperwork/tasks/middleman_template/source/stylesheets/rogue.css.erb +1 -0
- data/lib/paperwork/tasks/middleman_template/source/stylesheets/site.css.scss +31 -0
- data/lib/paperwork/tasks/middleman_template/webpack.config.js +17 -0
- data/lib/paperwork/tasks/middleman_template/yarn.lock +1337 -0
- data/lib/paperwork/tasks/root_helpers.rb +53 -0
- data/lib/paperwork/tasks/template.rb +46 -0
- data/lib/paperwork/version.rb +5 -0
- data/navdemo.md +5 -0
- data/paperwork.gemspec +38 -0
- data/site.yml +7 -0
- metadata +193 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
.slide {
|
2
|
+
background-color: rgb(52, 105, 165);
|
3
|
+
color: white;
|
4
|
+
}
|
5
|
+
|
6
|
+
a {
|
7
|
+
color: rgba(245, 245, 245, 0.705);
|
8
|
+
}
|
9
|
+
a:hover {
|
10
|
+
color: currentColor;
|
11
|
+
border-color: currentColor;
|
12
|
+
border-bottom: 0.01vh dotted;
|
13
|
+
text-decoration: none;
|
14
|
+
}
|
15
|
+
|
16
|
+
.cover .logo {
|
17
|
+
padding-left: 2vh;
|
18
|
+
padding-right: 2vh;
|
19
|
+
border-left: 0.2vh dotted;
|
20
|
+
border-right: 0.2vh dotted;
|
21
|
+
border-radius: 1.2vh;
|
22
|
+
border-color: currentColor;
|
23
|
+
}
|
24
|
+
|
25
|
+
.bye .info {
|
26
|
+
text-align: right;
|
27
|
+
margin-left: 120vh;
|
28
|
+
margin-top: 58vh;
|
29
|
+
}
|
30
|
+
|
31
|
+
.bye .info .list-group-item {
|
32
|
+
padding-left: 2vh;
|
33
|
+
padding-right: 2vh;
|
34
|
+
border-left: 0.2vh dotted;
|
35
|
+
border-right: 0.2vh dotted;
|
36
|
+
border-radius: 1.2vh;
|
37
|
+
border-color: transparent;
|
38
|
+
}
|
39
|
+
|
40
|
+
.bye .info .list-group-item:hover {
|
41
|
+
border-color: currentColor;
|
42
|
+
}
|
43
|
+
|
44
|
+
pre[class*="language-"] {
|
45
|
+
padding: 0.8vh;
|
46
|
+
padding-left: 3vh;
|
47
|
+
background-color: rgb(54, 72, 92);
|
48
|
+
}
|
49
|
+
|
50
|
+
code[class*="language-"] {
|
51
|
+
background-color: inherit;
|
52
|
+
color: white;
|
53
|
+
}
|
54
|
+
|
55
|
+
code {
|
56
|
+
background-color: inherit;
|
57
|
+
color: rgb(185, 226, 245);
|
58
|
+
}
|
@@ -0,0 +1,153 @@
|
|
1
|
+
body {
|
2
|
+
font-size: 2vh;
|
3
|
+
overflow: hidden;
|
4
|
+
background-color: black;
|
5
|
+
color: black;
|
6
|
+
}
|
7
|
+
|
8
|
+
.slide {
|
9
|
+
position: absolute;
|
10
|
+
height: 100vh;
|
11
|
+
width: 177vh;
|
12
|
+
z-index: 0;
|
13
|
+
background-color: white;
|
14
|
+
}
|
15
|
+
|
16
|
+
.slide:target, #slide-0 {
|
17
|
+
z-index: 1;
|
18
|
+
}
|
19
|
+
|
20
|
+
.slide .content {
|
21
|
+
padding-top: 3.5vh;
|
22
|
+
padding-bottom: 2vh;
|
23
|
+
padding-left: 6.2vh;
|
24
|
+
padding-right: 6.2vh;
|
25
|
+
}
|
26
|
+
|
27
|
+
.cover .logo {
|
28
|
+
text-align: center;
|
29
|
+
font-size: 5vh;
|
30
|
+
margin-top: 30vh;
|
31
|
+
}
|
32
|
+
|
33
|
+
.cover .info {
|
34
|
+
margin-top:30vh;
|
35
|
+
margin-left: 5.3vh;
|
36
|
+
}
|
37
|
+
|
38
|
+
.bye {
|
39
|
+
padding-top: 25vh;
|
40
|
+
}
|
41
|
+
|
42
|
+
.bye .info {
|
43
|
+
margin-top: 40vh;
|
44
|
+
font-size: 1.9vh;
|
45
|
+
width: fit-content;
|
46
|
+
}
|
47
|
+
|
48
|
+
/* .bye a {
|
49
|
+
color: currentColor;
|
50
|
+
} */
|
51
|
+
|
52
|
+
.bye .info .list-group-item {
|
53
|
+
background-color: inherit;
|
54
|
+
color: inherit;
|
55
|
+
padding: 0vh;
|
56
|
+
border: none;
|
57
|
+
}
|
58
|
+
|
59
|
+
.bye .icon {
|
60
|
+
margin-right: 2vh;
|
61
|
+
font-size: 2.2vh;
|
62
|
+
font-weight: bold;
|
63
|
+
}
|
64
|
+
|
65
|
+
.navigation {
|
66
|
+
position: absolute;
|
67
|
+
bottom: 15vh;
|
68
|
+
width: 177vh;
|
69
|
+
padding-left: 0%;
|
70
|
+
padding-right: 0%;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
h1 {
|
75
|
+
font-size: 5vh;
|
76
|
+
margin-bottom: 2vh;
|
77
|
+
}
|
78
|
+
|
79
|
+
h2 {
|
80
|
+
font-size: 3vh;
|
81
|
+
margin-bottom: 4vh;
|
82
|
+
}
|
83
|
+
|
84
|
+
h3 {
|
85
|
+
margin-top: 4vh;
|
86
|
+
font-size: 2.6vh;
|
87
|
+
}
|
88
|
+
|
89
|
+
h4 {
|
90
|
+
font-size: 2.3vh;
|
91
|
+
}
|
92
|
+
|
93
|
+
h5 {
|
94
|
+
font-size: 2vh;
|
95
|
+
}
|
96
|
+
|
97
|
+
h6 {
|
98
|
+
font-size: 2vh;
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
/* bootstrap w-xx classes are marked !important, so it's
|
103
|
+
* not possible to overwrite them here. let's use
|
104
|
+
* separate ones and transform w-xx to these during
|
105
|
+
* generation process
|
106
|
+
*/
|
107
|
+
.width-25 {
|
108
|
+
width: 14.1%;
|
109
|
+
}
|
110
|
+
|
111
|
+
.width-33 {
|
112
|
+
width: 18.6%;
|
113
|
+
}
|
114
|
+
|
115
|
+
.width-50 {
|
116
|
+
width: 28.2%;
|
117
|
+
}
|
118
|
+
|
119
|
+
.width-75 {
|
120
|
+
width: 42.3%;
|
121
|
+
}
|
122
|
+
|
123
|
+
.width-100 {
|
124
|
+
width: 56.4%;
|
125
|
+
}
|
126
|
+
|
127
|
+
.width-150 {
|
128
|
+
width: 84.6%;
|
129
|
+
}
|
130
|
+
|
131
|
+
.width-200 {
|
132
|
+
width: 112.8%;
|
133
|
+
}
|
134
|
+
|
135
|
+
/* position up to three images next to each other */
|
136
|
+
img {
|
137
|
+
margin-right: 6%;
|
138
|
+
}
|
139
|
+
|
140
|
+
h1 img {
|
141
|
+
margin-right: 0%;
|
142
|
+
}
|
143
|
+
|
144
|
+
.slide-footer {
|
145
|
+
position: absolute;
|
146
|
+
bottom: 0vh;
|
147
|
+
width: 177vh;
|
148
|
+
padding-bottom: 1.5vh;
|
149
|
+
padding-left: 8.9vh;
|
150
|
+
padding-right: 8.9vh;
|
151
|
+
color: currentColor;
|
152
|
+
font-size: 1.35vh;
|
153
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Paperwork
|
4
|
+
##
|
5
|
+
# paperwork configuration
|
6
|
+
#
|
7
|
+
# currently available options are:
|
8
|
+
# :build_root build directory [default: .work]
|
9
|
+
# :bundle_jobs number of jobs for bundle install [default: 8]
|
10
|
+
# :verbose verbose middleman build [default: false]
|
11
|
+
#
|
12
|
+
class Config
|
13
|
+
attr_accessor :options
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
self.options = {
|
17
|
+
build_root: ".work",
|
18
|
+
bundle_jobs: 8,
|
19
|
+
verbose: false,
|
20
|
+
custom_css: [],
|
21
|
+
custom_js: []
|
22
|
+
}
|
23
|
+
end
|
24
|
+
|
25
|
+
def [](key)
|
26
|
+
self.options[key]
|
27
|
+
end
|
28
|
+
|
29
|
+
def []=(key, value)
|
30
|
+
self.options[key] = value
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.[](key)
|
34
|
+
self.instance[key]
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.[]=(key, value)
|
38
|
+
self.instance[key] = value
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.instance
|
42
|
+
@@instance ||= self.new
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
##
|
4
|
+
# global paperwork namespace
|
5
|
+
module Paperwork
|
6
|
+
def paperwork_configure
|
7
|
+
yield Paperwork::Config.instance
|
8
|
+
end
|
9
|
+
|
10
|
+
##
|
11
|
+
# creates the document named by 'task'. if a hash is provided
|
12
|
+
# instead of task (like in regular task definitions in rake),
|
13
|
+
# the first key is used as name and it's associated values are
|
14
|
+
# treated as dependencies of that task.
|
15
|
+
#
|
16
|
+
def paperwork(task = nil, sources: [], **options)
|
17
|
+
dependencies = []
|
18
|
+
if task.nil?
|
19
|
+
task = options.keys.first
|
20
|
+
dependencies = options.delete(ntaskame)
|
21
|
+
end
|
22
|
+
doc = Paperwork::Tasks::Document.new(task, sources, *dependencies)
|
23
|
+
doc.create_tasks
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Paperwork
|
4
|
+
##
|
5
|
+
# task generators for building with middleman
|
6
|
+
module Tasks
|
7
|
+
##
|
8
|
+
# base class for all task generators. takes
|
9
|
+
# care that every task is registered and
|
10
|
+
# executed during build
|
11
|
+
#
|
12
|
+
class Base
|
13
|
+
attr_reader :name, :dependencies
|
14
|
+
|
15
|
+
def initialize(name, *dependencies)
|
16
|
+
@name = name
|
17
|
+
@dependencies = dependencies.compact
|
18
|
+
self.register(self)
|
19
|
+
end
|
20
|
+
|
21
|
+
def register(task)
|
22
|
+
registered_tasks[task.name] = task unless registered?(task.name)
|
23
|
+
end
|
24
|
+
|
25
|
+
def registered_tasks
|
26
|
+
@@registered_tasks ||= {}
|
27
|
+
end
|
28
|
+
|
29
|
+
def registered?(name)
|
30
|
+
registered_tasks.keys.include?(name)
|
31
|
+
end
|
32
|
+
|
33
|
+
def create_tasks
|
34
|
+
registered_tasks.each do |_name, task|
|
35
|
+
task.tasks
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.explain
|
40
|
+
list = @@registered_tasks.map do |_name, task|
|
41
|
+
"\t#{task.class}: #{task.name} => #{task.dependencies}"
|
42
|
+
end
|
43
|
+
list.join("\n")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Paperwork
|
4
|
+
##
|
5
|
+
# task generators for building with middleman
|
6
|
+
module Tasks
|
7
|
+
require "rake"
|
8
|
+
|
9
|
+
# directory task generator creating dirs recursively
|
10
|
+
class BuildDir < Paperwork::Tasks::Base
|
11
|
+
include Rake::DSL
|
12
|
+
|
13
|
+
def initialize(name, *dependencies)
|
14
|
+
dir = File.dirname(name)
|
15
|
+
if !dir.empty? && dir != "."
|
16
|
+
dependencies << dir
|
17
|
+
BuildDir.new(dir)
|
18
|
+
end
|
19
|
+
super(name, *dependencies)
|
20
|
+
end
|
21
|
+
|
22
|
+
def tasks
|
23
|
+
directory self.name => self.dependencies
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Paperwork
|
4
|
+
##
|
5
|
+
# task generators for building with middleman
|
6
|
+
module Tasks
|
7
|
+
require "rake"
|
8
|
+
|
9
|
+
##
|
10
|
+
# file task generator linking source files into the
|
11
|
+
# middleman template directory
|
12
|
+
#
|
13
|
+
class BuildFile < Paperwork::Tasks::BuildDir
|
14
|
+
attr_reader :source
|
15
|
+
|
16
|
+
include Rake::DSL
|
17
|
+
|
18
|
+
def initialize(name, source, *dependencies)
|
19
|
+
super(name, source, *dependencies)
|
20
|
+
@source = source
|
21
|
+
end
|
22
|
+
|
23
|
+
def tasks
|
24
|
+
file self.name => self.dependencies do
|
25
|
+
unless File.exist?(self.name)
|
26
|
+
ln self.source, self.name
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Paperwork
|
4
|
+
##
|
5
|
+
# task generators for building with middleman
|
6
|
+
module Tasks
|
7
|
+
require "rake"
|
8
|
+
|
9
|
+
##
|
10
|
+
# main task generator for building the document
|
11
|
+
#
|
12
|
+
class Document < Paperwork::Tasks::Base
|
13
|
+
attr_reader :dir
|
14
|
+
|
15
|
+
include Rake::DSL
|
16
|
+
|
17
|
+
def initialize(name, sources, *dependencies)
|
18
|
+
@dir = Paperwork::Tasks::Template.new(name).dir
|
19
|
+
|
20
|
+
sources.each do |src|
|
21
|
+
dst = get_destination(File.join(self.dir, "source"), src)
|
22
|
+
BuildFile.new(dst, src)
|
23
|
+
dependencies << dst
|
24
|
+
end
|
25
|
+
|
26
|
+
dependencies << RootHelpers.new(@dir, sources.first).name
|
27
|
+
super(name, *dependencies)
|
28
|
+
end
|
29
|
+
|
30
|
+
def tasks
|
31
|
+
tasks_build
|
32
|
+
tasks_nested
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def get_destination(dst_base, src) # rubocop:disable Metrics/AbcSize
|
38
|
+
ext = File.extname(src)
|
39
|
+
case ext
|
40
|
+
when ".md"
|
41
|
+
File.join(dst_base, File.basename(src)).gsub(".md", ".html.md")
|
42
|
+
when ".scss"
|
43
|
+
Paperwork::Config[:custom_css] << File.basename(src)
|
44
|
+
File.join(dst_base, "stylesheets", File.basename(src)).gsub(".scss", ".css.scss")
|
45
|
+
when ".css"
|
46
|
+
Paperwork::Config[:custom_css] << File.basename(src)
|
47
|
+
File.join(dst_base, "stylesheets", File.basename(src))
|
48
|
+
when ".js"
|
49
|
+
Paperwork::Config[:custom_js] << File.basename(src)
|
50
|
+
File.join(dst_base, "javascripts", File.basename(src))
|
51
|
+
when ".yml"
|
52
|
+
File.join(dst_base, "..", "data", File.basename(src))
|
53
|
+
else
|
54
|
+
File.join(dst_base, "images", File.basename(src))
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def tasks_build # rubocop:disable Metrics/AbcSize
|
59
|
+
namespace :paperwork do
|
60
|
+
desc "build documentation for '#{self.name}'"
|
61
|
+
task self.name => self.dependencies do
|
62
|
+
verbose_flag = Paperwork::Config[:verbose] ? " --verbose" : ""
|
63
|
+
Dir.chdir(self.dir) do
|
64
|
+
Bundler.with_unbundled_env do
|
65
|
+
Process.spawn(
|
66
|
+
"bundle exec middleman build#{verbose_flag}",
|
67
|
+
out: :out,
|
68
|
+
in: :in,
|
69
|
+
err: :err
|
70
|
+
)
|
71
|
+
end
|
72
|
+
Process.waitall
|
73
|
+
end
|
74
|
+
|
75
|
+
puts
|
76
|
+
puts "...Done!"
|
77
|
+
puts "build artifacts are located in #{File.join(self.dir, "build")}"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def tasks_nested # rubocop:disable Metrics/AbcSize
|
83
|
+
namespace :paperwork do
|
84
|
+
namespace self.name do
|
85
|
+
task build: ["paperwork:#{self.name}"]
|
86
|
+
|
87
|
+
desc "rebuild documentation from scratch for '#{self.name}'"
|
88
|
+
task rebuild: [:clean, :build]
|
89
|
+
|
90
|
+
desc "build documentation for '#{self.name}' with verbose output"
|
91
|
+
task build_verbose: [:set_verbose, :build]
|
92
|
+
|
93
|
+
task :set_verbose do
|
94
|
+
Paperwork::Config[:verbose] = true
|
95
|
+
end
|
96
|
+
|
97
|
+
desc "clean documentation build directory for '#{self.name}'"
|
98
|
+
task :clean do
|
99
|
+
rm_rf self.dir
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|