asciibuild 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/asciibuild +55 -0
- data/lib/asciibuild/extensions.rb +267 -0
- data/lib/asciibuild.rb +1 -0
- data/stylesheets/colony.css +695 -0
- metadata +91 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3f0d3264aa30a500f47d5f70ffa5f56c98c6db05
|
4
|
+
data.tar.gz: 676e1d167b275043f72ae25b2c93e50f84a2387c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3e446ff07ce75a594d15da1d8a10319d0b29e1d1240c144c6af5e329107a8e605234a37b7213b0f8e684e6004a04f8a046607f5f35357178f91b653144c0d35c
|
7
|
+
data.tar.gz: c585d03b22f012322152df6f0fa3795c763214e6a65a8d3f9a1ea3e2e2dd2752953f3f4d938af1d569d167c167abf1f3b653a3ec1b54026aa0571e4151fd34f7
|
data/bin/asciibuild
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'optparse'
|
3
|
+
require 'asciibuild'
|
4
|
+
|
5
|
+
def find_stylesheet name
|
6
|
+
File.expand_path "../stylesheets/#{name}.css", File.dirname(__FILE__)
|
7
|
+
end
|
8
|
+
|
9
|
+
attrs = {
|
10
|
+
"pwd" => Dir.pwd,
|
11
|
+
"toc" => "left",
|
12
|
+
"sectlinks" => true,
|
13
|
+
"icons" => "font",
|
14
|
+
"stylesheet" => find_stylesheet("colony"),
|
15
|
+
"source-highlighter" => "pygments"
|
16
|
+
}
|
17
|
+
|
18
|
+
options = {
|
19
|
+
:safe => 0,
|
20
|
+
:verbose => 2,
|
21
|
+
:to_dir => "abuild",
|
22
|
+
:mkdirs => true,
|
23
|
+
:attributes => attrs
|
24
|
+
}
|
25
|
+
|
26
|
+
OptionParser.new do |opts|
|
27
|
+
opts.banner = "Usage: asciibuild [options] file.adoc..."
|
28
|
+
|
29
|
+
opts.on('-s', '--stylesheet NAME', 'Stylesheet name') do |v|
|
30
|
+
attrs["stylesheet"] = find_stylesheet(v)
|
31
|
+
end
|
32
|
+
opts.on('-a', '--attribute ATTR', 'Document attribute') do |a|
|
33
|
+
parts = a.split(/=/)
|
34
|
+
k = parts[0]
|
35
|
+
v = if parts.size > 1 then parts[1] else true end
|
36
|
+
if attrs[k] and attrs[k].class == Array
|
37
|
+
entry << v
|
38
|
+
elsif attrs[k]
|
39
|
+
attrs[k] = [attrs[k], v]
|
40
|
+
else
|
41
|
+
attrs[k] = v
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end.parse!
|
45
|
+
|
46
|
+
ARGV.each do |f|
|
47
|
+
basename = File.basename f, ".*"
|
48
|
+
dirname = File.dirname f
|
49
|
+
basedir = File.join options[:to_dir], dirname
|
50
|
+
options[:to_dir] = basedir
|
51
|
+
attrs["outdir"] = basedir
|
52
|
+
options[:to_file] = "#{basename}-#{Time.now.getutc.to_i}.html"
|
53
|
+
|
54
|
+
Asciidoctor.convert_file f, options
|
55
|
+
end
|
@@ -0,0 +1,267 @@
|
|
1
|
+
require 'asciidoctor'
|
2
|
+
require 'asciidoctor/extensions'
|
3
|
+
require 'open3'
|
4
|
+
require 'mustache'
|
5
|
+
|
6
|
+
def include_section? parent, attrs
|
7
|
+
sections = if parent.document.attributes["sections"]
|
8
|
+
parent.document.attributes["sections"].split(/,[ ]*/)
|
9
|
+
else
|
10
|
+
[]
|
11
|
+
end
|
12
|
+
|
13
|
+
incl_sect = sections.empty?
|
14
|
+
sections.each do |s|
|
15
|
+
if not incl_sect and Regexp.new(s) =~ parent.title
|
16
|
+
incl_sect = true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
incl_sect or (not parent.document.attributes["error"] and (/^Before/ =~ parent.title or /^After/ =~ parent.title))
|
21
|
+
end
|
22
|
+
|
23
|
+
def get_lang lang
|
24
|
+
case lang
|
25
|
+
when 'pyspark'
|
26
|
+
'python'
|
27
|
+
when 'spark-shell'
|
28
|
+
'scala'
|
29
|
+
else
|
30
|
+
lang
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def write_file attrs, default_name, body
|
35
|
+
name = if attrs['file'] then attrs['file'] else default_name end
|
36
|
+
mode = if attrs['overwrite'] == 'false' then File::WRONLY|File::CREAT|File::EXCL else 'w' end
|
37
|
+
open(name, mode) do |f|
|
38
|
+
f.write(body + "\n")
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
module Asciibuild
|
43
|
+
module Extensions
|
44
|
+
class ConcatBlock < Asciidoctor::Extensions::BlockProcessor
|
45
|
+
# BlockProcessor to concatenate content into a single file.
|
46
|
+
# It allows you to break up sections of a file into separate listing blocks and aggregate them together
|
47
|
+
# into a single file you can reference later in the process.
|
48
|
+
#
|
49
|
+
# .Add function to file
|
50
|
+
# [concat,bash,file=utility.sh]
|
51
|
+
# ----
|
52
|
+
# #!/bin/bash
|
53
|
+
#
|
54
|
+
# fun greet() {
|
55
|
+
# echo 'Hello World'
|
56
|
+
# }
|
57
|
+
# ----
|
58
|
+
#
|
59
|
+
# .Add call to file
|
60
|
+
# [concat,bash,file=utility.sh]
|
61
|
+
# ----
|
62
|
+
# echo 'Hello World'
|
63
|
+
# ----
|
64
|
+
#
|
65
|
+
# After the document is processed, a file in the working directory will exist named "utility.sh" which
|
66
|
+
# will consist of the content of all the listing blocks in that section that use the same file name.
|
67
|
+
|
68
|
+
use_dsl
|
69
|
+
named :concat
|
70
|
+
on_context :listing
|
71
|
+
|
72
|
+
def process parent, reader, attrs
|
73
|
+
doctitle = parent.document.attributes["doctitle"]
|
74
|
+
body = reader.read
|
75
|
+
|
76
|
+
puts ""
|
77
|
+
puts "#{doctitle} > #{parent.title} > #{attrs['title']}"
|
78
|
+
puts (">" * 80)
|
79
|
+
|
80
|
+
fname = if not include_section?(parent, attrs)
|
81
|
+
if parent.document.attributes["error"]
|
82
|
+
puts "Section \"#{parent.title}\" skipped due to previous error."
|
83
|
+
attrs['title'] = 'icon:pause-circle[role=red] ' + attrs['title'] + " (previous error)"
|
84
|
+
else
|
85
|
+
sections = parent.document.attributes["sections"].split(/,[ ]*/)
|
86
|
+
puts "Section \"#{parent.title}\" skipped. Does not match #{sections}."
|
87
|
+
attrs['title'] = 'icon:pause-circle[role=yellow] ' + attrs['title']
|
88
|
+
end
|
89
|
+
false
|
90
|
+
else
|
91
|
+
attrs["file"]
|
92
|
+
end
|
93
|
+
|
94
|
+
if fname
|
95
|
+
if not parent.document.attributes["#{parent.title} #{fname}"]
|
96
|
+
open(fname, 'w') do |f|
|
97
|
+
f.write("")
|
98
|
+
end
|
99
|
+
parent.document.attributes["#{parent.title} #{fname}"] = true
|
100
|
+
end
|
101
|
+
|
102
|
+
open(fname, 'a') do |f|
|
103
|
+
f.write(body + "\n")
|
104
|
+
end
|
105
|
+
puts body
|
106
|
+
end
|
107
|
+
|
108
|
+
puts ("<" * 80)
|
109
|
+
|
110
|
+
create_open_block parent, ["----", body, "----"], attrs
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
class EvalBlock < Asciidoctor::Extensions::BlockProcessor
|
116
|
+
# BlockProcessor to make the content of listing blocks executable. Has built-in support for:
|
117
|
+
#
|
118
|
+
# * `Dockerfile`
|
119
|
+
# * `spark-shell` (Scala)
|
120
|
+
# * `pyspark` (Python)
|
121
|
+
# * `erlang`
|
122
|
+
# * Any interpreted language that accepts `STDIN`
|
123
|
+
#
|
124
|
+
# To use, add the `[asciibuild,Language]` style to a listing block.
|
125
|
+
#
|
126
|
+
# .Run a bash script
|
127
|
+
# [asciibuild,bash]
|
128
|
+
# ----
|
129
|
+
# echo 'Hello World'
|
130
|
+
# ----
|
131
|
+
#
|
132
|
+
# If using a language like BASH or Python, the language's interpreter should accept `STDIN` as
|
133
|
+
# input and be found in the `PATH`.
|
134
|
+
|
135
|
+
|
136
|
+
use_dsl
|
137
|
+
named :asciibuild
|
138
|
+
on_context :listing
|
139
|
+
|
140
|
+
def before_start(cmd, parent, attrs, lines, stderr_lines)
|
141
|
+
end
|
142
|
+
|
143
|
+
def after_end(cmd, parent, lines, attrs)
|
144
|
+
if attrs[2] == 'Dockerfile' and attrs['run'] and not attrs['run'] == 'false'
|
145
|
+
doctitle = parent.document.attributes['doctitle']
|
146
|
+
cmd = if attrs['run'] == 'true' then '' else attrs['run'] end
|
147
|
+
name = if attrs['original_title'] then attrs['original_title'] else doctitle end
|
148
|
+
docker_run = "docker run -d -i --label asciibuild.name=\"#{doctitle}\" #{attrs['run_opts']} #{attrs['image']} #{cmd}"
|
149
|
+
|
150
|
+
puts docker_run
|
151
|
+
|
152
|
+
rout, rerr, status = Open3.capture3(docker_run)
|
153
|
+
puts rout, rerr
|
154
|
+
if status == 0
|
155
|
+
parent.document.attributes["#{name} container"] = rout.chomp
|
156
|
+
else
|
157
|
+
parent.document.attributes["error"] = true
|
158
|
+
end
|
159
|
+
lines << "----" << "> #{docker_run}" << rout << rerr << "----"
|
160
|
+
end
|
161
|
+
create_open_block parent, lines, attrs
|
162
|
+
end
|
163
|
+
|
164
|
+
def process parent, reader, attrs
|
165
|
+
if not include_section?(parent, attrs)
|
166
|
+
if parent.document.attributes["error"]
|
167
|
+
puts "Section \"#{parent.title}\" skipped due to previous error."
|
168
|
+
attrs['title'] = 'icon:pause-circle[role=red] ' + attrs['title'] + " (previous error)"
|
169
|
+
else
|
170
|
+
sections = parent.document.attributes["sections"].split(/,[ ]*/)
|
171
|
+
puts "Section \"#{parent.title}\" skipped. Does not match #{sections}."
|
172
|
+
attrs['title'] = 'icon:pause-circle[role=yellow] ' + attrs['title']
|
173
|
+
end
|
174
|
+
lang = get_lang attrs[2]
|
175
|
+
return create_open_block parent, ["[source,#{lang}]", "----"] + reader.lines + ["----"], attrs
|
176
|
+
end
|
177
|
+
|
178
|
+
doctitle = parent.document.attributes["doctitle"]
|
179
|
+
attrs['original_title'] = attrs['title']
|
180
|
+
body = Mustache.render(reader.read, parent.document.attributes)
|
181
|
+
|
182
|
+
lines = []
|
183
|
+
stderr_lines = []
|
184
|
+
|
185
|
+
cmd = case attrs[2]
|
186
|
+
when 'Dockerfile'
|
187
|
+
if not attrs['image']
|
188
|
+
raise 'Missing image name. Add attribute of image={name} to the [asciibuild,Dockerfile] style.'
|
189
|
+
end
|
190
|
+
write_file attrs, 'Dockerfile', body
|
191
|
+
"docker build -t #{attrs['image']} #{attrs['build_opts']} -f #{name} ."
|
192
|
+
when 'erlang'
|
193
|
+
write_file attrs, 'escript.erl', body
|
194
|
+
"escript #{name} #{attrs['escript_opts']}"
|
195
|
+
when 'pyspark'
|
196
|
+
"pyspark #{attrs['spark_opts']}"
|
197
|
+
when 'spark-shell'
|
198
|
+
"spark-shell #{attrs['spark_opts']}"
|
199
|
+
else
|
200
|
+
if attrs['container']
|
201
|
+
name = if attrs['container'] == 'true' then doctitle else attrs['container'] end
|
202
|
+
container_id = parent.document.attributes["#{name} container"]
|
203
|
+
"docker exec -i #{container_id} #{attrs['exec_opts']} #{attrs[2]}"
|
204
|
+
else
|
205
|
+
attrs[2]
|
206
|
+
end
|
207
|
+
end
|
208
|
+
lang = get_lang attrs[2]
|
209
|
+
|
210
|
+
lines = ["[source,#{lang}]", "----", body, "", "----"]
|
211
|
+
|
212
|
+
puts ""
|
213
|
+
puts "#{doctitle} > #{parent.title} > #{attrs['title']}"
|
214
|
+
puts (">" * 80)
|
215
|
+
|
216
|
+
before_start cmd, parent, attrs, lines, stderr_lines
|
217
|
+
|
218
|
+
lines << ".#{cmd}" << "----"
|
219
|
+
|
220
|
+
puts body
|
221
|
+
puts "> #{cmd}"
|
222
|
+
puts ""
|
223
|
+
|
224
|
+
status = 0
|
225
|
+
Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
|
226
|
+
stdin << body << "\n"
|
227
|
+
stdin.close
|
228
|
+
|
229
|
+
while line=stdout.gets do
|
230
|
+
puts line
|
231
|
+
lines << line.chomp
|
232
|
+
end
|
233
|
+
while line=stderr.gets do
|
234
|
+
puts line
|
235
|
+
stderr_lines << line.chomp
|
236
|
+
end
|
237
|
+
|
238
|
+
status = wait_thr.value
|
239
|
+
end
|
240
|
+
lines << "----"
|
241
|
+
puts ("<" * 80)
|
242
|
+
|
243
|
+
if not stderr_lines.size == 0
|
244
|
+
lines << ".STDERR" << "----"
|
245
|
+
stderr_lines.each do |l| lines << l end
|
246
|
+
lines << "----"
|
247
|
+
end
|
248
|
+
|
249
|
+
if status != 0
|
250
|
+
lines << "IMPORTANT: #{cmd} failed with #{status}"
|
251
|
+
parent.document.attributes["error"] = true
|
252
|
+
attrs['title'] = 'icon:exclamation-circle[role=red] ' + attrs['title']
|
253
|
+
else
|
254
|
+
attrs['title'] = 'icon:check-circle[role=green] ' + attrs['title']
|
255
|
+
end
|
256
|
+
|
257
|
+
after_end cmd, parent, lines, attrs
|
258
|
+
end
|
259
|
+
|
260
|
+
end
|
261
|
+
|
262
|
+
Asciidoctor::Extensions.register do
|
263
|
+
block EvalBlock
|
264
|
+
block ConcatBlock
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
data/lib/asciibuild.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'asciibuild/extensions'
|
@@ -0,0 +1,695 @@
|
|
1
|
+
/*! normalize.css v2.1.2 | MIT License | git.io/normalize */
|
2
|
+
/* ========================================================================== HTML5 display definitions ========================================================================== */
|
3
|
+
/** Correct `block` display not defined in IE 8/9. */
|
4
|
+
article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; }
|
5
|
+
|
6
|
+
/** Correct `inline-block` display not defined in IE 8/9. */
|
7
|
+
audio, canvas, video { display: inline-block; }
|
8
|
+
|
9
|
+
/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */
|
10
|
+
audio:not([controls]) { display: none; height: 0; }
|
11
|
+
|
12
|
+
/** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */
|
13
|
+
[hidden], template { display: none; }
|
14
|
+
|
15
|
+
script { display: none !important; }
|
16
|
+
|
17
|
+
/* ========================================================================== Base ========================================================================== */
|
18
|
+
/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */
|
19
|
+
html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ }
|
20
|
+
|
21
|
+
/** Remove default margin. */
|
22
|
+
body { margin: 0; }
|
23
|
+
|
24
|
+
/* ========================================================================== Links ========================================================================== */
|
25
|
+
/** Remove the gray background color from active links in IE 10. */
|
26
|
+
a { background: transparent; }
|
27
|
+
|
28
|
+
/** Address `outline` inconsistency between Chrome and other browsers. */
|
29
|
+
a:focus { outline: thin dotted; }
|
30
|
+
|
31
|
+
/** Improve readability when focused and also mouse hovered in all browsers. */
|
32
|
+
a:active, a:hover { outline: 0; }
|
33
|
+
|
34
|
+
/* ========================================================================== Typography ========================================================================== */
|
35
|
+
/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */
|
36
|
+
h1 { font-size: 2em; margin: 0.67em 0; }
|
37
|
+
|
38
|
+
/** Address styling not present in IE 8/9, Safari 5, and Chrome. */
|
39
|
+
abbr[title] { border-bottom: 1px dotted; }
|
40
|
+
|
41
|
+
/** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */
|
42
|
+
b, strong { font-weight: bold; }
|
43
|
+
|
44
|
+
/** Address styling not present in Safari 5 and Chrome. */
|
45
|
+
dfn { font-style: italic; }
|
46
|
+
|
47
|
+
/** Address differences between Firefox and other browsers. */
|
48
|
+
hr { -moz-box-sizing: content-box; box-sizing: content-box; height: 0; }
|
49
|
+
|
50
|
+
/** Address styling not present in IE 8/9. */
|
51
|
+
mark { background: #ff0; color: #000; }
|
52
|
+
|
53
|
+
/** Correct font family set oddly in Safari 5 and Chrome. */
|
54
|
+
code, kbd, pre, samp { font-family: monospace, serif; font-size: 1em; }
|
55
|
+
|
56
|
+
/** Improve readability of pre-formatted text in all browsers. */
|
57
|
+
pre { white-space: pre-wrap; }
|
58
|
+
|
59
|
+
/** Set consistent quote types. */
|
60
|
+
q { quotes: "\201C" "\201D" "\2018" "\2019"; }
|
61
|
+
|
62
|
+
/** Address inconsistent and variable font size in all browsers. */
|
63
|
+
small { font-size: 80%; }
|
64
|
+
|
65
|
+
/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */
|
66
|
+
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
|
67
|
+
|
68
|
+
sup { top: -0.5em; }
|
69
|
+
|
70
|
+
sub { bottom: -0.25em; }
|
71
|
+
|
72
|
+
/* ========================================================================== Embedded content ========================================================================== */
|
73
|
+
/** Remove border when inside `a` element in IE 8/9. */
|
74
|
+
img { border: 0; }
|
75
|
+
|
76
|
+
/** Correct overflow displayed oddly in IE 9. */
|
77
|
+
svg:not(:root) { overflow: hidden; }
|
78
|
+
|
79
|
+
/* ========================================================================== Figures ========================================================================== */
|
80
|
+
/** Address margin not present in IE 8/9 and Safari 5. */
|
81
|
+
figure { margin: 0; }
|
82
|
+
|
83
|
+
/* ========================================================================== Forms ========================================================================== */
|
84
|
+
/** Define consistent border, margin, and padding. */
|
85
|
+
fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; }
|
86
|
+
|
87
|
+
/** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */
|
88
|
+
legend { border: 0; /* 1 */ padding: 0; /* 2 */ }
|
89
|
+
|
90
|
+
/** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */
|
91
|
+
button, input, select, textarea { font-family: inherit; /* 1 */ font-size: 100%; /* 2 */ margin: 0; /* 3 */ }
|
92
|
+
|
93
|
+
/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */
|
94
|
+
button, input { line-height: normal; }
|
95
|
+
|
96
|
+
/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */
|
97
|
+
button, select { text-transform: none; }
|
98
|
+
|
99
|
+
/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */
|
100
|
+
button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ }
|
101
|
+
|
102
|
+
/** Re-set default cursor for disabled elements. */
|
103
|
+
button[disabled], html input[disabled] { cursor: default; }
|
104
|
+
|
105
|
+
/** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */
|
106
|
+
input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ }
|
107
|
+
|
108
|
+
/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */
|
109
|
+
input[type="search"] { -webkit-appearance: textfield; /* 1 */ -moz-box-sizing: content-box; -webkit-box-sizing: content-box; /* 2 */ box-sizing: content-box; }
|
110
|
+
|
111
|
+
/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */
|
112
|
+
input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; }
|
113
|
+
|
114
|
+
/** Remove inner padding and border in Firefox 4+. */
|
115
|
+
button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
|
116
|
+
|
117
|
+
/** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */
|
118
|
+
textarea { overflow: auto; /* 1 */ vertical-align: top; /* 2 */ }
|
119
|
+
|
120
|
+
/* ========================================================================== Tables ========================================================================== */
|
121
|
+
/** Remove most spacing between table cells. */
|
122
|
+
table { border-collapse: collapse; border-spacing: 0; }
|
123
|
+
|
124
|
+
meta.foundation-mq-small { font-family: "only screen and (min-width: 768px)"; width: 768px; }
|
125
|
+
|
126
|
+
meta.foundation-mq-medium { font-family: "only screen and (min-width:1280px)"; width: 1280px; }
|
127
|
+
|
128
|
+
meta.foundation-mq-large { font-family: "only screen and (min-width:1440px)"; width: 1440px; }
|
129
|
+
|
130
|
+
*, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
|
131
|
+
|
132
|
+
html, body { font-size: 100%; }
|
133
|
+
|
134
|
+
body { background: white; color: #222222; padding: 0; margin: 0; font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; font-weight: normal; font-style: normal; line-height: 1; position: relative; cursor: auto; }
|
135
|
+
|
136
|
+
a:hover { cursor: pointer; }
|
137
|
+
|
138
|
+
img, object, embed { max-width: 100%; height: auto; }
|
139
|
+
|
140
|
+
object, embed { height: 100%; }
|
141
|
+
|
142
|
+
img { -ms-interpolation-mode: bicubic; }
|
143
|
+
|
144
|
+
#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { max-width: none !important; }
|
145
|
+
|
146
|
+
.left { float: left !important; }
|
147
|
+
|
148
|
+
.right { float: right !important; }
|
149
|
+
|
150
|
+
.text-left { text-align: left !important; }
|
151
|
+
|
152
|
+
.text-right { text-align: right !important; }
|
153
|
+
|
154
|
+
.text-center { text-align: center !important; }
|
155
|
+
|
156
|
+
.text-justify { text-align: justify !important; }
|
157
|
+
|
158
|
+
.hide { display: none; }
|
159
|
+
|
160
|
+
.antialiased, body { -webkit-font-smoothing: antialiased; }
|
161
|
+
|
162
|
+
img { display: inline-block; vertical-align: middle; }
|
163
|
+
|
164
|
+
textarea { height: auto; min-height: 50px; }
|
165
|
+
|
166
|
+
select { width: 100%; }
|
167
|
+
|
168
|
+
object, svg { display: inline-block; vertical-align: middle; }
|
169
|
+
|
170
|
+
.center { margin-left: auto; margin-right: auto; }
|
171
|
+
|
172
|
+
.spread { width: 100%; }
|
173
|
+
|
174
|
+
p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { font-size: 1.21875em; line-height: 1.6; }
|
175
|
+
|
176
|
+
.subheader, .admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { line-height: 1.4; color: #003b6b; font-weight: 300; margin-top: 0.2em; margin-bottom: 0.5em; }
|
177
|
+
|
178
|
+
/* Typography resets */
|
179
|
+
div, dl, dt, dd, ul, ol, li, h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6, pre, form, p, blockquote, th, td { margin: 0; padding: 0; direction: ltr; }
|
180
|
+
|
181
|
+
/* Default Link Styles */
|
182
|
+
a { color: #00579e; text-decoration: none; line-height: inherit; }
|
183
|
+
a:hover, a:focus { color: #333333; }
|
184
|
+
a img { border: none; }
|
185
|
+
|
186
|
+
/* Default paragraph styles */
|
187
|
+
p { font-family: Arial, sans-serif; font-weight: normal; font-size: 1em; line-height: 1.6; margin-bottom: 0.75em; text-rendering: optimizeLegibility; }
|
188
|
+
p aside { font-size: 0.875em; line-height: 1.35; font-style: italic; }
|
189
|
+
|
190
|
+
/* Default header styles */
|
191
|
+
h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { font-family: Arial, sans-serif; font-weight: normal; font-style: normal; color: #7b2d00; text-rendering: optimizeLegibility; margin-top: 0.5em; margin-bottom: 0.5em; line-height: 1.2125em; }
|
192
|
+
h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { font-size: 60%; color: #ff6b15; line-height: 0; }
|
193
|
+
|
194
|
+
h1 { font-size: 2.125em; }
|
195
|
+
|
196
|
+
h2 { font-size: 1.6875em; }
|
197
|
+
|
198
|
+
h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.375em; }
|
199
|
+
|
200
|
+
h4 { font-size: 1.125em; }
|
201
|
+
|
202
|
+
h5 { font-size: 1.125em; }
|
203
|
+
|
204
|
+
h6 { font-size: 1em; }
|
205
|
+
|
206
|
+
hr { border: solid #dddddd; border-width: 1px 0 0; clear: both; margin: 1.25em 0 1.1875em; height: 0; }
|
207
|
+
|
208
|
+
/* Helpful Typography Defaults */
|
209
|
+
em, i { font-style: italic; line-height: inherit; }
|
210
|
+
|
211
|
+
strong, b { font-weight: bold; line-height: inherit; }
|
212
|
+
|
213
|
+
small { font-size: 60%; line-height: inherit; }
|
214
|
+
|
215
|
+
code { font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: bold; color: #003426; }
|
216
|
+
|
217
|
+
/* Lists */
|
218
|
+
ul, ol, dl { font-size: 1em; line-height: 1.6; margin-bottom: 0.75em; list-style-position: outside; font-family: Arial, sans-serif; }
|
219
|
+
|
220
|
+
ul, ol { margin-left: 1.5em; }
|
221
|
+
ul.no-bullet, ol.no-bullet { margin-left: 1.5em; }
|
222
|
+
|
223
|
+
/* Unordered Lists */
|
224
|
+
ul li ul, ul li ol { margin-left: 1.25em; margin-bottom: 0; font-size: 1em; /* Override nested font-size change */ }
|
225
|
+
ul.square li ul, ul.circle li ul, ul.disc li ul { list-style: inherit; }
|
226
|
+
ul.square { list-style-type: square; }
|
227
|
+
ul.circle { list-style-type: circle; }
|
228
|
+
ul.disc { list-style-type: disc; }
|
229
|
+
ul.no-bullet { list-style: none; }
|
230
|
+
|
231
|
+
/* Ordered Lists */
|
232
|
+
ol li ul, ol li ol { margin-left: 1.25em; margin-bottom: 0; }
|
233
|
+
|
234
|
+
/* Definition Lists */
|
235
|
+
dl dt { margin-bottom: 0.3em; font-weight: bold; }
|
236
|
+
dl dd { margin-bottom: 0.75em; }
|
237
|
+
|
238
|
+
/* Abbreviations */
|
239
|
+
abbr, acronym { text-transform: uppercase; font-size: 90%; color: black; border-bottom: 1px dotted #dddddd; cursor: help; }
|
240
|
+
|
241
|
+
abbr { text-transform: none; }
|
242
|
+
|
243
|
+
/* Blockquotes */
|
244
|
+
blockquote { margin: 0 0 0.75em; padding: 0.5625em 1.25em 0 1.1875em; border-left: 1px solid #dddddd; }
|
245
|
+
blockquote cite { display: block; font-size: 0.8125em; color: #e15200; }
|
246
|
+
blockquote cite:before { content: "\2014 \0020"; }
|
247
|
+
blockquote cite a, blockquote cite a:visited { color: #e15200; }
|
248
|
+
|
249
|
+
blockquote, blockquote p { line-height: 1.6; color: #333333; }
|
250
|
+
|
251
|
+
/* Microformats */
|
252
|
+
.vcard { display: inline-block; margin: 0 0 1.25em 0; border: 1px solid #dddddd; padding: 0.625em 0.75em; }
|
253
|
+
.vcard li { margin: 0; display: block; }
|
254
|
+
.vcard .fn { font-weight: bold; font-size: 0.9375em; }
|
255
|
+
|
256
|
+
.vevent .summary { font-weight: bold; }
|
257
|
+
.vevent abbr { cursor: auto; text-decoration: none; font-weight: bold; border: none; padding: 0 0.0625em; }
|
258
|
+
|
259
|
+
@media only screen and (min-width: 768px) { h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; }
|
260
|
+
h1 { font-size: 2.75em; }
|
261
|
+
h2 { font-size: 2.3125em; }
|
262
|
+
h3, #toctitle, .sidebarblock > .content > .title { font-size: 1.6875em; }
|
263
|
+
h4 { font-size: 1.4375em; } }
|
264
|
+
/* Tables */
|
265
|
+
table { background: white; margin-bottom: 1.25em; border: solid 1px #d8d8ce; }
|
266
|
+
table thead, table tfoot { background: -webkit-linear-gradient(top, #add386, #90b66a); font-weight: bold; }
|
267
|
+
table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { padding: 0.5em 0.625em 0.625em; font-size: inherit; color: white; text-align: left; }
|
268
|
+
table tr th, table tr td { padding: 0.5625em 0.625em; font-size: inherit; color: #6d6e71; }
|
269
|
+
table tr.even, table tr.alt, table tr:nth-of-type(even) { background: #edf2f2; }
|
270
|
+
table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { display: table-cell; line-height: 1.4; }
|
271
|
+
|
272
|
+
body { tab-size: 4; }
|
273
|
+
|
274
|
+
h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { line-height: 1.4; }
|
275
|
+
|
276
|
+
a:hover, a:focus { text-decoration: underline; }
|
277
|
+
|
278
|
+
.clearfix:before, .clearfix:after, .float-group:before, .float-group:after { content: " "; display: table; }
|
279
|
+
.clearfix:after, .float-group:after { clear: both; }
|
280
|
+
|
281
|
+
*:not(pre) > code { font-size: inherit; font-style: normal !important; letter-spacing: 0; padding: 3px 2px 1px 2px; background-color: #eeeeee; border: 1px solid #dddddd; -webkit-border-radius: 0; border-radius: 0; line-height: inherit; }
|
282
|
+
|
283
|
+
pre, pre > code { line-height: 1.6; color: black; font-family: Consolas, "Liberation Mono", Courier, monospace; font-weight: normal; }
|
284
|
+
|
285
|
+
em em { font-style: normal; }
|
286
|
+
|
287
|
+
strong strong { font-weight: normal; }
|
288
|
+
|
289
|
+
.keyseq { color: #333333; }
|
290
|
+
|
291
|
+
kbd { font-family: Consolas, "Liberation Mono", Courier, monospace; display: inline-block; color: black; font-size: 0.65em; line-height: 1.45; background-color: #f7f7f7; border: 1px solid #ccc; -webkit-border-radius: 3px; border-radius: 3px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 0.1em white inset; margin: 0 0.15em; padding: 0.2em 0.5em; vertical-align: middle; position: relative; top: -0.1em; white-space: nowrap; }
|
292
|
+
|
293
|
+
.keyseq kbd:first-child { margin-left: 0; }
|
294
|
+
|
295
|
+
.keyseq kbd:last-child { margin-right: 0; }
|
296
|
+
|
297
|
+
.menuseq, .menu { color: black; }
|
298
|
+
|
299
|
+
b.button:before, b.button:after { position: relative; top: -1px; font-weight: normal; }
|
300
|
+
|
301
|
+
b.button:before { content: "["; padding: 0 3px 0 2px; }
|
302
|
+
|
303
|
+
b.button:after { content: "]"; padding: 0 2px 0 3px; }
|
304
|
+
|
305
|
+
#header, #content, #footnotes, #footer { width: 100%; margin-left: auto; margin-right: auto; margin-top: 0; margin-bottom: 0; max-width: 62.5em; *zoom: 1; position: relative; padding-left: 1.5em; padding-right: 1.5em; }
|
306
|
+
#header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { content: " "; display: table; }
|
307
|
+
#header:after, #content:after, #footnotes:after, #footer:after { clear: both; }
|
308
|
+
|
309
|
+
#content { margin-top: 1.25em; }
|
310
|
+
|
311
|
+
#content:before { content: none; }
|
312
|
+
|
313
|
+
#header > h1:first-child { color: #7b2d00; margin-top: 2.25rem; margin-bottom: 0; }
|
314
|
+
#header > h1:first-child + #toc { margin-top: 8px; border-top: 1px solid #dddddd; }
|
315
|
+
#header > h1:only-child, body.toc2 #header > h1:nth-last-child(2) { border-bottom: 1px solid #dddddd; padding-bottom: 8px; }
|
316
|
+
#header .details { border-bottom: 1px solid #dddddd; line-height: 1.45; padding-top: 0.25em; padding-bottom: 0.25em; padding-left: 0.25em; color: #e15200; display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-flow: row wrap; -webkit-flex-flow: row wrap; flex-flow: row wrap; }
|
317
|
+
#header .details span:first-child { margin-left: -0.125em; }
|
318
|
+
#header .details span.email a { color: #333333; }
|
319
|
+
#header .details br { display: none; }
|
320
|
+
#header .details br + span:before { content: "\00a0\2013\00a0"; }
|
321
|
+
#header .details br + span.author:before { content: "\00a0\22c5\00a0"; color: #333333; }
|
322
|
+
#header .details br + span#revremark:before { content: "\00a0|\00a0"; }
|
323
|
+
#header #revnumber { text-transform: capitalize; }
|
324
|
+
#header #revnumber:after { content: "\00a0"; }
|
325
|
+
|
326
|
+
#content > h1:first-child:not([class]) { color: #7b2d00; border-bottom: 1px solid #dddddd; padding-bottom: 8px; margin-top: 0; padding-top: 1rem; margin-bottom: 1.25rem; }
|
327
|
+
|
328
|
+
#toc { border-bottom: 0 solid #dddddd; padding-bottom: 0.5em; }
|
329
|
+
#toc > ul { margin-left: 0.125em; }
|
330
|
+
#toc ul.sectlevel0 > li > a { font-style: italic; }
|
331
|
+
#toc ul.sectlevel0 ul.sectlevel1 { margin: 0.5em 0; }
|
332
|
+
#toc ul { font-family: Arial, sans-serif; list-style-type: none; }
|
333
|
+
#toc li { line-height: 1.3334; margin-top: 0.3334em; }
|
334
|
+
#toc a { text-decoration: none; }
|
335
|
+
#toc a:active { text-decoration: underline; }
|
336
|
+
|
337
|
+
#toctitle { color: #003b6b; font-size: 1.2em; }
|
338
|
+
|
339
|
+
@media only screen and (min-width: 768px) { #toctitle { font-size: 1.375em; }
|
340
|
+
body.toc2 { padding-left: 15em; padding-right: 0; }
|
341
|
+
#toc.toc2 { margin-top: 0 !important; background-color: white; position: fixed; width: 15em; left: 0; top: 0; border-right: 1px solid #dddddd; border-top-width: 0 !important; border-bottom-width: 0 !important; z-index: 1000; padding: 1.25em 1em; height: 100%; overflow: auto; }
|
342
|
+
#toc.toc2 #toctitle { margin-top: 0; margin-bottom: 0.8rem; font-size: 1.2em; }
|
343
|
+
#toc.toc2 > ul { font-size: 0.9em; margin-bottom: 0; }
|
344
|
+
#toc.toc2 ul ul { margin-left: 0; padding-left: 1em; }
|
345
|
+
#toc.toc2 ul.sectlevel0 ul.sectlevel1 { padding-left: 0; margin-top: 0.5em; margin-bottom: 0.5em; }
|
346
|
+
body.toc2.toc-right { padding-left: 0; padding-right: 15em; }
|
347
|
+
body.toc2.toc-right #toc.toc2 { border-right-width: 0; border-left: 1px solid #dddddd; left: auto; right: 0; } }
|
348
|
+
@media only screen and (min-width: 1280px) { body.toc2 { padding-left: 20em; padding-right: 0; }
|
349
|
+
#toc.toc2 { width: 20em; }
|
350
|
+
#toc.toc2 #toctitle { font-size: 1.375em; }
|
351
|
+
#toc.toc2 > ul { font-size: 0.95em; }
|
352
|
+
#toc.toc2 ul ul { padding-left: 1.25em; }
|
353
|
+
body.toc2.toc-right { padding-left: 0; padding-right: 20em; } }
|
354
|
+
#content #toc { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; }
|
355
|
+
#content #toc > :first-child { margin-top: 0; }
|
356
|
+
#content #toc > :last-child { margin-bottom: 0; }
|
357
|
+
|
358
|
+
#footer { max-width: 100%; background-color: none; padding: 1.25em; }
|
359
|
+
|
360
|
+
#footer-text { color: black; line-height: 1.44; }
|
361
|
+
|
362
|
+
.sect1 { padding-bottom: 0.625em; }
|
363
|
+
|
364
|
+
@media only screen and (min-width: 768px) { .sect1 { padding-bottom: 1.25em; } }
|
365
|
+
.sect1 + .sect1 { border-top: 0 solid #dddddd; }
|
366
|
+
|
367
|
+
#content h1 > a.anchor, h2 > a.anchor, h3 > a.anchor, #toctitle > a.anchor, .sidebarblock > .content > .title > a.anchor, h4 > a.anchor, h5 > a.anchor, h6 > a.anchor { position: absolute; z-index: 1001; width: 1.5ex; margin-left: -1.5ex; display: block; text-decoration: none !important; visibility: hidden; text-align: center; font-weight: normal; }
|
368
|
+
#content h1 > a.anchor:before, h2 > a.anchor:before, h3 > a.anchor:before, #toctitle > a.anchor:before, .sidebarblock > .content > .title > a.anchor:before, h4 > a.anchor:before, h5 > a.anchor:before, h6 > a.anchor:before { content: "\00A7"; font-size: 0.85em; display: block; padding-top: 0.1em; }
|
369
|
+
#content h1:hover > a.anchor, #content h1 > a.anchor:hover, h2:hover > a.anchor, h2 > a.anchor:hover, h3:hover > a.anchor, #toctitle:hover > a.anchor, .sidebarblock > .content > .title:hover > a.anchor, h3 > a.anchor:hover, #toctitle > a.anchor:hover, .sidebarblock > .content > .title > a.anchor:hover, h4:hover > a.anchor, h4 > a.anchor:hover, h5:hover > a.anchor, h5 > a.anchor:hover, h6:hover > a.anchor, h6 > a.anchor:hover { visibility: visible; }
|
370
|
+
#content h1 > a.link, h2 > a.link, h3 > a.link, #toctitle > a.link, .sidebarblock > .content > .title > a.link, h4 > a.link, h5 > a.link, h6 > a.link { color: #7b2d00; text-decoration: none; }
|
371
|
+
#content h1 > a.link:hover, h2 > a.link:hover, h3 > a.link:hover, #toctitle > a.link:hover, .sidebarblock > .content > .title > a.link:hover, h4 > a.link:hover, h5 > a.link:hover, h6 > a.link:hover { color: #622400; }
|
372
|
+
|
373
|
+
.audioblock, .imageblock, .literalblock, .listingblock, .stemblock, .videoblock { margin-bottom: 1.25em; }
|
374
|
+
|
375
|
+
.admonitionblock td.content > .title, .audioblock > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .stemblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, table.tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { text-rendering: optimizeLegibility; text-align: left; }
|
376
|
+
|
377
|
+
table.tableblock > caption.title { white-space: nowrap; overflow: visible; max-width: 0; }
|
378
|
+
|
379
|
+
.paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { color: #7b2d00; }
|
380
|
+
|
381
|
+
table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { font-size: inherit; }
|
382
|
+
|
383
|
+
.admonitionblock > table { border-collapse: separate; border: 0; background: none; width: 100%; }
|
384
|
+
.admonitionblock > table td.icon { text-align: center; width: 80px; }
|
385
|
+
.admonitionblock > table td.icon img { max-width: none; }
|
386
|
+
.admonitionblock > table td.icon .title { font-weight: bold; font-family: Arial, sans-serif; text-transform: uppercase; }
|
387
|
+
.admonitionblock > table td.content { padding-left: 1.125em; padding-right: 1.25em; border-left: 1px solid #dddddd; color: #e15200; }
|
388
|
+
.admonitionblock > table td.content > :last-child > :last-child { margin-bottom: 0; }
|
389
|
+
|
390
|
+
.exampleblock > .content { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; }
|
391
|
+
.exampleblock > .content > :first-child { margin-top: 0; }
|
392
|
+
.exampleblock > .content > :last-child { margin-bottom: 0; }
|
393
|
+
|
394
|
+
.sidebarblock { border-style: solid; border-width: 1px; border-color: #e6e6e6; margin-bottom: 1.25em; padding: 1.25em; background: white; -webkit-border-radius: 0; border-radius: 0; }
|
395
|
+
.sidebarblock > :first-child { margin-top: 0; }
|
396
|
+
.sidebarblock > :last-child { margin-bottom: 0; }
|
397
|
+
.sidebarblock > .content > .title { color: #003b6b; margin-top: 0; }
|
398
|
+
|
399
|
+
.exampleblock > .content > :last-child > :last-child, .exampleblock > .content .olist > ol > li:last-child > :last-child, .exampleblock > .content .ulist > ul > li:last-child > :last-child, .exampleblock > .content .qlist > ol > li:last-child > :last-child, .sidebarblock > .content > :last-child > :last-child, .sidebarblock > .content .olist > ol > li:last-child > :last-child, .sidebarblock > .content .ulist > ul > li:last-child > :last-child, .sidebarblock > .content .qlist > ol > li:last-child > :last-child { margin-bottom: 0; }
|
400
|
+
|
401
|
+
.literalblock pre, .listingblock pre:not(.highlight), .listingblock pre[class="highlight"], .listingblock pre[class^="highlight "], .listingblock pre.CodeRay, .listingblock pre.prettyprint { background: #eeeeee; }
|
402
|
+
.sidebarblock .literalblock pre, .sidebarblock .listingblock pre:not(.highlight), .sidebarblock .listingblock pre[class="highlight"], .sidebarblock .listingblock pre[class^="highlight "], .sidebarblock .listingblock pre.CodeRay, .sidebarblock .listingblock pre.prettyprint { background: #f2f1f1; }
|
403
|
+
|
404
|
+
.literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { border: 1px dashed #666666; -webkit-border-radius: 0; border-radius: 0; word-wrap: break-word; padding: 1.25em 1.5625em 1.125em 1.5625em; font-size: 0.8125em; }
|
405
|
+
.literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { overflow-x: auto; white-space: pre; word-wrap: normal; }
|
406
|
+
@media only screen and (min-width: 768px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 0.90625em; } }
|
407
|
+
@media only screen and (min-width: 1280px) { .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { font-size: 1em; } }
|
408
|
+
|
409
|
+
.literalblock.output pre { color: #eeeeee; background-color: black; }
|
410
|
+
|
411
|
+
.listingblock pre.highlightjs { padding: 0; }
|
412
|
+
.listingblock pre.highlightjs > code { padding: 1.25em 1.5625em 1.125em 1.5625em; -webkit-border-radius: 0; border-radius: 0; }
|
413
|
+
|
414
|
+
.listingblock > .content { position: relative; }
|
415
|
+
|
416
|
+
.listingblock code[data-lang]:before { display: none; content: attr(data-lang); position: absolute; font-size: 0.75em; top: 0.425rem; right: 0.5rem; line-height: 1; text-transform: uppercase; color: #999; }
|
417
|
+
|
418
|
+
.listingblock:hover code[data-lang]:before { display: block; }
|
419
|
+
|
420
|
+
.listingblock.terminal pre .command:before { content: attr(data-prompt); padding-right: 0.5em; color: #999; }
|
421
|
+
|
422
|
+
.listingblock.terminal pre .command:not([data-prompt]):before { content: "$"; }
|
423
|
+
|
424
|
+
table.pyhltable { border-collapse: separate; border: 0; margin-bottom: 0; background: none; }
|
425
|
+
|
426
|
+
table.pyhltable td { vertical-align: top; padding-top: 0; padding-bottom: 0; line-height: 1.6; }
|
427
|
+
|
428
|
+
table.pyhltable td.code { padding-left: .75em; padding-right: 0; }
|
429
|
+
|
430
|
+
pre.pygments .lineno, table.pyhltable td:not(.code) { color: #999; padding-left: 0; padding-right: .5em; border-right: 1px solid #dddddd; }
|
431
|
+
|
432
|
+
pre.pygments .lineno { display: inline-block; margin-right: .25em; }
|
433
|
+
|
434
|
+
table.pyhltable .linenodiv { background: none !important; padding-right: 0 !important; }
|
435
|
+
|
436
|
+
.quoteblock { margin: 0 1em 0.75em 1.5em; display: table; }
|
437
|
+
.quoteblock > .title { margin-left: -1.5em; margin-bottom: 0.75em; }
|
438
|
+
.quoteblock blockquote, .quoteblock blockquote p { color: #333333; font-size: 1.15rem; line-height: 1.75; word-spacing: 0.1em; letter-spacing: 0; font-style: italic; text-align: justify; }
|
439
|
+
.quoteblock blockquote { margin: 0; padding: 0; border: 0; }
|
440
|
+
.quoteblock blockquote:before { content: "\201c"; float: left; font-size: 2.75em; font-weight: bold; line-height: 0.6em; margin-left: -0.6em; color: #003b6b; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); }
|
441
|
+
.quoteblock blockquote > .paragraph:last-child p { margin-bottom: 0; }
|
442
|
+
.quoteblock .attribution { margin-top: 0.5em; margin-right: 0.5ex; text-align: right; }
|
443
|
+
.quoteblock .quoteblock { margin-left: 0; margin-right: 0; padding: 0.5em 0; border-left: 3px solid #e15200; }
|
444
|
+
.quoteblock .quoteblock blockquote { padding: 0 0 0 0.75em; }
|
445
|
+
.quoteblock .quoteblock blockquote:before { display: none; }
|
446
|
+
|
447
|
+
.verseblock { margin: 0 1em 0.75em 1em; }
|
448
|
+
.verseblock pre { font-family: "Open Sans", "DejaVu Sans", sans; font-size: 1.15rem; color: #333333; font-weight: 300; text-rendering: optimizeLegibility; }
|
449
|
+
.verseblock pre strong { font-weight: 400; }
|
450
|
+
.verseblock .attribution { margin-top: 1.25rem; margin-left: 0.5ex; }
|
451
|
+
|
452
|
+
.quoteblock .attribution, .verseblock .attribution { font-size: 0.8125em; line-height: 1.45; font-style: italic; }
|
453
|
+
.quoteblock .attribution br, .verseblock .attribution br { display: none; }
|
454
|
+
.quoteblock .attribution cite, .verseblock .attribution cite { display: block; letter-spacing: -0.025em; color: #e15200; }
|
455
|
+
|
456
|
+
.quoteblock.abstract { margin: 0 0 0.75em 0; display: block; }
|
457
|
+
.quoteblock.abstract blockquote, .quoteblock.abstract blockquote p { text-align: left; word-spacing: 0; }
|
458
|
+
.quoteblock.abstract blockquote:before, .quoteblock.abstract blockquote p:first-of-type:before { display: none; }
|
459
|
+
|
460
|
+
table.tableblock { max-width: 100%; border-collapse: separate; }
|
461
|
+
table.tableblock td > .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { margin-bottom: 0; }
|
462
|
+
|
463
|
+
table.tableblock, th.tableblock, td.tableblock { border: 0 solid #d8d8ce; }
|
464
|
+
|
465
|
+
table.grid-all th.tableblock, table.grid-all td.tableblock { border-width: 0 1px 1px 0; }
|
466
|
+
|
467
|
+
table.grid-all tfoot > tr > th.tableblock, table.grid-all tfoot > tr > td.tableblock { border-width: 1px 1px 0 0; }
|
468
|
+
|
469
|
+
table.grid-cols th.tableblock, table.grid-cols td.tableblock { border-width: 0 1px 0 0; }
|
470
|
+
|
471
|
+
table.grid-all * > tr > .tableblock:last-child, table.grid-cols * > tr > .tableblock:last-child { border-right-width: 0; }
|
472
|
+
|
473
|
+
table.grid-rows th.tableblock, table.grid-rows td.tableblock { border-width: 0 0 1px 0; }
|
474
|
+
|
475
|
+
table.grid-all tbody > tr:last-child > th.tableblock, table.grid-all tbody > tr:last-child > td.tableblock, table.grid-all thead:last-child > tr > th.tableblock, table.grid-rows tbody > tr:last-child > th.tableblock, table.grid-rows tbody > tr:last-child > td.tableblock, table.grid-rows thead:last-child > tr > th.tableblock { border-bottom-width: 0; }
|
476
|
+
|
477
|
+
table.grid-rows tfoot > tr > th.tableblock, table.grid-rows tfoot > tr > td.tableblock { border-width: 1px 0 0 0; }
|
478
|
+
|
479
|
+
table.frame-all { border-width: 1px; }
|
480
|
+
|
481
|
+
table.frame-sides { border-width: 0 1px; }
|
482
|
+
|
483
|
+
table.frame-topbot { border-width: 1px 0; }
|
484
|
+
|
485
|
+
th.halign-left, td.halign-left { text-align: left; }
|
486
|
+
|
487
|
+
th.halign-right, td.halign-right { text-align: right; }
|
488
|
+
|
489
|
+
th.halign-center, td.halign-center { text-align: center; }
|
490
|
+
|
491
|
+
th.valign-top, td.valign-top { vertical-align: top; }
|
492
|
+
|
493
|
+
th.valign-bottom, td.valign-bottom { vertical-align: bottom; }
|
494
|
+
|
495
|
+
th.valign-middle, td.valign-middle { vertical-align: middle; }
|
496
|
+
|
497
|
+
table thead th, table tfoot th { font-weight: bold; }
|
498
|
+
|
499
|
+
tbody tr th { display: table-cell; line-height: 1.4; background: -webkit-linear-gradient(top, #add386, #90b66a); }
|
500
|
+
|
501
|
+
tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { color: white; font-weight: bold; }
|
502
|
+
|
503
|
+
p.tableblock > code:only-child { background: none; padding: 0; }
|
504
|
+
|
505
|
+
p.tableblock { font-size: 1em; }
|
506
|
+
|
507
|
+
td > div.verse { white-space: pre; }
|
508
|
+
|
509
|
+
ol { margin-left: 1.75em; }
|
510
|
+
|
511
|
+
ul li ol { margin-left: 1.5em; }
|
512
|
+
|
513
|
+
dl dd { margin-left: 1.125em; }
|
514
|
+
|
515
|
+
dl dd:last-child, dl dd:last-child > :last-child { margin-bottom: 0; }
|
516
|
+
|
517
|
+
ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { margin-bottom: 0.375em; }
|
518
|
+
|
519
|
+
ul.unstyled, ol.unnumbered, ul.checklist, ul.none { list-style-type: none; }
|
520
|
+
|
521
|
+
ul.unstyled, ol.unnumbered, ul.checklist { margin-left: 0.625em; }
|
522
|
+
|
523
|
+
ul.checklist li > p:first-child > .fa-square-o:first-child, ul.checklist li > p:first-child > .fa-check-square-o:first-child { width: 1em; font-size: 0.85em; }
|
524
|
+
|
525
|
+
ul.checklist li > p:first-child > input[type="checkbox"]:first-child { width: 1em; position: relative; top: 1px; }
|
526
|
+
|
527
|
+
ul.inline { margin: 0 auto 0.375em auto; margin-left: -1.375em; margin-right: 0; padding: 0; list-style: none; overflow: hidden; }
|
528
|
+
ul.inline > li { list-style: none; float: left; margin-left: 1.375em; display: block; }
|
529
|
+
ul.inline > li > * { display: block; }
|
530
|
+
|
531
|
+
.unstyled dl dt { font-weight: normal; font-style: normal; }
|
532
|
+
|
533
|
+
ol.arabic { list-style-type: decimal; }
|
534
|
+
|
535
|
+
ol.decimal { list-style-type: decimal-leading-zero; }
|
536
|
+
|
537
|
+
ol.loweralpha { list-style-type: lower-alpha; }
|
538
|
+
|
539
|
+
ol.upperalpha { list-style-type: upper-alpha; }
|
540
|
+
|
541
|
+
ol.lowerroman { list-style-type: lower-roman; }
|
542
|
+
|
543
|
+
ol.upperroman { list-style-type: upper-roman; }
|
544
|
+
|
545
|
+
ol.lowergreek { list-style-type: lower-greek; }
|
546
|
+
|
547
|
+
.hdlist > table, .colist > table { border: 0; background: none; }
|
548
|
+
.hdlist > table > tbody > tr, .colist > table > tbody > tr { background: none; }
|
549
|
+
|
550
|
+
td.hdlist1, td.hdlist2 { vertical-align: top; padding: 0 0.625em; }
|
551
|
+
|
552
|
+
td.hdlist1 { font-weight: bold; padding-bottom: 0.75em; }
|
553
|
+
|
554
|
+
.literalblock + .colist, .listingblock + .colist { margin-top: -0.5em; }
|
555
|
+
|
556
|
+
.colist > table tr > td:first-of-type { padding: 0 0.75em; line-height: 1; }
|
557
|
+
.colist > table tr > td:last-of-type { padding: 0.25em 0; }
|
558
|
+
|
559
|
+
.thumb, .th { line-height: 0; display: inline-block; border: solid 4px white; -webkit-box-shadow: 0 0 0 1px #dddddd; box-shadow: 0 0 0 1px #dddddd; }
|
560
|
+
|
561
|
+
.imageblock.left, .imageblock[style*="float: left"] { margin: 0.25em 0.625em 1.25em 0; }
|
562
|
+
.imageblock.right, .imageblock[style*="float: right"] { margin: 0.25em 0 1.25em 0.625em; }
|
563
|
+
.imageblock > .title { margin-bottom: 0; }
|
564
|
+
.imageblock.thumb, .imageblock.th { border-width: 6px; }
|
565
|
+
.imageblock.thumb > .title, .imageblock.th > .title { padding: 0 0.125em; }
|
566
|
+
|
567
|
+
.image.left, .image.right { margin-top: 0.25em; margin-bottom: 0.25em; display: inline-block; line-height: 0; }
|
568
|
+
.image.left { margin-right: 0.625em; }
|
569
|
+
.image.right { margin-left: 0.625em; }
|
570
|
+
|
571
|
+
a.image { text-decoration: none; display: inline-block; }
|
572
|
+
a.image object { pointer-events: none; }
|
573
|
+
|
574
|
+
sup.footnote, sup.footnoteref { font-size: 0.875em; position: static; vertical-align: super; }
|
575
|
+
sup.footnote a, sup.footnoteref a { text-decoration: none; }
|
576
|
+
sup.footnote a:active, sup.footnoteref a:active { text-decoration: underline; }
|
577
|
+
|
578
|
+
#footnotes { padding-top: 0.75em; padding-bottom: 0.75em; margin-bottom: 0.625em; }
|
579
|
+
#footnotes hr { width: 20%; min-width: 6.25em; margin: -0.25em 0 0.75em 0; border-width: 1px 0 0 0; }
|
580
|
+
#footnotes .footnote { padding: 0 0.375em 0 0.225em; line-height: 1.3334; font-size: 0.875em; margin-left: 1.2em; text-indent: -1.05em; margin-bottom: 0.2em; }
|
581
|
+
#footnotes .footnote a:first-of-type { font-weight: bold; text-decoration: none; }
|
582
|
+
#footnotes .footnote:last-of-type { margin-bottom: 0; }
|
583
|
+
#content #footnotes { margin-top: -0.625em; margin-bottom: 0; padding: 0.75em 0; }
|
584
|
+
|
585
|
+
.gist .file-data > table { border: 0; background: #fff; width: 100%; margin-bottom: 0; }
|
586
|
+
.gist .file-data > table td.line-data { width: 99%; }
|
587
|
+
|
588
|
+
div.unbreakable { page-break-inside: avoid; }
|
589
|
+
|
590
|
+
.big { font-size: larger; }
|
591
|
+
|
592
|
+
.small { font-size: smaller; }
|
593
|
+
|
594
|
+
.underline { text-decoration: underline; }
|
595
|
+
|
596
|
+
.overline { text-decoration: overline; }
|
597
|
+
|
598
|
+
.line-through { text-decoration: line-through; }
|
599
|
+
|
600
|
+
.aqua { color: #00bfbf; }
|
601
|
+
|
602
|
+
.aqua-background { background-color: #00fafa; }
|
603
|
+
|
604
|
+
.black { color: black; }
|
605
|
+
|
606
|
+
.black-background { background-color: black; }
|
607
|
+
|
608
|
+
.blue { color: #0000bf; }
|
609
|
+
|
610
|
+
.blue-background { background-color: #0000fa; }
|
611
|
+
|
612
|
+
.fuchsia { color: #bf00bf; }
|
613
|
+
|
614
|
+
.fuchsia-background { background-color: #fa00fa; }
|
615
|
+
|
616
|
+
.gray { color: #606060; }
|
617
|
+
|
618
|
+
.gray-background { background-color: #7d7d7d; }
|
619
|
+
|
620
|
+
.green { color: #006000; }
|
621
|
+
|
622
|
+
.green-background { background-color: #007d00; }
|
623
|
+
|
624
|
+
.lime { color: #00bf00; }
|
625
|
+
|
626
|
+
.lime-background { background-color: #00fa00; }
|
627
|
+
|
628
|
+
.maroon { color: #600000; }
|
629
|
+
|
630
|
+
.maroon-background { background-color: #7d0000; }
|
631
|
+
|
632
|
+
.navy { color: #000060; }
|
633
|
+
|
634
|
+
.navy-background { background-color: #00007d; }
|
635
|
+
|
636
|
+
.olive { color: #606000; }
|
637
|
+
|
638
|
+
.olive-background { background-color: #7d7d00; }
|
639
|
+
|
640
|
+
.purple { color: #600060; }
|
641
|
+
|
642
|
+
.purple-background { background-color: #7d007d; }
|
643
|
+
|
644
|
+
.red { color: #bf0000; }
|
645
|
+
|
646
|
+
.red-background { background-color: #fa0000; }
|
647
|
+
|
648
|
+
.silver { color: #909090; }
|
649
|
+
|
650
|
+
.silver-background { background-color: #bcbcbc; }
|
651
|
+
|
652
|
+
.teal { color: #006060; }
|
653
|
+
|
654
|
+
.teal-background { background-color: #007d7d; }
|
655
|
+
|
656
|
+
.white { color: #bfbfbf; }
|
657
|
+
|
658
|
+
.white-background { background-color: #fafafa; }
|
659
|
+
|
660
|
+
.yellow { color: #bfbf00; }
|
661
|
+
|
662
|
+
.yellow-background { background-color: #fafa00; }
|
663
|
+
|
664
|
+
span.icon > .fa { cursor: default; }
|
665
|
+
|
666
|
+
.admonitionblock td.icon [class^="fa icon-"] { font-size: 2.5em; text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); cursor: default; }
|
667
|
+
.admonitionblock td.icon .icon-note:before { content: "\f05a"; color: #004176; }
|
668
|
+
.admonitionblock td.icon .icon-tip:before { content: "\f0eb"; text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); color: #111; }
|
669
|
+
.admonitionblock td.icon .icon-warning:before { content: "\f071"; color: #bf6900; }
|
670
|
+
.admonitionblock td.icon .icon-caution:before { content: "\f06d"; color: #bf3400; }
|
671
|
+
.admonitionblock td.icon .icon-important:before { content: "\f06a"; color: #bf0000; }
|
672
|
+
|
673
|
+
.conum[data-value] { display: inline-block; color: #fff !important; background-color: black; -webkit-border-radius: 100px; border-radius: 100px; text-align: center; font-size: 0.75em; width: 1.67em; height: 1.67em; line-height: 1.67em; font-family: "Open Sans", "DejaVu Sans", sans-serif; font-style: normal; font-weight: bold; }
|
674
|
+
.conum[data-value] * { color: #fff !important; }
|
675
|
+
.conum[data-value] + b { display: none; }
|
676
|
+
.conum[data-value]:after { content: attr(data-value); }
|
677
|
+
pre .conum[data-value] { position: relative; top: -0.125em; }
|
678
|
+
|
679
|
+
b.conum * { color: inherit !important; }
|
680
|
+
|
681
|
+
.conum:not([data-value]):empty { display: none; }
|
682
|
+
|
683
|
+
h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { border-bottom: 1px solid #dddddd; }
|
684
|
+
|
685
|
+
.sect1 { padding-bottom: 0; }
|
686
|
+
|
687
|
+
#toctitle { color: #00406F; font-weight: normal; margin-top: 1.5em; }
|
688
|
+
|
689
|
+
.sidebarblock { border-color: #aaa; }
|
690
|
+
|
691
|
+
code { -webkit-border-radius: 4px; border-radius: 4px; }
|
692
|
+
|
693
|
+
p.tableblock.header { color: #6d6e71; }
|
694
|
+
|
695
|
+
.literalblock pre, .listingblock pre { background: #eeeeee; }
|
metadata
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: asciibuild
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jon Brisbin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: asciidoctor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pygments.rb
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.6'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: mustache
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
description: Orchestrate and document processes by inlining executable code into an
|
56
|
+
Asciidoc document
|
57
|
+
email: jon@jbrisbin.com
|
58
|
+
executables:
|
59
|
+
- asciibuild
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- bin/asciibuild
|
64
|
+
- lib/asciibuild.rb
|
65
|
+
- lib/asciibuild/extensions.rb
|
66
|
+
- stylesheets/colony.css
|
67
|
+
homepage: http://github.com/jbrisbin/asciibuild
|
68
|
+
licenses:
|
69
|
+
- Apache-2.0
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.5.1
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: Process orchestrator based on Asciidoc
|
91
|
+
test_files: []
|