docjs 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +7 -5
- data/bin/docjs +33 -8
- data/bin/docjs.rb +239 -0
- data/docjs.gemspec +2 -2
- data/lib/boot.rb +5 -3
- data/lib/code_object/base.rb +1 -0
- data/lib/code_object/function.rb +21 -37
- data/lib/code_object/object.rb +1 -1
- data/lib/helper/helper.rb +16 -3
- data/lib/helper/linker.rb +5 -2
- data/lib/parser/parser.rb +20 -6
- data/lib/token/container.rb +0 -1
- data/lib/token/handler.rb +46 -6
- data/lib/token/token.rb +3 -2
- data/templates/helpers/template.rb +15 -5
- data/templates/resources/css/application.css +65 -14
- data/templates/resources/js/application.js +33 -11
- data/templates/resources/js/regexpx.js +652 -0
- data/templates/resources/js/shBrushJScript.js +55 -0
- data/templates/resources/js/shCore.js +1596 -0
- data/templates/resources/scss/_header.scss +2 -1
- data/templates/resources/scss/_helpers.scss +6 -6
- data/templates/resources/scss/_highlighter.scss +70 -0
- data/templates/resources/scss/application.scss +8 -8
- data/templates/tokens/tokens.rb +55 -4
- data/templates/views/function/_detail.html.erb +1 -1
- data/templates/views/function/index.html.erb +16 -4
- data/templates/views/layout/application.html.erb +5 -5
- data/templates/views/layout/json.html.erb +3 -3
- data/templates/views/object/index.html.erb +3 -3
- data/templates/views/tokens/_default.html.erb +4 -2
- data/templates/views/tokens/_default_token.html.erb +2 -1
- data/templates/views/tokens/_example.html.erb +1 -1
- data/templates/views/tokens/_overload.html.erb +12 -0
- data/test/interactive.rb +5 -2
- data/test/js-files/core-doc.js +20 -12
- data/test/parser/intelligent_skip_until.rb +1 -1
- data/test/parser/parser.rb +3 -6
- metadata +8 -2
@@ -1,11 +1,11 @@
|
|
1
1
|
$golden_ratio: 1.618;
|
2
2
|
|
3
|
-
@mixin transition($property, $time) {
|
4
|
-
-webkit-transition: $property $time
|
5
|
-
-moz-transition: $property $time
|
6
|
-
-o-transition: $property $time
|
7
|
-
-ms-transition: $property $time
|
8
|
-
transition: $property $time
|
3
|
+
@mixin transition($property, $time, $transition: ease-in-out) {
|
4
|
+
-webkit-transition: $property $time $transition;
|
5
|
+
-moz-transition: $property $time $transition;
|
6
|
+
-o-transition: $property $time $transition;
|
7
|
+
-ms-transition: $property $time $transition;
|
8
|
+
transition: $property $time $transition;
|
9
9
|
}
|
10
10
|
|
11
11
|
/* Kudos to http://www.colorzilla.com/gradient-editor/ */
|
@@ -0,0 +1,70 @@
|
|
1
|
+
@mixin line-height-fix() {
|
2
|
+
font-size: 9pt;
|
3
|
+
line-height: 1.4em;
|
4
|
+
}
|
5
|
+
|
6
|
+
code.source, code.example {
|
7
|
+
@include code-box;
|
8
|
+
@include line-height-fix;
|
9
|
+
padding: 0.5em;
|
10
|
+
margin-bottom: $element-margin;
|
11
|
+
}
|
12
|
+
|
13
|
+
/* js-replaced version */
|
14
|
+
.syntaxhighlighter {
|
15
|
+
@extend code.source;
|
16
|
+
|
17
|
+
/* revert no-js settings */
|
18
|
+
background: #fff;
|
19
|
+
padding: 0;
|
20
|
+
|
21
|
+
table {
|
22
|
+
width: 100%;
|
23
|
+
|
24
|
+
td {
|
25
|
+
border: 1px solid #fff; /* rebuild double-border effect */
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
.gutter {
|
30
|
+
background-color: $codegrey;
|
31
|
+
color: darken($codegrey, 20%);
|
32
|
+
padding: 0.5em;
|
33
|
+
border-right: 1px solid darken($codegrey, 10%);
|
34
|
+
text-align: right;
|
35
|
+
|
36
|
+
.line {
|
37
|
+
@include line-height-fix;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
.code {
|
42
|
+
padding: 0.5em 0;
|
43
|
+
width: 100%;
|
44
|
+
|
45
|
+
.line {
|
46
|
+
padding: 0 0.5em;
|
47
|
+
&:hover { background: #f5f5f5; }
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
&.example {
|
52
|
+
background: #f3f3f3;
|
53
|
+
.line {
|
54
|
+
padding-left: 1em;
|
55
|
+
&:hover { background: #efefef; }
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
/* syntaxhighlighting settings */
|
60
|
+
.spaces {}
|
61
|
+
.keyword { font-weight: bold; }
|
62
|
+
.plain {}
|
63
|
+
.string { color: $orange; }
|
64
|
+
.comments { color: #998; font-style: italic; }
|
65
|
+
.comments a { color: #998; }
|
66
|
+
.variable {}
|
67
|
+
.functions {}
|
68
|
+
.constants { color: $blue; }
|
69
|
+
.script {}
|
70
|
+
}
|
@@ -78,6 +78,7 @@ $element-margin: 1.33em;
|
|
78
78
|
@mixin code-box() {
|
79
79
|
@include double-border(1px, #ffffff, darken($codegrey, 10%));
|
80
80
|
@include terminal;
|
81
|
+
display: block;
|
81
82
|
background: $codegrey;
|
82
83
|
}
|
83
84
|
|
@@ -96,6 +97,7 @@ $element-margin: 1.33em;
|
|
96
97
|
@import 'header';
|
97
98
|
@import 'footer';
|
98
99
|
@import 'tooltip';
|
100
|
+
@import 'highlighter';
|
99
101
|
|
100
102
|
body, select, input, textarea {
|
101
103
|
@include reset-fonts;
|
@@ -248,13 +250,6 @@ div#main .body {
|
|
248
250
|
}
|
249
251
|
}
|
250
252
|
|
251
|
-
code.block {
|
252
|
-
@include code-box;
|
253
|
-
display: block;
|
254
|
-
padding: 0.5em;
|
255
|
-
color: #555;
|
256
|
-
margin-bottom: $element-margin;
|
257
|
-
}
|
258
253
|
|
259
254
|
.section {
|
260
255
|
padding-bottom: $box-spacing;
|
@@ -292,7 +287,7 @@ div#main .body {
|
|
292
287
|
}
|
293
288
|
}
|
294
289
|
|
295
|
-
.source {
|
290
|
+
h3.source {
|
296
291
|
@extend .icon.arrow_down;
|
297
292
|
cursor: pointer;
|
298
293
|
&.collapsed {
|
@@ -327,6 +322,11 @@ div#main .body {
|
|
327
322
|
}
|
328
323
|
}
|
329
324
|
}
|
325
|
+
|
326
|
+
|
327
|
+
.overload {
|
328
|
+
margin-bottom: 3em;
|
329
|
+
}
|
330
330
|
}
|
331
331
|
|
332
332
|
div#main .notification {
|
data/templates/tokens/tokens.rb
CHANGED
@@ -13,10 +13,61 @@ module Token::Handler
|
|
13
13
|
register :warn, :area => :notification
|
14
14
|
|
15
15
|
register :example, :template => 'examples', :handler => :named_multiline
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
|
17
|
+
# Every @overload can contain **text-documentation**, **@param**- and **@return**-tokens
|
18
|
+
#
|
19
|
+
# It may look like:
|
20
|
+
#
|
21
|
+
# @overload
|
22
|
+
# This is the documentation for a overload
|
23
|
+
# It can have multiple lines of docs
|
24
|
+
#
|
25
|
+
# @param [String] foo please notice the optional empty
|
26
|
+
# line above and the linebreak of this param
|
27
|
+
# @return [Array] something special will be returned
|
28
|
+
#
|
29
|
+
# Followed by some more random documentation
|
30
|
+
#
|
31
|
+
# If no return should be possible, the more simple :named_nested_shorthand handler could be used...
|
32
|
+
register :overload, :area => :none do |token_klass, content|
|
33
|
+
|
34
|
+
documentation = []
|
35
|
+
children = []
|
36
|
+
|
37
|
+
# First remove linebreaks with 2-times intendation
|
38
|
+
content.gsub!(/\n((?!\n)\s){2}/, ' ')
|
39
|
+
|
40
|
+
# Then we take every line and analyse it
|
41
|
+
content.split(/\n/).each do |line|
|
42
|
+
|
43
|
+
|
44
|
+
# We utilize Parser's Tokenline-Regexp here
|
45
|
+
matches = Parser::TOKENLINE.match(line)
|
46
|
+
|
47
|
+
if matches.nil?
|
48
|
+
documentation << line
|
49
|
+
|
50
|
+
else
|
51
|
+
name, content = matches.captures
|
52
|
+
|
53
|
+
if name == 'param'
|
54
|
+
children << Token::Handler.apply(:typed_with_name, Token::Token::ParamToken, content)
|
55
|
+
elsif name == 'return'
|
56
|
+
children << Token::Handler.apply(:typed, Token::Token::ReturnToken, content)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
self.add_token token_klass.new :content => documentation.join("\n"), :children => children, :name => self.name
|
20
63
|
end
|
21
64
|
|
65
|
+
# Example:
|
66
|
+
# @event MyCustomEvent
|
67
|
+
# This event will be triggered, if something special happens. The registered handler will be
|
68
|
+
# called with the following parameters:
|
69
|
+
# [Object] obj This object
|
70
|
+
# [String] msg Some message
|
71
|
+
register :event, :area => :body, :handler => :named_nested_shorthand
|
72
|
+
|
22
73
|
end
|
@@ -20,7 +20,7 @@
|
|
20
20
|
<div class="method-list">
|
21
21
|
<h3>Methods</h3>
|
22
22
|
<ul>
|
23
|
-
<% @methods.each do |child| %>
|
23
|
+
<% @methods.sort{|a,b| a.name <=> b.name }.each do |child| %>
|
24
24
|
<li><%= link_to child %></li>
|
25
25
|
<% end %>
|
26
26
|
</ul>
|
@@ -41,12 +41,24 @@
|
|
41
41
|
<%= to_html @function.docs %>
|
42
42
|
|
43
43
|
<!--span class="flag">constructor</span-->
|
44
|
+
|
45
|
+
<%= render_tokens :of => @function, :in => :body %>
|
44
46
|
|
45
|
-
|
46
|
-
|
47
|
+
<%# if it has overloads, we need another template %>
|
48
|
+
<% if @function.tokens[:overload].nil? %>
|
49
|
+
|
50
|
+
<h2 class="signature"><%= signature @function %></h2>
|
51
|
+
<%= render :partial => 'tokens/default', :locals => { :tokens => @function.params } %>
|
52
|
+
<%= render :partial => 'tokens/default', :locals => { :tokens => @function.returns } %>
|
53
|
+
|
54
|
+
<% else %>
|
55
|
+
|
56
|
+
<%= render :partial => 'tokens/overload', :collection => @function.tokens[:overload] %>
|
57
|
+
|
58
|
+
<% end %>
|
47
59
|
|
48
60
|
<h3 class="source">Source</h3>
|
49
|
-
<%= code @function.source %>
|
61
|
+
<%= code @function.source, :firstline => @function.line_start, :class => "source" %>
|
50
62
|
|
51
63
|
</div>
|
52
64
|
|
@@ -58,16 +58,16 @@
|
|
58
58
|
</div>
|
59
59
|
<footer id="footer">
|
60
60
|
<div class="wrapper">
|
61
|
-
Documentation created automagically with <a href="http://www.github.com/b-studios/
|
61
|
+
Documentation created automagically with <a href="http://www.github.com/b-studios/doc.js">Doc.js for ruby</a>.
|
62
62
|
</div>
|
63
63
|
</footer>
|
64
64
|
<%= script "jcore" %>
|
65
65
|
<script>
|
66
|
-
var
|
67
|
-
|
68
|
-
window.jQuery || document.write("<script src='"+
|
66
|
+
var J = J || {};
|
67
|
+
J.root = "<%= to_relative(Configs.output) + '/' %>";
|
68
|
+
window.jQuery || document.write("<script src='"+J.root+"js/jquery.js'>\x3C/script>")
|
69
69
|
</script>
|
70
70
|
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6/jquery.js"></script>
|
71
|
-
<%= script "jquery.treeview", "jquery.cookie", "jquery.tooltip", "application", "apisearch-data" %>
|
71
|
+
<%= script "jquery.treeview", "jquery.cookie", "jquery.tooltip", "regexpx", "shCore", "shBrushJScript", "application", "apisearch-data" %>
|
72
72
|
<body>
|
73
73
|
</html>
|
@@ -1,3 +1,3 @@
|
|
1
|
-
var
|
2
|
-
|
3
|
-
|
1
|
+
var J = J || {};
|
2
|
+
J.data = J.data || {};
|
3
|
+
J.data.<%= @varname %> = <%= @data.to_json %>
|
@@ -13,7 +13,7 @@
|
|
13
13
|
<div class="method-list">
|
14
14
|
<h3>Methods</h3>
|
15
15
|
<ul>
|
16
|
-
<% @methods.each do |child| %>
|
16
|
+
<% @methods.sort{|a,b| a.name <=> b.name }.each do |child| %>
|
17
17
|
<li><%= link_to child %></li>
|
18
18
|
<% end %>
|
19
19
|
</ul>
|
@@ -31,14 +31,14 @@
|
|
31
31
|
|
32
32
|
<div class="body">
|
33
33
|
|
34
|
-
<%=
|
34
|
+
<%=to_html @object.docs %>
|
35
35
|
|
36
36
|
<!-- SUMMARY -->
|
37
37
|
<% unless @methods.nil? or @methods.size == 0 %>
|
38
38
|
<section>
|
39
39
|
<h3 class="icon function">Methods</h3>
|
40
40
|
<ul class="summary collapsed">
|
41
|
-
<% @methods.each do |child| %>
|
41
|
+
<% @methods.sort{|a,b| a.name <=> b.name }.each do |child| %>
|
42
42
|
<li><%= link_to child %></li>
|
43
43
|
<% end %>
|
44
44
|
</ul>
|
@@ -1,4 +1,5 @@
|
|
1
|
-
<%
|
1
|
+
<% unless tokens.nil?
|
2
|
+
|
2
3
|
|
3
4
|
opts = tokens.first.html
|
4
5
|
opts[:class] = (opts[:class] || "") + " subsection"
|
@@ -8,4 +9,5 @@
|
|
8
9
|
<ul>
|
9
10
|
<%= render :partial => 'tokens/default_token', :collection => tokens %>
|
10
11
|
</ul>
|
11
|
-
</section>
|
12
|
+
</section>
|
13
|
+
<% end %>
|
@@ -4,6 +4,7 @@
|
|
4
4
|
<% end %>
|
5
5
|
|
6
6
|
<% unless default_token.children.nil? %>
|
7
|
+
<%=to_html default_token.content %>
|
7
8
|
<ul>
|
8
9
|
<%= render :partial => 'tokens/default_token', :collection => default_token.children %>
|
9
10
|
</ul>
|
@@ -13,7 +14,7 @@
|
|
13
14
|
<% unless default_token.types.nil? %>
|
14
15
|
(<span class="types"><%= default_token.types.map {|t| link_to(t) }.join ', ' %></span>)
|
15
16
|
<% end %>
|
16
|
-
<%=
|
17
|
+
<%=to_html default_token.content %>
|
17
18
|
|
18
19
|
<% end %>
|
19
20
|
</li>
|
@@ -1,2 +1,2 @@
|
|
1
1
|
<h3>Example <%= example.name %></h3>
|
2
|
-
<%=code example.content %>
|
2
|
+
<%=code example.content, :class => "example" %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<section class="overload">
|
2
|
+
<h2 class="signature"><%= signature overload %></h2>
|
3
|
+
<%=to_html overload.content %>
|
4
|
+
<%
|
5
|
+
|
6
|
+
params = overload.children.select {|t| t.token == :param }
|
7
|
+
returns = overload.children.select {|t| t.token == :return }
|
8
|
+
|
9
|
+
%>
|
10
|
+
<%= render :partial => 'tokens/default', :locals => { :tokens => params } unless params.empty? %>
|
11
|
+
<%= render :partial => 'tokens/default', :locals => { :tokens => returns } unless returns.empty? %>
|
12
|
+
</section>
|
data/test/interactive.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
-
|
1
|
+
require 'pathname'
|
2
|
+
require Pathname.new(__FILE__).realpath + '../../lib/boot'
|
2
3
|
|
3
|
-
|
4
|
+
Configs.set :root => Pathname.new(__FILE__).realpath + '../..'
|
5
|
+
|
6
|
+
setup_application :templates => '../templates', :output => '../out'
|
4
7
|
|
5
8
|
def load_core_doc
|
6
9
|
Processor.process_files_to_dom 'test/js-files/core-doc.js'
|
data/test/js-files/core-doc.js
CHANGED
@@ -54,25 +54,30 @@ var Core = Core || (function(){
|
|
54
54
|
var core = {
|
55
55
|
|
56
56
|
/**
|
57
|
-
* register new {Core.extensions}
|
58
|
-
*
|
59
57
|
* @function Core.extend
|
58
|
+
*
|
59
|
+
* register new {Core.extensions}
|
60
|
+
*
|
61
|
+
* @example Testextension
|
62
|
+
* // This is some http://www.link.com
|
63
|
+
* Core.extend('testextension', function() {
|
64
|
+
* return {};
|
65
|
+
* });
|
66
|
+
*
|
67
|
+
* @event CoreExtended
|
68
|
+
* Fires, if a new Extension has been registered.
|
69
|
+
* [Core.extension] ext The newly registered extension
|
60
70
|
*
|
61
71
|
* @param [String] id the id to register the new {Core.extensionss extension} under
|
62
72
|
* @param [Function] constructor a callback function, which acts as
|
63
73
|
* constructor for {Core.extensions}
|
64
74
|
* @param settings
|
75
|
+
* This is the configuration object for {Core.extend}
|
65
76
|
* [String] name the name of the extension
|
66
77
|
* [Number] pos the position to put the extension to (Defaults to 0)
|
67
78
|
* [String] color the background-color of the extension
|
68
79
|
*
|
69
|
-
* @return [Core.logger] the constructed extension
|
70
|
-
*
|
71
|
-
*
|
72
|
-
* @example Testextension
|
73
|
-
* Core.extend('testextension', function() {
|
74
|
-
* return {};
|
75
|
-
* });
|
80
|
+
* @return [Core.logger] the constructed extension
|
76
81
|
*/
|
77
82
|
extend: function(id, constructor) {
|
78
83
|
|
@@ -113,11 +118,14 @@ var Core = Core || (function(){
|
|
113
118
|
*
|
114
119
|
* @function Core.logger.log
|
115
120
|
*
|
116
|
-
* @overload
|
121
|
+
* @overload
|
117
122
|
* @param [String] msg The message to log
|
118
123
|
*
|
119
|
-
* @overload
|
120
|
-
*
|
124
|
+
* @overload
|
125
|
+
* This is just some documentation
|
126
|
+
*
|
127
|
+
* @param [String] level The Loglevel
|
128
|
+
* @param [String] msg The message to log
|
121
129
|
*/
|
122
130
|
log: function(msg) {
|
123
131
|
if(!!window.console) {
|
data/test/parser/parser.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
#<Encoding:UTF-8>
|
2
2
|
|
3
3
|
require_relative '../../lib/parser/parser'
|
4
4
|
|
@@ -245,7 +245,7 @@ describe Parser::Parser, ".parse" do
|
|
245
245
|
|
246
246
|
|
247
247
|
context "parsing multibyte character" do
|
248
|
-
|
248
|
+
|
249
249
|
before do
|
250
250
|
|
251
251
|
@parser = Parser::Parser.new("/**
|
@@ -264,10 +264,7 @@ Foo Bar")
|
|
264
264
|
it "should find the correct source" do
|
265
265
|
subject.source.should == "Foo Bar"
|
266
266
|
end
|
267
|
-
|
268
|
-
=end
|
269
|
-
pending("There are Problems with utf-8 encoded string")
|
270
|
-
|
267
|
+
|
271
268
|
end
|
272
269
|
|
273
270
|
end
|