docjs 0.1.5 → 0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE.md +11 -14
- data/README.md +27 -18
- data/docjs.gemspec +3 -3
- data/docs/PATTERNS.md +2 -2
- data/docs/guides/CUSTOMIZE.md +125 -28
- data/docs/guides/TRY.md +2 -1
- data/docs/guides/USE.md +139 -89
- data/lib/code_object/base.rb +0 -10
- data/lib/code_object/converter.rb +3 -3
- data/lib/dom/dom.rb +24 -21
- data/lib/dom/no_doc.rb +2 -2
- data/lib/dom/node.rb +25 -26
- data/lib/helper/helper.rb +161 -36
- data/lib/helper/linker.rb +47 -11
- data/lib/parser/comment.rb +9 -8
- data/lib/parser/comment_parser.rb +9 -10
- data/lib/parser/parser.rb +4 -6
- data/lib/processor.rb +1 -1
- data/lib/token/handler.rb +13 -0
- data/lib/token/token.rb +3 -4
- data/templates/generators/api_pages_generator.rb +0 -4
- data/templates/generators/docs_generator.rb +1 -2
- data/templates/resources/css/application.css +92 -17
- data/templates/resources/js/jcore.js +37 -2
- data/templates/resources/scss/_header.scss +4 -5
- data/templates/resources/scss/_helpers.scss +6 -0
- data/templates/resources/scss/_highlighter.scss +5 -8
- data/templates/resources/scss/_tooltip.scss +2 -2
- data/templates/resources/scss/application.scss +6 -4
- data/templates/tokens/tokens.rb +47 -9
- data/templates/types/function.rb +19 -57
- data/templates/types/object.rb +3 -10
- data/templates/types/prototype.rb +1 -1
- data/test/docs/README.md +35 -14
- metadata +3 -7
- data/docs/ARCHITECTURE.md +0 -0
- data/docs/CONCEPT.md +0 -80
- data/docs/DOCUMENTATION.md +0 -39
- data/templates/views/index.html.erb +0 -0
data/lib/helper/linker.rb
CHANGED
@@ -10,13 +10,31 @@ module Helper
|
|
10
10
|
HASH = /^#\S*/
|
11
11
|
DOCUMENTATION = /^doc\:([^\s#]+)(#\S+)?/
|
12
12
|
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
13
|
+
# link to can link many types of resources, the `target` can be one of:
|
14
|
+
#
|
15
|
+
# - `"file:some/path/to_a.file"`
|
16
|
+
# - `"doc:Document.path"`
|
17
|
+
# - `"Code.object.path"`
|
18
|
+
# - `".relative.code_object.path"`
|
19
|
+
# - `"http://external.address.com"`
|
20
|
+
# - `"mailto:me@example.com"`
|
21
|
+
# - `instance_of_code_object`
|
22
|
+
# - `instance_of_a_doc_object`
|
23
|
+
#
|
24
|
+
# Most of the time it will be used by {#replace_links} to automatically convert links in
|
25
|
+
# documentation like `{Core.some.object see some.object}`
|
19
26
|
#
|
27
|
+
# @example
|
28
|
+
# link_to "doc:README", "see readme"
|
29
|
+
# link_to Dom.docs[:README], "see readme"
|
30
|
+
#
|
31
|
+
# link_to "file:pdf/information.pdf", "pdf-file (1.5MB)"
|
32
|
+
# link_to "http://b-studios.de", "b-studios"
|
33
|
+
#
|
34
|
+
# @param [String, Document::Document, CodeObject::Base] target for further information see above
|
35
|
+
# @param [String] text the link text
|
36
|
+
# @return [String] a html-link
|
37
|
+
# @param [Hash] args the arguments, which will be reached through to {Helper#tag}
|
20
38
|
def link_to(target, text = nil, args = {})
|
21
39
|
|
22
40
|
Logger.debug "Trying to link #{target}"
|
@@ -68,10 +86,19 @@ module Helper
|
|
68
86
|
Logger.warn "Could not resolve link to '#{target}'"
|
69
87
|
return text
|
70
88
|
end
|
71
|
-
|
72
|
-
tag :a, text, :href => link
|
89
|
+
|
90
|
+
tag :a, text, args.merge({ :href => link })
|
73
91
|
end
|
74
92
|
|
93
|
+
# Creates a link, relative to the current output-path
|
94
|
+
#
|
95
|
+
# @example
|
96
|
+
# relative_link '/home/me/output/test.html', 'Click me'
|
97
|
+
# #=> "<a href='../test.html'>Click me</a>"
|
98
|
+
#
|
99
|
+
# @param [String] path absolute path to the resource
|
100
|
+
# @param [String] text the link text
|
101
|
+
# @return [String] html-link
|
75
102
|
def relative_link(path, text)
|
76
103
|
tag :a, text, :href => to_relative(path)
|
77
104
|
end
|
@@ -104,8 +131,17 @@ module Helper
|
|
104
131
|
object.to_s
|
105
132
|
end
|
106
133
|
end
|
107
|
-
|
108
|
-
#
|
134
|
+
|
135
|
+
# finds any links, that look like `{my_link}` and replaces them with the help of {#link_to}
|
136
|
+
#
|
137
|
+
# @example
|
138
|
+
# replace_links "This is a text, containing a {some.reference link}"
|
139
|
+
# #=> "This is a text, containing a <a href='../some/reference.html'>link</a>"
|
140
|
+
#
|
141
|
+
# @param [String] text
|
142
|
+
# @return [String] text containing html-links
|
143
|
+
#
|
144
|
+
# @see https://github.com/lsegal/yard/blob/master/lib/yard/templates/helpers/html_helper.rb#L170
|
109
145
|
def replace_links(text)
|
110
146
|
code_tags = 0
|
111
147
|
text.gsub(/<(\/)?(pre|code|tt)|(\\)?\{(?!\})(\S+?)(?:\s([^\}]*?\S))?\}(?=[\W<]|.+<\/|$)/m) do |str|
|
@@ -124,4 +160,4 @@ module Helper
|
|
124
160
|
end
|
125
161
|
end
|
126
162
|
end
|
127
|
-
end
|
163
|
+
end
|
data/lib/parser/comment.rb
CHANGED
@@ -3,22 +3,22 @@ require_relative '../code_object/converter'
|
|
3
3
|
|
4
4
|
module Parser
|
5
5
|
|
6
|
-
# Together with {Parser::Coment} it acts as an **Interface** between {Parser}
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# Together with {Parser::Coment} it acts as an **Interface** between {Parser} and {CodeObject}.
|
7
|
+
# Parser::Comment creates instances of Tokenline, which are then analysed by
|
8
|
+
# {Token::Container#process_token}
|
9
9
|
#
|
10
10
|
# @see Parser::Comment
|
11
11
|
# @see Parser::CommentParser
|
12
12
|
Tokenline = Struct.new :token, :content
|
13
13
|
|
14
14
|
# Comment contains all **tokenlines** and **doclines**, which are created by the
|
15
|
-
# {Parser::Parser parser}. The tokenlines are stored as {Tokenline}. Because
|
16
|
-
#
|
15
|
+
# {Parser::Parser parser}. The tokenlines are stored as {Tokenline}. Because of this Comment and
|
16
|
+
# Tokenline act as **Interface** for {CodeObject::Base}.
|
17
17
|
#
|
18
|
-
# The tokens will further be processed by {Token::Container}, which
|
19
|
-
#
|
18
|
+
# The tokens will further be processed by {Token::Container}, which is mixed in to
|
19
|
+
# {CodeObject::Base}).
|
20
20
|
#
|
21
|
-
# @example creating
|
21
|
+
# @example creating an comment
|
22
22
|
# c = Parser::Comment.new "the original string of the comment, with all tokens and doclines"
|
23
23
|
# c.add_tokenline :param "[String] first_parameter this is the description for param1"
|
24
24
|
# c.add_docline "Some documentation of the comment"
|
@@ -56,6 +56,7 @@ module Parser
|
|
56
56
|
@children += comments
|
57
57
|
end
|
58
58
|
|
59
|
+
# @return [Boolean]
|
59
60
|
def has_tokens?
|
60
61
|
not @tokenlines.empty?
|
61
62
|
end
|
@@ -9,9 +9,8 @@ module Parser
|
|
9
9
|
@comment = Comment.new(input)
|
10
10
|
end
|
11
11
|
|
12
|
-
# All lines, that start with a `@-symbol` will be processed as tokenline
|
13
|
-
#
|
14
|
-
# interpreted as continuation of the preceding token.
|
12
|
+
# All lines, that start with a `@-symbol` will be processed as tokenline. If the next line after
|
13
|
+
# a token starts with two spaces, it will be interpreted as continuation of the preceding token.
|
15
14
|
#
|
16
15
|
# @example multiline token
|
17
16
|
# @multiline_token this is a multi_line token, it won't
|
@@ -19,8 +18,8 @@ module Parser
|
|
19
18
|
#
|
20
19
|
# All other lines are interpreted as doclines
|
21
20
|
#
|
22
|
-
# @return [Parser::Comment] Creates an instance of {Parser::Comment} and
|
23
|
-
#
|
21
|
+
# @return [Parser::Comment] Creates an instance of {Parser::Comment} and attaches all find doc-
|
22
|
+
# and tokenlines to it.
|
24
23
|
def parse
|
25
24
|
# we don't want the linebreak of the comment start in our first docline
|
26
25
|
# i.e. ignore '/**\n'
|
@@ -34,8 +33,8 @@ module Parser
|
|
34
33
|
|
35
34
|
protected
|
36
35
|
|
37
|
-
# skips leading spaces with asterisk aka {Parser::LINE_START LINE_START}
|
38
|
-
#
|
36
|
+
# skips leading spaces with asterisk aka {Parser::LINE_START LINE_START} then checks for
|
37
|
+
# {Parser::TOKENLINE_START @-symbol} to parse a token
|
39
38
|
def parse_comment_line
|
40
39
|
self.skip LINE_START
|
41
40
|
|
@@ -59,9 +58,9 @@ module Parser
|
|
59
58
|
# @token_two some text, and some more
|
60
59
|
# and even some more.
|
61
60
|
#
|
62
|
-
#
|
63
|
-
#
|
64
|
-
#
|
61
|
+
# 1. Scan til the first linebreak (or end of string, if it reaches it first)
|
62
|
+
# 2. Check if next line starts with two spaces, skip them
|
63
|
+
# 3. Parse recursivly til the next line does not start with two spaces
|
65
64
|
#
|
66
65
|
# @see StringScanner.scan_until_ahead to see another example
|
67
66
|
# of the positive lookahead
|
data/lib/parser/parser.rb
CHANGED
@@ -58,8 +58,7 @@ module Parser
|
|
58
58
|
|
59
59
|
attr_reader :filepath, :offset
|
60
60
|
|
61
|
-
# A new StringScanner instance will be used to {#parse parse} the given
|
62
|
-
# `input`.
|
61
|
+
# A new StringScanner instance will be used to {#parse parse} the given `input`.
|
63
62
|
#
|
64
63
|
# @param [String] input
|
65
64
|
def initialize(input, args = {})
|
@@ -79,8 +78,8 @@ module Parser
|
|
79
78
|
end
|
80
79
|
|
81
80
|
|
82
|
-
# Recursivly parses the {#initialize given input} and thereby ignores
|
83
|
-
#
|
81
|
+
# Recursivly parses the {#initialize given input} and thereby ignores strings.
|
82
|
+
#
|
84
83
|
# @todo Rewrite to use skip_intelligent_until
|
85
84
|
# @return [Array<Parser::Comment>] the parsed comment-stream
|
86
85
|
def parse()
|
@@ -220,8 +219,7 @@ class StringScanner
|
|
220
219
|
return content
|
221
220
|
end
|
222
221
|
|
223
|
-
# will stop to scan at the specified pattern or at eos and returns the
|
224
|
-
# consumed string.
|
222
|
+
# will stop to scan at the specified pattern or at eos and returns the consumed string.
|
225
223
|
#
|
226
224
|
# @param [Regexp] pattern the pattern to scan for
|
227
225
|
# @return [String] the String before `pattern`
|
data/lib/processor.rb
CHANGED
@@ -46,7 +46,7 @@ module Processor
|
|
46
46
|
comments.each do |comment|
|
47
47
|
code_object = comment.to_code_object # convert to code_object
|
48
48
|
Logger.debug "Adding to Dom: #{code_object}"
|
49
|
-
Dom.add_node(code_object.path, code_object) # add to dom
|
49
|
+
Dom.add_node(code_object.path, code_object) unless code_object.nil? # add to dom
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
data/lib/token/handler.rb
CHANGED
@@ -240,6 +240,11 @@ module Token
|
|
240
240
|
}
|
241
241
|
@@handlers = {}
|
242
242
|
|
243
|
+
# Hash for all registered CodeObject-Types.
|
244
|
+
# For example:
|
245
|
+
# { :function => CodeObject::Function }
|
246
|
+
@@types = {}
|
247
|
+
|
243
248
|
# Attribute-Reader for all registered `@@handlers`
|
244
249
|
#
|
245
250
|
# @return [Hash<Symbol, Block>]
|
@@ -247,6 +252,12 @@ module Token
|
|
247
252
|
@@handlers
|
248
253
|
end
|
249
254
|
|
255
|
+
# @return [Hash<Symbol, CodeObject::Base> with symbol beeing the token and CodeObject::Base any
|
256
|
+
# subclass
|
257
|
+
def self.types
|
258
|
+
@@types
|
259
|
+
end
|
260
|
+
|
250
261
|
# Use a default handler
|
251
262
|
def self.apply(default_handler, *args)
|
252
263
|
@@defaults[default_handler].call(*args)
|
@@ -321,6 +332,8 @@ module Token
|
|
321
332
|
|
322
333
|
});
|
323
334
|
|
335
|
+
|
336
|
+
@@types[tokenname] = options[:type] unless options[:type].nil?
|
324
337
|
@@handlers[tokenname] = klass
|
325
338
|
end
|
326
339
|
|
data/lib/token/token.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
module Token
|
2
2
|
|
3
|
-
# Serves as Base-Class for all registered tokens.
|
4
|
-
# Registering a token with
|
3
|
+
# Serves as Base-Class for all registered tokens. Registering a token with
|
5
4
|
#
|
6
5
|
# Token:Handler.register :awesome, :template => :foo, :description => "Description"
|
7
6
|
#
|
@@ -28,8 +27,8 @@ module Token
|
|
28
27
|
#
|
29
28
|
# Token:Handler.register :awesome, :template => :foo, :description => "Description"
|
30
29
|
#
|
31
|
-
# This will create a class Token::AwesomeToken, which extends {Token::Token}. After creating the
|
32
|
-
# {.process_options} will be called with all provided options to apply those to the class.
|
30
|
+
# This will create a class Token::AwesomeToken, which extends {Token::Token}. After creating the
|
31
|
+
# class {.process_options} will be called with all provided options to apply those to the class.
|
33
32
|
#
|
34
33
|
# Because the options are valid for all instances of a tokenclass, the contents are stored in
|
35
34
|
# class-variables and class-methods are defined as accessors:
|
@@ -2,8 +2,6 @@ module Generator
|
|
2
2
|
|
3
3
|
class ApiPagesGenerator < Generator
|
4
4
|
|
5
|
-
# @todo those methods and therefore all class-variables @@configs are shared with all inheriting
|
6
|
-
# classes. i.e. The last change will be applied to all
|
7
5
|
describe 'renders documented objects type-dependant (Functions and Objects)'
|
8
6
|
layout 'application'
|
9
7
|
|
@@ -23,7 +21,6 @@ module Generator
|
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
26
|
-
# @todo switch on registered Types to enable dynamic view-changing
|
27
24
|
def render_object(code_object)
|
28
25
|
|
29
26
|
Logger.info "Rendering CodeObject '#{code_object.name}'"
|
@@ -32,7 +29,6 @@ module Generator
|
|
32
29
|
@object = code_object
|
33
30
|
@methods = @object.children.values.select {|c| c.is_a? CodeObject::Function }
|
34
31
|
@children = @object.children.values - @methods
|
35
|
-
# Render has to be documented very well, because it will be used in RenderTasks
|
36
32
|
render 'object/index', :to_file => path_to(code_object, :format => :html)
|
37
33
|
end
|
38
34
|
end
|
@@ -292,7 +292,12 @@ input:invalid, textarea:invalid {
|
|
292
292
|
display: block;
|
293
293
|
float: right; }
|
294
294
|
#header nav input#search {
|
295
|
+
-moz-border-radius: 10px;
|
296
|
+
/* Firefox */
|
297
|
+
-webkit-border-radius: 10px;
|
298
|
+
/* Safari, Chrome */
|
295
299
|
border-radius: 10px;
|
300
|
+
/* CSS3 */
|
296
301
|
outline: none;
|
297
302
|
padding: 0.2em 0.5em; }
|
298
303
|
#header nav #page-menu {
|
@@ -305,9 +310,19 @@ input:invalid, textarea:invalid {
|
|
305
310
|
float: left;
|
306
311
|
/* rounded corners */ }
|
307
312
|
#header nav #page-menu li:first-child a {
|
308
|
-
border-radius: 0 0 0 10px;
|
313
|
+
-moz-border-radius: 0 0 0 10px;
|
314
|
+
/* Firefox */
|
315
|
+
-webkit-border-radius: 0 0 0 10px;
|
316
|
+
/* Safari, Chrome */
|
317
|
+
border-radius: 0 0 0 10px;
|
318
|
+
/* CSS3 */ }
|
309
319
|
#header nav #page-menu li:last-child a {
|
310
|
-
border-radius: 0 0 10px 0;
|
320
|
+
-moz-border-radius: 0 0 10px 0;
|
321
|
+
/* Firefox */
|
322
|
+
-webkit-border-radius: 0 0 10px 0;
|
323
|
+
/* Safari, Chrome */
|
324
|
+
border-radius: 0 0 10px 0;
|
325
|
+
/* CSS3 */ }
|
311
326
|
#header nav #page-menu a {
|
312
327
|
background: #4a8fd3;
|
313
328
|
/* Old browsers */
|
@@ -360,8 +375,13 @@ input:invalid, textarea:invalid {
|
|
360
375
|
padding: 0 0 0 0.5em;
|
361
376
|
margin-bottom: 0.5em; }
|
362
377
|
#header .col50 section > ul {
|
363
|
-
border:
|
378
|
+
-moz-border-radius: 10px;
|
379
|
+
/* Firefox */
|
380
|
+
-webkit-border-radius: 10px;
|
381
|
+
/* Safari, Chrome */
|
364
382
|
border-radius: 10px;
|
383
|
+
/* CSS3 */
|
384
|
+
border: 1px solid #eee;
|
365
385
|
padding: 0;
|
366
386
|
margin: 0;
|
367
387
|
overflow: hidden;
|
@@ -483,6 +503,12 @@ input:invalid, textarea:invalid {
|
|
483
503
|
/* W3C */
|
484
504
|
font-family: Arial, sans-serif;
|
485
505
|
font-size: 10pt;
|
506
|
+
-moz-border-radius: 5px;
|
507
|
+
/* Firefox */
|
508
|
+
-webkit-border-radius: 5px;
|
509
|
+
/* Safari, Chrome */
|
510
|
+
border-radius: 5px;
|
511
|
+
/* CSS3 */
|
486
512
|
display: none;
|
487
513
|
position: absolute;
|
488
514
|
padding: 0.5em;
|
@@ -491,7 +517,6 @@ input:invalid, textarea:invalid {
|
|
491
517
|
font-size: 9pt;
|
492
518
|
color: #eee;
|
493
519
|
border: 1px solid #fff;
|
494
|
-
border-radius: 5px;
|
495
520
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); }
|
496
521
|
.tooltip a {
|
497
522
|
color: #8eb5db; }
|
@@ -506,7 +531,7 @@ code.source, .syntaxhighlighter, code.example {
|
|
506
531
|
display: block;
|
507
532
|
background: #f3f3f3;
|
508
533
|
font-size: 9pt;
|
509
|
-
line-height: 1.
|
534
|
+
line-height: 1.6em;
|
510
535
|
padding: 0.5em;
|
511
536
|
margin-bottom: 1.33em; }
|
512
537
|
|
@@ -528,12 +553,12 @@ code.source, .syntaxhighlighter, code.example {
|
|
528
553
|
border-right: 1px solid #d9d9d9;
|
529
554
|
text-align: right; }
|
530
555
|
.syntaxhighlighter .gutter .line {
|
531
|
-
|
532
|
-
line-height: 1.4em; }
|
556
|
+
height: 1.6em; }
|
533
557
|
.syntaxhighlighter .code {
|
534
558
|
padding: 0.5em 0;
|
535
559
|
width: 100%; }
|
536
560
|
.syntaxhighlighter .code .line {
|
561
|
+
height: 1.6em;
|
537
562
|
padding: 0 0.5em; }
|
538
563
|
.syntaxhighlighter .code .line:hover {
|
539
564
|
background: #f5f5f5; }
|
@@ -634,8 +659,13 @@ div#main {
|
|
634
659
|
max-width: 1000px;
|
635
660
|
display: block;
|
636
661
|
overflow: hidden;
|
637
|
-
|
662
|
+
-moz-border-radius: 10px 10px 0 0;
|
663
|
+
/* Firefox */
|
664
|
+
-webkit-border-radius: 10px 10px 0 0;
|
665
|
+
/* Safari, Chrome */
|
638
666
|
border-radius: 10px 10px 0 0;
|
667
|
+
/* CSS3 */
|
668
|
+
margin-top: -20px;
|
639
669
|
box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
|
640
670
|
border-top: 1px solid #eee; }
|
641
671
|
div#main h1 {
|
@@ -656,11 +686,16 @@ div#main {
|
|
656
686
|
padding-right: 20px; }
|
657
687
|
div#main header h1 .flag {
|
658
688
|
font-family: "Consolas", "monospace";
|
689
|
+
-moz-border-radius: 5px;
|
690
|
+
/* Firefox */
|
691
|
+
-webkit-border-radius: 5px;
|
692
|
+
/* Safari, Chrome */
|
693
|
+
border-radius: 5px;
|
694
|
+
/* CSS3 */
|
659
695
|
display: block;
|
660
696
|
background: #fcded1;
|
661
697
|
border: 1px solid #f9c2ab;
|
662
698
|
color: #5490c8;
|
663
|
-
border-radius: 5px;
|
664
699
|
padding: 0.4em 1em;
|
665
700
|
display: block;
|
666
701
|
float: right;
|
@@ -675,9 +710,14 @@ div#main nav.sidebar {
|
|
675
710
|
font-family: "Consolas", "monospace";
|
676
711
|
display: block;
|
677
712
|
background: #f3f3f3;
|
713
|
+
-moz-border-radius: 5px;
|
714
|
+
/* Firefox */
|
715
|
+
-webkit-border-radius: 5px;
|
716
|
+
/* Safari, Chrome */
|
717
|
+
border-radius: 5px;
|
718
|
+
/* CSS3 */
|
678
719
|
margin: 40px 0 12px 12px;
|
679
720
|
padding: 0;
|
680
|
-
border-radius: 5px;
|
681
721
|
font-size: 8pt;
|
682
722
|
color: #999; }
|
683
723
|
div#main nav.sidebar > * {
|
@@ -727,11 +767,16 @@ div#main .body .summary {
|
|
727
767
|
float: left; }
|
728
768
|
div#main .body .summary a {
|
729
769
|
font-family: "Consolas", "monospace";
|
770
|
+
-moz-border-radius: 5px;
|
771
|
+
/* Firefox */
|
772
|
+
-webkit-border-radius: 5px;
|
773
|
+
/* Safari, Chrome */
|
774
|
+
border-radius: 5px;
|
775
|
+
/* CSS3 */
|
730
776
|
display: block;
|
731
777
|
background: #eff4fa;
|
732
778
|
border: 1px solid #d0e0f0;
|
733
779
|
color: #5490c8;
|
734
|
-
border-radius: 5px;
|
735
780
|
padding: 0.4em 1em;
|
736
781
|
margin: 0.25em; }
|
737
782
|
div#main .body .summary a:hover {
|
@@ -763,11 +808,16 @@ div#main .body h3.source {
|
|
763
808
|
margin-bottom: 1.33em; }
|
764
809
|
div#main .body .signature {
|
765
810
|
font-family: "Consolas", "monospace";
|
811
|
+
-moz-border-radius: 5px;
|
812
|
+
/* Firefox */
|
813
|
+
-webkit-border-radius: 5px;
|
814
|
+
/* Safari, Chrome */
|
815
|
+
border-radius: 5px;
|
816
|
+
/* CSS3 */
|
766
817
|
display: block;
|
767
818
|
background: #eff4fa;
|
768
819
|
border: 1px solid #d0e0f0;
|
769
820
|
color: #5490c8;
|
770
|
-
border-radius: 5px;
|
771
821
|
padding: 0.4em 1em;
|
772
822
|
color: #000;
|
773
823
|
font-size: 12pt;
|
@@ -775,11 +825,16 @@ div#main .body .signature {
|
|
775
825
|
margin-bottom: 1.33em; }
|
776
826
|
div#main .body .signature.constructor {
|
777
827
|
font-family: "Consolas", "monospace";
|
828
|
+
-moz-border-radius: 5px;
|
829
|
+
/* Firefox */
|
830
|
+
-webkit-border-radius: 5px;
|
831
|
+
/* Safari, Chrome */
|
832
|
+
border-radius: 5px;
|
833
|
+
/* CSS3 */
|
778
834
|
display: block;
|
779
835
|
background: #fcded1;
|
780
836
|
border: 1px solid #f9c2ab;
|
781
837
|
color: #5490c8;
|
782
|
-
border-radius: 5px;
|
783
838
|
padding: 0.4em 1em;
|
784
839
|
color: #000; }
|
785
840
|
div#main .body .signature .name {
|
@@ -795,33 +850,53 @@ div#main .body .overload {
|
|
795
850
|
div#main .notification {
|
796
851
|
display: table; }
|
797
852
|
div#main .notification section {
|
853
|
+
-moz-border-radius: 5px;
|
854
|
+
/* Firefox */
|
855
|
+
-webkit-border-radius: 5px;
|
856
|
+
/* Safari, Chrome */
|
857
|
+
border-radius: 5px;
|
858
|
+
/* CSS3 */
|
798
859
|
display: block;
|
799
860
|
background: #f3f3f3;
|
800
861
|
border: 1px solid #dfdfdf;
|
801
862
|
color: #666666;
|
802
|
-
border-radius: 5px;
|
803
863
|
padding: 0.4em 1em;
|
804
864
|
margin-bottom: 0.5em; }
|
805
865
|
div#main .notification section.deprecated {
|
866
|
+
-moz-border-radius: 5px;
|
867
|
+
/* Firefox */
|
868
|
+
-webkit-border-radius: 5px;
|
869
|
+
/* Safari, Chrome */
|
870
|
+
border-radius: 5px;
|
871
|
+
/* CSS3 */
|
806
872
|
display: block;
|
807
873
|
background: #cccccc;
|
808
874
|
border: 1px solid #b8b8b8;
|
809
875
|
color: #666666;
|
810
|
-
border-radius: 5px;
|
811
876
|
padding: 0.4em 1em; }
|
812
877
|
div#main .notification section.todo {
|
878
|
+
-moz-border-radius: 5px;
|
879
|
+
/* Firefox */
|
880
|
+
-webkit-border-radius: 5px;
|
881
|
+
/* Safari, Chrome */
|
882
|
+
border-radius: 5px;
|
883
|
+
/* CSS3 */
|
813
884
|
display: block;
|
814
885
|
background: #fef377;
|
815
886
|
border: 1px solid #feef4e;
|
816
887
|
color: #4e4e07;
|
817
|
-
border-radius: 5px;
|
818
888
|
padding: 0.4em 1em; }
|
819
889
|
div#main .notification section.warn {
|
890
|
+
-moz-border-radius: 5px;
|
891
|
+
/* Firefox */
|
892
|
+
-webkit-border-radius: 5px;
|
893
|
+
/* Safari, Chrome */
|
894
|
+
border-radius: 5px;
|
895
|
+
/* CSS3 */
|
820
896
|
display: block;
|
821
897
|
background: #ff5544;
|
822
898
|
border: 1px solid #ff301b;
|
823
899
|
color: #4e1a07;
|
824
|
-
border-radius: 5px;
|
825
900
|
padding: 0.4em 1em; }
|
826
901
|
div#main .notification section ul {
|
827
902
|
list-style: none;
|