ronn-ng 0.7.4
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/AUTHORS +8 -0
- data/CHANGES +184 -0
- data/INSTALLING +20 -0
- data/LICENSE.txt +11 -0
- data/README.md +113 -0
- data/Rakefile +163 -0
- data/bin/ronn +223 -0
- data/config.ru +15 -0
- data/lib/ronn.rb +50 -0
- data/lib/ronn/document.rb +495 -0
- data/lib/ronn/index.rb +183 -0
- data/lib/ronn/roff.rb +302 -0
- data/lib/ronn/server.rb +70 -0
- data/lib/ronn/template.rb +171 -0
- data/lib/ronn/template/80c.css +6 -0
- data/lib/ronn/template/dark.css +18 -0
- data/lib/ronn/template/darktoc.css +17 -0
- data/lib/ronn/template/default.html +41 -0
- data/lib/ronn/template/man.css +100 -0
- data/lib/ronn/template/print.css +5 -0
- data/lib/ronn/template/screen.css +105 -0
- data/lib/ronn/template/toc.css +27 -0
- data/lib/ronn/utils.rb +55 -0
- data/man/index.html +78 -0
- data/man/index.txt +15 -0
- data/man/ronn-format.7 +201 -0
- data/man/ronn-format.7.ronn +157 -0
- data/man/ronn.1 +325 -0
- data/man/ronn.1.ronn +306 -0
- data/ronn-ng.gemspec +97 -0
- data/test/angle_bracket_syntax.html +18 -0
- data/test/angle_bracket_syntax.ronn +12 -0
- data/test/basic_document.html +9 -0
- data/test/basic_document.ronn +4 -0
- data/test/contest.rb +68 -0
- data/test/custom_title_document.html +6 -0
- data/test/custom_title_document.ronn +5 -0
- data/test/definition_list_syntax.html +21 -0
- data/test/definition_list_syntax.roff +26 -0
- data/test/definition_list_syntax.ronn +18 -0
- data/test/dots_at_line_start_test.roff +10 -0
- data/test/dots_at_line_start_test.ronn +4 -0
- data/test/entity_encoding_test.html +35 -0
- data/test/entity_encoding_test.roff +61 -0
- data/test/entity_encoding_test.ronn +25 -0
- data/test/index.txt +8 -0
- data/test/markdown_syntax.html +957 -0
- data/test/markdown_syntax.roff +1467 -0
- data/test/markdown_syntax.ronn +881 -0
- data/test/middle_paragraph.html +15 -0
- data/test/middle_paragraph.roff +13 -0
- data/test/middle_paragraph.ronn +10 -0
- data/test/missing_spaces.roff +9 -0
- data/test/missing_spaces.ronn +2 -0
- data/test/pre_block_with_quotes.roff +13 -0
- data/test/pre_block_with_quotes.ronn +6 -0
- data/test/section_reference_links.html +17 -0
- data/test/section_reference_links.roff +10 -0
- data/test/section_reference_links.ronn +12 -0
- data/test/test_ronn.rb +110 -0
- data/test/test_ronn_document.rb +186 -0
- data/test/test_ronn_index.rb +73 -0
- data/test/titleless_document.html +10 -0
- data/test/titleless_document.ronn +3 -0
- data/test/underline_spacing_test.roff +21 -0
- data/test/underline_spacing_test.ronn +11 -0
- metadata +176 -0
data/lib/ronn/server.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'ronn'
|
2
|
+
require 'rack'
|
3
|
+
require 'sinatra/base'
|
4
|
+
|
5
|
+
module Ronn
|
6
|
+
|
7
|
+
# Ronn HTTP server. Serves a list of .ronn files as HTML. The options Hash is
|
8
|
+
# passed to Ronn::Document.new on each invocation.
|
9
|
+
#
|
10
|
+
# Use Ronn::Server.new to create a Rack app. See the config.ru file in the
|
11
|
+
# root of the Ronn distribution for example usage.
|
12
|
+
#
|
13
|
+
# Ronn::Server.run starts a server on port
|
14
|
+
module Server
|
15
|
+
def self.new(files, options={})
|
16
|
+
files = Dir[files] if files.respond_to?(:to_str)
|
17
|
+
raise ArgumentError, "no files" if files.empty?
|
18
|
+
Sinatra.new do
|
19
|
+
set :show_exceptions, true
|
20
|
+
set :public, File.expand_path(__FILE__, '../templates')
|
21
|
+
set :static, false
|
22
|
+
set :views, File.expand_path(__FILE__, '../templates')
|
23
|
+
|
24
|
+
get '/' do
|
25
|
+
files.map do |f|
|
26
|
+
base = File.basename(f, '.ronn')
|
27
|
+
"<li><a href='./#{base}.html'>#{escape_html(base)}</a></li>"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def styles
|
32
|
+
params[:styles] ||= params[:style]
|
33
|
+
case
|
34
|
+
when params[:styles].respond_to?(:to_ary)
|
35
|
+
params[:styles]
|
36
|
+
when params[:styles]
|
37
|
+
params[:styles].split(/[, ]+/)
|
38
|
+
else
|
39
|
+
[]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
files.each do |file|
|
44
|
+
basename = File.basename(file, '.ronn')
|
45
|
+
|
46
|
+
get "/#{basename}.html" do
|
47
|
+
options = options.merge(:styles => styles)
|
48
|
+
%w[date manual organization].each do |attribute|
|
49
|
+
next if !params[attribute]
|
50
|
+
options[attribute] = params[attribute]
|
51
|
+
end
|
52
|
+
Ronn::Document.new(file, options).to_html
|
53
|
+
end
|
54
|
+
get "/#{basename}.roff" do
|
55
|
+
content_type 'text/plain+roff'
|
56
|
+
Ronn::Document.new(file, options.dup).to_roff
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.run(files, options={})
|
63
|
+
new(files, options).run!(
|
64
|
+
:server => %w[mongrel thin webrick],
|
65
|
+
:port => 1207,
|
66
|
+
:logging => true
|
67
|
+
)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,171 @@
|
|
1
|
+
require 'mustache'
|
2
|
+
|
3
|
+
module Ronn
|
4
|
+
class Template < Mustache
|
5
|
+
self.template_path = File.dirname(__FILE__) + '/template'
|
6
|
+
self.template_extension = 'html'
|
7
|
+
|
8
|
+
def initialize(document, style_path=ENV['RONN_STYLE'].to_s.split(':'))
|
9
|
+
@document = document
|
10
|
+
@style_path = style_path + [Template.template_path]
|
11
|
+
end
|
12
|
+
|
13
|
+
def render(template='default')
|
14
|
+
super template[0,1] == '/' ? File.read(template) : partial(template)
|
15
|
+
end
|
16
|
+
|
17
|
+
##
|
18
|
+
# Basic document attributes
|
19
|
+
|
20
|
+
def name
|
21
|
+
@document.name
|
22
|
+
end
|
23
|
+
|
24
|
+
def section
|
25
|
+
@document.section
|
26
|
+
end
|
27
|
+
|
28
|
+
def tagline
|
29
|
+
@document.tagline
|
30
|
+
end
|
31
|
+
alias tagline? tagline
|
32
|
+
|
33
|
+
def name_and_section?
|
34
|
+
name && section
|
35
|
+
end
|
36
|
+
|
37
|
+
def title
|
38
|
+
if !name_and_section? && tagline
|
39
|
+
tagline
|
40
|
+
else
|
41
|
+
[page_name, tagline].compact.join(' - ')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def custom_title?
|
46
|
+
!name_and_section? && tagline
|
47
|
+
end
|
48
|
+
|
49
|
+
def page_name
|
50
|
+
if section
|
51
|
+
"#{name}(#{section})"
|
52
|
+
else
|
53
|
+
name
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def generator
|
58
|
+
"Ronn-NG/v#{Ronn.version} (http://github.com/apjanke/ronn-ng/tree/#{Ronn.revision})"
|
59
|
+
end
|
60
|
+
|
61
|
+
def manual
|
62
|
+
@document.manual
|
63
|
+
end
|
64
|
+
|
65
|
+
def organization
|
66
|
+
@document.organization
|
67
|
+
end
|
68
|
+
|
69
|
+
def date
|
70
|
+
@document.date.strftime('%B %Y')
|
71
|
+
end
|
72
|
+
|
73
|
+
def wrap_class_name
|
74
|
+
'mp'
|
75
|
+
end
|
76
|
+
|
77
|
+
##
|
78
|
+
# Section TOCs
|
79
|
+
|
80
|
+
def section_heads
|
81
|
+
@document.section_heads.map do |id, text|
|
82
|
+
{
|
83
|
+
:id => id,
|
84
|
+
:text => text
|
85
|
+
}
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
##
|
90
|
+
# Styles
|
91
|
+
|
92
|
+
# Array of style module names as given on the command line.
|
93
|
+
def styles
|
94
|
+
@document.styles
|
95
|
+
end
|
96
|
+
|
97
|
+
# Array of stylesheet info hashes.
|
98
|
+
def stylesheets
|
99
|
+
styles.zip(style_files).map do |name, path|
|
100
|
+
base = File.basename(path, '.css')
|
101
|
+
fail "style not found: #{style.inspect}" if path.nil?
|
102
|
+
{
|
103
|
+
:name => name,
|
104
|
+
:path => path,
|
105
|
+
:base => File.basename(path, '.css'),
|
106
|
+
:media => (base =~ /(print|screen)$/) ? $1 : 'all'
|
107
|
+
}
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
# All embedded stylesheets.
|
112
|
+
def stylesheet_tags
|
113
|
+
stylesheets.
|
114
|
+
map { |style| inline_stylesheet(style[:path], style[:media]) }.
|
115
|
+
join("\n ")
|
116
|
+
end
|
117
|
+
|
118
|
+
attr_accessor :style_path
|
119
|
+
|
120
|
+
# Array of expanded stylesheet file names. If a file cannot be found, the
|
121
|
+
# resulting array will include nil elements in positions corresponding to
|
122
|
+
# the stylesheets array.
|
123
|
+
def style_files
|
124
|
+
styles.map do |name|
|
125
|
+
next name if name.include?('/')
|
126
|
+
style_path.
|
127
|
+
reject { |p| p.strip.empty? }.
|
128
|
+
map { |p| File.join(p, "#{name}.css") }.
|
129
|
+
detect { |file| File.exist?(file) }
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
# Array of style names for which no file could be found.
|
134
|
+
def missing_styles
|
135
|
+
style_files.
|
136
|
+
zip(files).
|
137
|
+
select { |style, file| file.nil? }.
|
138
|
+
map { |style, file| style }
|
139
|
+
end
|
140
|
+
|
141
|
+
##
|
142
|
+
# TEMPLATE CSS LOADING
|
143
|
+
|
144
|
+
def inline_stylesheet(path, media='all')
|
145
|
+
data = File.read(path)
|
146
|
+
data.gsub!(%r|/\*.+?\*/|m, '') # comments
|
147
|
+
data.gsub!(/([;{,]) *\n/m, '\1') # end-of-line whitespace
|
148
|
+
data.gsub!(/\n{2,}/m, "\n") # collapse lines
|
149
|
+
data.gsub!(/[; ]+\}/, '}') # superfluous trailing semi-colons
|
150
|
+
data.gsub!(/([{;,+])[ ]+/, '\1') # whitespace around things
|
151
|
+
data.gsub!(/[ \t]+/m, ' ') # coalescing whitespace elsewhere
|
152
|
+
data.gsub!(/^/, ' ') # indent
|
153
|
+
data.strip!
|
154
|
+
[
|
155
|
+
"<style type='text/css' media='#{media}'>",
|
156
|
+
"/* style: #{File.basename(path, '.css')} */",
|
157
|
+
data,
|
158
|
+
"</style>"
|
159
|
+
].join("\n ")
|
160
|
+
end
|
161
|
+
|
162
|
+
def remote_stylesheet(name, media='all')
|
163
|
+
path = File.expand_path("../template/#{name}.css", __FILE__)
|
164
|
+
"<link rel='stylesheet' type='text/css' media='#{media}' href='#{path}'>"
|
165
|
+
end
|
166
|
+
|
167
|
+
def stylesheet(path, media='all')
|
168
|
+
inline_stylesheet(name, media)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
.mp, body#manpage {
|
2
|
+
background:#080706;
|
3
|
+
color:#888;
|
4
|
+
}
|
5
|
+
.mp, .mp code, .mp pre,
|
6
|
+
.mp pre code, .mp tt, .mp kbd,
|
7
|
+
.mp samp { color:#aaa }
|
8
|
+
.mp h1, .mp h2, .mp h3, .mp h4 { color:#fff }
|
9
|
+
.man-decor, .man-decor ol li { color:#666 }
|
10
|
+
.mp code, .mp strong, .mp b { color:#fff }
|
11
|
+
|
12
|
+
.mp em, .mp var, .mp u { color:#ddd }
|
13
|
+
|
14
|
+
.mp pre code { color:#ddd }
|
15
|
+
|
16
|
+
.mp a, .mp a:link, .mp a:hover,
|
17
|
+
.mp a code, .mp a pre, .mp a tt,
|
18
|
+
.mp a kbd, .mp a samp { color:#fff }
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/* darktoc.css - enable table of contents */
|
2
|
+
|
3
|
+
.man-navigation {
|
4
|
+
border-left:2px solid #222;
|
5
|
+
background-color:#131211;
|
6
|
+
}
|
7
|
+
.man-navigation a,
|
8
|
+
.man-navigation a:hover,
|
9
|
+
.man-navigation a:link,
|
10
|
+
.man-navigation a:visited {
|
11
|
+
color:#777;
|
12
|
+
text-decoration:none;
|
13
|
+
}
|
14
|
+
.man-navigation a:hover {
|
15
|
+
color:#fff;
|
16
|
+
text-decoration:underline;
|
17
|
+
}
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv='content-type' content='text/html;charset=utf8'>
|
5
|
+
<meta name='generator' content='{{ generator }}'>
|
6
|
+
<title>{{ title }}</title>
|
7
|
+
{{{ stylesheet_tags }}}
|
8
|
+
</head>
|
9
|
+
<!--
|
10
|
+
The following styles are deprecated and will be removed at some point:
|
11
|
+
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
|
12
|
+
|
13
|
+
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
|
14
|
+
.man-navigation should be used instead.
|
15
|
+
-->
|
16
|
+
<body id='manpage'>
|
17
|
+
<div class='mp' id='man'>
|
18
|
+
|
19
|
+
<div class='man-navigation' style='display:none'>
|
20
|
+
{{#section_heads}}
|
21
|
+
<a href="#{{id}}">{{text}}</a>
|
22
|
+
{{/section_heads}}
|
23
|
+
</div>
|
24
|
+
|
25
|
+
<ol class='man-decor man-head man head'>
|
26
|
+
<li class='tl'>{{ page_name }}</li>
|
27
|
+
<li class='tc'>{{ manual }}</li>
|
28
|
+
<li class='tr'>{{ page_name }}</li>
|
29
|
+
</ol>
|
30
|
+
|
31
|
+
{{{ html }}}
|
32
|
+
|
33
|
+
<ol class='man-decor man-foot man foot'>
|
34
|
+
<li class='tl'>{{ organization }}</li>
|
35
|
+
<li class='tc'>{{ date }}</li>
|
36
|
+
<li class='tr'>{{ page_name }}</li>
|
37
|
+
</ol>
|
38
|
+
|
39
|
+
</div>
|
40
|
+
</body>
|
41
|
+
</html>
|
@@ -0,0 +1,100 @@
|
|
1
|
+
/* man.css - core manpage styles */
|
2
|
+
|
3
|
+
/* STRUCTURE, INDENT, MARGINS */
|
4
|
+
|
5
|
+
body#manpage { margin:0 }
|
6
|
+
.mp {
|
7
|
+
max-width:100ex;
|
8
|
+
padding:0 9ex 1ex 4ex;
|
9
|
+
}
|
10
|
+
|
11
|
+
.mp p, .mp pre,
|
12
|
+
.mp ul, .mp ol, .mp dl { margin:0 0 20px 0 }
|
13
|
+
.mp h2 { margin:10px 0 0 0 }
|
14
|
+
|
15
|
+
.mp > p, .mp > pre, .mp > ul,
|
16
|
+
.mp > ol, .mp > dl { margin-left:8ex }
|
17
|
+
.mp h3 { margin:0 0 0 4ex }
|
18
|
+
|
19
|
+
.mp dt { margin:0; clear:left }
|
20
|
+
.mp dt.flush { float:left; width:8ex }
|
21
|
+
.mp dd { margin:0 0 0 9ex }
|
22
|
+
.mp h1, .mp h2, .mp h3, .mp h4 { clear:left }
|
23
|
+
|
24
|
+
.mp pre { margin-bottom:20px }
|
25
|
+
.mp pre+h2, .mp pre+h3 { margin-top:22px }
|
26
|
+
.mp h2+pre, .mp h3+pre { margin-top:5px }
|
27
|
+
|
28
|
+
.mp img { display:block;margin:auto }
|
29
|
+
.mp h1.man-title { display:none }
|
30
|
+
|
31
|
+
/* FONTS */
|
32
|
+
|
33
|
+
.mp, .mp code, .mp pre, .mp tt,
|
34
|
+
.mp kbd, .mp samp, .mp h3, .mp h4 {
|
35
|
+
font-family:monospace;
|
36
|
+
font-size:14px;
|
37
|
+
line-height:1.42857142857143;
|
38
|
+
}
|
39
|
+
.mp h2 {
|
40
|
+
font-size:16px;
|
41
|
+
line-height:1.25;
|
42
|
+
}
|
43
|
+
.mp h1 {
|
44
|
+
font-size:20px;
|
45
|
+
line-height:2;
|
46
|
+
}
|
47
|
+
|
48
|
+
/* TEXT STYLES */
|
49
|
+
|
50
|
+
.mp {
|
51
|
+
text-align:justify;
|
52
|
+
background:#fff;
|
53
|
+
}
|
54
|
+
.mp, .mp code, .mp pre,
|
55
|
+
.mp pre code, .mp tt, .mp kbd,
|
56
|
+
.mp samp { color:#131211 }
|
57
|
+
.mp h1, .mp h2, .mp h3, .mp h4 { color:#030201 }
|
58
|
+
.mp u { text-decoration:underline; }
|
59
|
+
|
60
|
+
.mp code, .mp strong, .mp b {
|
61
|
+
font-weight:bold;
|
62
|
+
color:#131211;
|
63
|
+
}
|
64
|
+
|
65
|
+
.mp em, .mp var {
|
66
|
+
font-style:italic;
|
67
|
+
color:#232221;
|
68
|
+
text-decoration:none;
|
69
|
+
}
|
70
|
+
|
71
|
+
/* LINKS */
|
72
|
+
|
73
|
+
.mp a, .mp a:link, .mp a:hover,
|
74
|
+
.mp a code, .mp a pre, .mp a tt,
|
75
|
+
.mp a kbd, .mp a samp { color:#0000ff }
|
76
|
+
|
77
|
+
.mp b.man-ref { font-weight:normal;color:#434241 }
|
78
|
+
|
79
|
+
/* PREFORMATTED BLOCKS */
|
80
|
+
|
81
|
+
.mp pre { padding:0 4ex }
|
82
|
+
.mp pre code { font-weight:normal;color:#434241 }
|
83
|
+
.mp h2+pre, h3+pre { padding-left:0 }
|
84
|
+
|
85
|
+
/* DOCUMENT HEADER AND FOOTER AREAS */
|
86
|
+
|
87
|
+
ol.man-decor, ol.man-decor li {
|
88
|
+
margin:3px 0 10px 0;
|
89
|
+
padding:0;
|
90
|
+
float:left;
|
91
|
+
width:33%;
|
92
|
+
list-style-type:none;
|
93
|
+
text-transform:uppercase;
|
94
|
+
color:#999;
|
95
|
+
letter-spacing:1px;
|
96
|
+
}
|
97
|
+
ol.man-decor { width:100% }
|
98
|
+
ol.man-decor li.tl { text-align:left }
|
99
|
+
ol.man-decor li.tc { text-align:center; letter-spacing:4px }
|
100
|
+
ol.man-decor li.tr { text-align:right; float:right }
|
@@ -0,0 +1,105 @@
|
|
1
|
+
/* STRUCTURE, INDENT, MARGINS */
|
2
|
+
|
3
|
+
body { margin:0 }
|
4
|
+
#man { max-width:88ex; padding:0 2ex 1ex 2ex }
|
5
|
+
|
6
|
+
#man p, #man pre,
|
7
|
+
#man ul, #man ol, #man dl { margin:0 0 20px 0 }
|
8
|
+
#man h2 { margin:10px 0 0 0 }
|
9
|
+
|
10
|
+
#man > p, #man > pre,
|
11
|
+
#man > ul, #man > ol, #man > dl { margin-left:8ex }
|
12
|
+
#man h3 { margin:0 0 0 4ex }
|
13
|
+
|
14
|
+
#man dt { margin:0; clear:left }
|
15
|
+
#man dt.flush { float:left; width:8ex }
|
16
|
+
#man dd { margin:0 0 0 9ex }
|
17
|
+
#man h1, #man h2, #man h3, #man h4 { clear:left }
|
18
|
+
|
19
|
+
#man pre { margin-bottom:20px }
|
20
|
+
#man pre+h2, #man pre+h3 { margin-top:22px }
|
21
|
+
#man h2+pre, #man h3+pre { margin-top:5px }
|
22
|
+
|
23
|
+
#man img { display:block;margin:auto }
|
24
|
+
#man h1.man-title { display:none }
|
25
|
+
|
26
|
+
/* FONTS */
|
27
|
+
|
28
|
+
#man, #man code, #man pre,
|
29
|
+
#man tt, #man kbd, #man samp,
|
30
|
+
#man h3, #man h4 {
|
31
|
+
font-family:monospace;
|
32
|
+
font-size:14px;
|
33
|
+
line-height:1.42857142857143;
|
34
|
+
}
|
35
|
+
#man h2, #man ol.man {
|
36
|
+
font-size:16px;
|
37
|
+
line-height:1.25
|
38
|
+
}
|
39
|
+
#man h1 {
|
40
|
+
font-size:20px;
|
41
|
+
line-height:2;
|
42
|
+
}
|
43
|
+
|
44
|
+
/* TEXT STYLES */
|
45
|
+
|
46
|
+
#man {
|
47
|
+
text-align:justify;
|
48
|
+
background:#fff;
|
49
|
+
}
|
50
|
+
#man, #man code, #man pre, #man pre code,
|
51
|
+
#man tt, #man kbd, #man samp { color:#131211 }
|
52
|
+
#man h1, #man h2, #man h3, #man h4 { color:#030201 }
|
53
|
+
#man ol.man, #man ol.man li { color:#636261 }
|
54
|
+
|
55
|
+
#man code, #man strong, #man b {
|
56
|
+
font-weight:bold;
|
57
|
+
color:#131211;
|
58
|
+
}
|
59
|
+
|
60
|
+
#man em, #man var, #man u {
|
61
|
+
font-style:italic;
|
62
|
+
color:#434241;
|
63
|
+
text-decoration:none;
|
64
|
+
}
|
65
|
+
|
66
|
+
#man pre {
|
67
|
+
background:#edeceb;
|
68
|
+
padding:5px 1ex;
|
69
|
+
border-left:1ex solid #ddd;
|
70
|
+
}
|
71
|
+
#man pre code {
|
72
|
+
font-weight:normal;
|
73
|
+
background:inherit;
|
74
|
+
}
|
75
|
+
|
76
|
+
/* DOCUMENT HEADER AND FOOTER AREAS */
|
77
|
+
|
78
|
+
#man ol.man, #man ol.man li {
|
79
|
+
margin:3px 0 10px 0;
|
80
|
+
padding:0;
|
81
|
+
float:left;
|
82
|
+
width:33%;
|
83
|
+
list-style-type:none;
|
84
|
+
text-transform:uppercase;
|
85
|
+
color:#999;
|
86
|
+
letter-spacing:1px;
|
87
|
+
}
|
88
|
+
#man ol.man { width:100% }
|
89
|
+
#man ol.man li.tl { text-align:left }
|
90
|
+
#man ol.man li.tc { text-align:center; letter-spacing:4px }
|
91
|
+
#man ol.man li.tr { text-align:right; float:right }
|
92
|
+
|
93
|
+
/* SECTION TOC NAVIGATION */
|
94
|
+
|
95
|
+
#man div.man-navigation {
|
96
|
+
position:fixed;
|
97
|
+
top:0;
|
98
|
+
left:96ex;
|
99
|
+
height:100%;
|
100
|
+
width:100%;
|
101
|
+
padding:1ex 0 0 2ex;
|
102
|
+
border-left:0.25ex solid #DCDCDC;
|
103
|
+
background-color: #F5F5F5;
|
104
|
+
}
|
105
|
+
#man div.man-navigation a { display:block; margin-bottom:1.5ex }
|