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
data/README.md
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
Doc.js
|
2
2
|
======
|
3
|
-
|
4
|
-
|
3
|
+
Bad news first: **You still have to write documentation**
|
4
|
+
|
5
|
+
Good news: **It will look awesome!!**
|
5
6
|
|
6
7
|
|
7
8
|
Supported Ruby-Version
|
8
9
|
======================
|
9
|
-
Currently **only > 1.9** is supported. I am working on 1.8.
|
10
|
+
Currently **only ruby > 1.9** is supported. I am working on supporting > 1.8.7, though this is not
|
10
11
|
my target platform.
|
11
12
|
|
12
13
|
|
@@ -77,6 +78,7 @@ You will find the docs in the output-directory you have specified in your
|
|
77
78
|
config-file.
|
78
79
|
|
79
80
|
|
80
|
-
|
81
|
-
|
81
|
+
Legal Notice
|
82
|
+
============
|
82
83
|
docjs is released under MIT-License. See LICENSE.md for more information.
|
84
|
+
The used icons, are part of the legendary famfamfam-silk-iconset. (http://www.famfamfam.com/lab/icons/silk/)
|
data/bin/docjs
CHANGED
@@ -47,7 +47,7 @@ class DocJs < Thor
|
|
47
47
|
{ :type => :string, :aliases => '-n', :default => "MyAppName" },
|
48
48
|
|
49
49
|
:logfile =>
|
50
|
-
{ :type => :string, :aliases => '-lf'
|
50
|
+
{ :type => :string, :aliases => '-lf' },
|
51
51
|
|
52
52
|
:loglevel =>
|
53
53
|
{ :type => :string, :aliases => '-ll', :default => 'info' }
|
@@ -60,6 +60,7 @@ class DocJs < Thor
|
|
60
60
|
setup_application configs
|
61
61
|
|
62
62
|
# load application specific files
|
63
|
+
Logger.debug "Loading application-templates: #{Configs.templates + '/application.rb'}"
|
63
64
|
require Configs.templates + '/application.rb'
|
64
65
|
|
65
66
|
# Config Thor settings
|
@@ -85,16 +86,36 @@ class DocJs < Thor
|
|
85
86
|
|
86
87
|
|
87
88
|
|
88
|
-
desc "tokens", "Lists all supported tokens"
|
89
|
-
|
90
|
-
|
91
|
-
|
89
|
+
desc "tokens TEMPLATE_PATH?", "Lists all supported tokens\nNeeds your TEMPLATE_PATH to include your own custom tokens. If TEMPLATE_PATH is ommitted, only the default-tokens will be shown"
|
90
|
+
set_options :details =>
|
91
|
+
{ :type => :boolean, :default => false }
|
92
|
+
def tokens(template_path = nil)
|
93
|
+
|
94
|
+
unless template_path.nil?
|
95
|
+
require File.absolute_path(template_path) + '/application.rb'
|
96
|
+
else
|
97
|
+
require Configs.root + 'templates/application.rb'
|
98
|
+
end
|
99
|
+
|
100
|
+
say "Supported tokens:\n\n"
|
101
|
+
if options.details?
|
102
|
+
table = [%w(TOKEN AREA TEMPLATE DESCRIPTION)] + Token::Handler.handlers.map{|k,v| [":#{k}",v.area, v.template, v.description] }.sort
|
103
|
+
else
|
104
|
+
table = Token::Handler.handlers.map{|k,v| [":#{k}","# #{v.description}"] }.sort
|
105
|
+
end
|
106
|
+
print_table table, :ident => 2, :colwidth => 20
|
92
107
|
end
|
93
108
|
|
94
109
|
|
95
110
|
|
96
|
-
desc "tasks", "Lists all registered render-tasks"
|
97
|
-
def tasks
|
111
|
+
desc "tasks TEMPLATE_PATH?", "Lists all registered render-tasks\nNeeds your TEMPLATE_PATH to include your own custom tokens. If TEMPLATE_PATH is ommitted, only the default-tokens will be shown"
|
112
|
+
def tasks(template_path = nil)
|
113
|
+
unless template_path.nil?
|
114
|
+
require File.absolute_path(template_path) + '/application.rb'
|
115
|
+
else
|
116
|
+
require Configs.root + 'templates/application.rb'
|
117
|
+
end
|
118
|
+
|
98
119
|
say "Registered render-tasks:"
|
99
120
|
|
100
121
|
task_table = Processor.render_tasks.map{|k,v| [":#{k}","# #{v.description}"] }.sort
|
@@ -104,7 +125,6 @@ class DocJs < Thor
|
|
104
125
|
|
105
126
|
|
106
127
|
|
107
|
-
# @todo implement!
|
108
128
|
desc "scaffold OUTPUT_DIR", "You can use scaffolding to get the templates and some basic ruby-files, that you will need to create your own templates"
|
109
129
|
set_options :logfile =>
|
110
130
|
{ :type => :string, :aliases => '-lf', :default => 'jsdoc.log' },
|
@@ -177,6 +197,11 @@ class DocJs < Thor
|
|
177
197
|
build['templates'] = ask ">"
|
178
198
|
end
|
179
199
|
|
200
|
+
if not build['output']
|
201
|
+
say "\nWhere do you wan't your documentation generated to? Please enter a path", :bold
|
202
|
+
build['output'] = ask ">"
|
203
|
+
end
|
204
|
+
|
180
205
|
if not build['loglevel']
|
181
206
|
say "\nPlease specify the loglevel of your output: (error|warn|info|debug)", :bold
|
182
207
|
|
data/bin/docjs.rb
ADDED
@@ -0,0 +1,239 @@
|
|
1
|
+
#!/usr/bin/ruby1.9
|
2
|
+
# We need pathname to make it work with sym-links
|
3
|
+
require 'pathname'
|
4
|
+
require Pathname.new(__FILE__).realpath + '../../lib/boot'
|
5
|
+
|
6
|
+
# @todo The general flow of information should be documented here
|
7
|
+
#
|
8
|
+
# --String--> [Parser] --Commentstream--> [CodeObjectFactory] --Objectstream--> [Registry]
|
9
|
+
#
|
10
|
+
# Parser
|
11
|
+
# ------
|
12
|
+
# Turns the incoming stream of characters (string) into a stream of
|
13
|
+
# {Parser::Comment comments}. Those comments contain the parsed doclines, which
|
14
|
+
# are simply all lines found in the comment and all tokenlines.
|
15
|
+
|
16
|
+
# configure approot
|
17
|
+
Configs.set :root => Pathname.new(__FILE__).realpath + '../..'
|
18
|
+
|
19
|
+
# Pipeline:
|
20
|
+
# 1. load options from shell and specified YAML-file (if any)
|
21
|
+
# 2. load files
|
22
|
+
# 3. parse files
|
23
|
+
# 4. turn into objects and save to dom
|
24
|
+
# 5. render templates
|
25
|
+
#
|
26
|
+
# @note options declared in a build.yml will override command-line ones
|
27
|
+
# @todo command line option to copy all templates to specified directory like
|
28
|
+
# jsdoc dump_templates ../templates/original
|
29
|
+
class DocJs < Thor
|
30
|
+
|
31
|
+
include Thor::Actions
|
32
|
+
|
33
|
+
desc "CONFIG_FILE", "Starts documentation process"
|
34
|
+
set_options :files =>
|
35
|
+
{ :type => :array, :aliases => '-f', :default => [], :required => true },
|
36
|
+
|
37
|
+
:docs =>
|
38
|
+
{ :type => :array, :aliases => '-d', :default => ['README.md'], :required => true },
|
39
|
+
|
40
|
+
:output =>
|
41
|
+
{ :type => :string, :aliases => '-o', :default => 'out' },
|
42
|
+
|
43
|
+
:templates =>
|
44
|
+
{ :type => :string, :aliases => '-t', :default => Configs.root + 'templates' },
|
45
|
+
|
46
|
+
:appname =>
|
47
|
+
{ :type => :string, :aliases => '-n', :default => "MyAppName" },
|
48
|
+
|
49
|
+
:logfile =>
|
50
|
+
{ :type => :string, :aliases => '-lf' },
|
51
|
+
|
52
|
+
:loglevel =>
|
53
|
+
{ :type => :string, :aliases => '-ll', :default => 'info' }
|
54
|
+
|
55
|
+
def docjs(config_file = nil)
|
56
|
+
# @see Thor#merge_options
|
57
|
+
configs = config_file ? merge_options(options, config_file) : options
|
58
|
+
|
59
|
+
begin
|
60
|
+
setup_application configs
|
61
|
+
|
62
|
+
# load application specific files
|
63
|
+
Logger.debug "Loading application-templates: #{Configs.templates + '/application.rb'}"
|
64
|
+
require Configs.templates + '/application.rb'
|
65
|
+
|
66
|
+
# Config Thor settings
|
67
|
+
DocJs.source_root(Configs.templates)
|
68
|
+
self.destination_root = Configs.output
|
69
|
+
|
70
|
+
Processor.prepare_documents
|
71
|
+
# let's check our Documents tree
|
72
|
+
Dom.docs.print_tree
|
73
|
+
|
74
|
+
# the configs are now available through our Configs-module
|
75
|
+
Processor.process_and_render
|
76
|
+
|
77
|
+
Logger.info "Copying template resources to output"
|
78
|
+
directory 'resources/img', './img' # copy resources
|
79
|
+
directory 'resources/css', './css'
|
80
|
+
directory 'resources/js', './js'
|
81
|
+
|
82
|
+
rescue Exception => error
|
83
|
+
Logger.error error.message + "\n" + error.backtrace.map{|l| " #{l}" }.join("\n")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
desc "tokens TEMPLATE_PATH?", "Lists all supported tokens\nNeeds your TEMPLATE_PATH to include your own custom tokens. If TEMPLATE_PATH is ommitted, only the default-tokens will be shown"
|
90
|
+
set_options :details =>
|
91
|
+
{ :type => :boolean, :default => false }
|
92
|
+
def tokens(template_path = nil)
|
93
|
+
|
94
|
+
unless template_path.nil?
|
95
|
+
require File.absolute_path(template_path) + '/application.rb'
|
96
|
+
else
|
97
|
+
require Configs.root + 'templates/application.rb'
|
98
|
+
end
|
99
|
+
|
100
|
+
say "Supported tokens:\n\n"
|
101
|
+
if options.details?
|
102
|
+
table = [%w(TOKEN AREA TEMPLATE DESCRIPTION)] + Token::Handler.handlers.map{|k,v| [":#{k}",v.area, v.template, v.description] }.sort
|
103
|
+
else
|
104
|
+
table = Token::Handler.handlers.map{|k,v| [":#{k}","# #{v.description}"] }.sort
|
105
|
+
end
|
106
|
+
print_table table, :ident => 2, :colwidth => 20
|
107
|
+
end
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
desc "tasks TEMPLATE_PATH?", "Lists all registered render-tasks\nNeeds your TEMPLATE_PATH to include your own custom tokens. If TEMPLATE_PATH is ommitted, only the default-tokens will be shown"
|
112
|
+
def tasks(template_path = nil)
|
113
|
+
unless template_path.nil?
|
114
|
+
require File.absolute_path(template_path) + '/application.rb'
|
115
|
+
else
|
116
|
+
require Configs.root + 'templates/application.rb'
|
117
|
+
end
|
118
|
+
|
119
|
+
say "Registered render-tasks:"
|
120
|
+
|
121
|
+
task_table = Processor.render_tasks.map{|k,v| [":#{k}","# #{v.description}"] }.sort
|
122
|
+
|
123
|
+
print_table task_table, :ident => 2, :colwidth => 20
|
124
|
+
end
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
desc "scaffold OUTPUT_DIR", "You can use scaffolding to get the templates and some basic ruby-files, that you will need to create your own templates"
|
129
|
+
set_options :logfile =>
|
130
|
+
{ :type => :string, :aliases => '-lf', :default => 'jsdoc.log' },
|
131
|
+
|
132
|
+
:loglevel =>
|
133
|
+
{ :type => :string, :aliases => '-ll', :default => 'info' }
|
134
|
+
def scaffold(output_dir)
|
135
|
+
|
136
|
+
setup_application options.merge({
|
137
|
+
:output => output_dir,
|
138
|
+
:templates => output_dir
|
139
|
+
})
|
140
|
+
|
141
|
+
# Setup Thor paths
|
142
|
+
DocJs.source_root(Configs.root)
|
143
|
+
self.destination_root = Configs.output
|
144
|
+
|
145
|
+
yes_no = "(y|n)"
|
146
|
+
|
147
|
+
Logger.info "We need some information from you, to customize the scaffolding process to your needs."
|
148
|
+
if yes? "Do you wan't to generate a build.yml? #{yes_no}"
|
149
|
+
configure(Configs.wdir + '/build.yml', {
|
150
|
+
'templates' => output_dir,
|
151
|
+
'output' => 'docs',
|
152
|
+
'logfile' => 'logfile.log',
|
153
|
+
'loglevel' => 'info'
|
154
|
+
})
|
155
|
+
end
|
156
|
+
|
157
|
+
# Work with the answers
|
158
|
+
Logger.info "Copying the template files to #{Configs.templates}"
|
159
|
+
directory 'templates', Configs.templates # copy templates and resources
|
160
|
+
|
161
|
+
Logger.info "Copying the included *.rb files to #{Configs.includes}"
|
162
|
+
end
|
163
|
+
|
164
|
+
desc "configure [NEW_CONFIGFILE]", "Helps you creating your build.yml to start off with doc.js"
|
165
|
+
def configure(output_file = "build.yml", preconfigured = {})
|
166
|
+
|
167
|
+
build = {
|
168
|
+
'files' => [],
|
169
|
+
'docs' => []
|
170
|
+
}
|
171
|
+
|
172
|
+
build.merge! preconfigured
|
173
|
+
|
174
|
+
say "\nPlease enter the name of your App", :bold
|
175
|
+
build['appname'] = ask ">"
|
176
|
+
|
177
|
+
say "\nPlease enter the javascript-files you want to integrate into your documentation", :bold
|
178
|
+
say "(You will be asked multiple times, unless your answer is empty) You also can specify a file-matching pattern, foo/**/*.js"
|
179
|
+
|
180
|
+
while true do
|
181
|
+
answer = ask ">"
|
182
|
+
break if answer == ""
|
183
|
+
build['files'] << answer
|
184
|
+
end
|
185
|
+
|
186
|
+
say "\nPlease enter the markdown-documentation-files you want to integrate into your documentation", :bold
|
187
|
+
say "(You will be asked multiple times, unless your answer is empty) You also can specify a file-matching pattern, like docs/*.md"
|
188
|
+
|
189
|
+
while true do
|
190
|
+
answer = ask ">"
|
191
|
+
break if answer == ""
|
192
|
+
build['docs'] << answer
|
193
|
+
end
|
194
|
+
|
195
|
+
if not build['templates'] and yes? "Are you using your own templates?"
|
196
|
+
say "\nPlease enter the path to your templates", :bold
|
197
|
+
build['templates'] = ask ">"
|
198
|
+
end
|
199
|
+
|
200
|
+
if not build['output']
|
201
|
+
say "\nWhere do you wan't your documentation generated to? Please enter a path", :bold
|
202
|
+
build['output'] = ask ">"
|
203
|
+
end
|
204
|
+
|
205
|
+
if not build['loglevel']
|
206
|
+
say "\nPlease specify the loglevel of your output: (error|warn|info|debug)", :bold
|
207
|
+
|
208
|
+
while true do
|
209
|
+
answer = ask ">"
|
210
|
+
if %w(error warn info debug).include? answer
|
211
|
+
build['loglevel'] = answer
|
212
|
+
break
|
213
|
+
end
|
214
|
+
say "\nThe answer you've given is not one of (error|warn|info|debug). Please try again", :bold
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
if not build['logfile'] and yes? "Do you wan't to save your logs to a file?"
|
219
|
+
say "\nPlease enter the path to your logfile", :bold
|
220
|
+
build['logfile'] = ask ">"
|
221
|
+
end
|
222
|
+
|
223
|
+
# answers[:scss_build] = yes? "Do you wan't to integrate SCSS into your build-process? #{yes_no}"
|
224
|
+
|
225
|
+
# maybe ask some more information to generate build.yml
|
226
|
+
create_file output_file, build.to_yaml
|
227
|
+
end
|
228
|
+
|
229
|
+
|
230
|
+
end
|
231
|
+
|
232
|
+
if ARGV.size == 0
|
233
|
+
ARGV.unshift 'help'
|
234
|
+
|
235
|
+
elsif not (ARGV.size > 0 and DocJs.method_defined?(ARGV.first))
|
236
|
+
ARGV.unshift 'docjs'
|
237
|
+
end
|
238
|
+
|
239
|
+
DocJs.start(ARGV)
|
data/docjs.gemspec
CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
|
|
4
4
|
|
5
5
|
|
6
6
|
s.name = 'docjs'
|
7
|
-
s.version = '0.1.
|
8
|
-
s.date = '2011-06-
|
7
|
+
s.version = '0.1.3'
|
8
|
+
s.date = '2011-06-16'
|
9
9
|
s.summary = "Javascript Documentation Generator"
|
10
10
|
s.description = "Create beautyful Javascript documentations with this ruby-gem. It's pretty easy to customize and add your own tokens/DSL."
|
11
11
|
s.homepage = "https://github.com/b-studios/doc.js"
|
data/lib/boot.rb
CHANGED
@@ -6,6 +6,7 @@ require_relative 'thor'
|
|
6
6
|
require_relative 'logger'
|
7
7
|
require_relative 'configs'
|
8
8
|
require_relative 'parser/parser'
|
9
|
+
require_relative 'token/handler'
|
9
10
|
require_relative 'code_object/function'
|
10
11
|
require_relative 'dom/dom'
|
11
12
|
require_relative 'processor'
|
@@ -13,8 +14,8 @@ require_relative 'processor'
|
|
13
14
|
def setup_application(options = {})
|
14
15
|
|
15
16
|
# initialize Logger
|
16
|
-
Logger.setup :logfile => File.expand_path(options[:logfile], Dir.pwd),
|
17
|
-
:level => (options[:loglevel]).to_sym
|
17
|
+
Logger.setup :logfile => (options[:logfile] && File.expand_path(options[:logfile], Dir.pwd)),
|
18
|
+
:level => (options[:loglevel] || :info).to_sym
|
18
19
|
|
19
20
|
Logger.info "Setting up Application"
|
20
21
|
|
@@ -31,4 +32,5 @@ def setup_application(options = {})
|
|
31
32
|
Logger.debug "App Root: #{Configs.root}"
|
32
33
|
Logger.debug "Working Dir: #{Configs.wdir}"
|
33
34
|
Logger.debug "Output Dir: #{Configs.output}"
|
34
|
-
|
35
|
+
Logger.debug "Template Dir: #{Configs.templates}"
|
36
|
+
end
|
data/lib/code_object/base.rb
CHANGED
data/lib/code_object/function.rb
CHANGED
@@ -15,64 +15,48 @@ module CodeObject
|
|
15
15
|
# @todo i need a @prototype token in object
|
16
16
|
def prototype
|
17
17
|
children[:prototype]
|
18
|
-
end
|
18
|
+
end
|
19
19
|
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
23
23
|
|
24
24
|
CodeObject::Type.register :function, CodeObject::Function
|
25
|
-
Token::Handler.register :function, :handler => :noop, :area => :none
|
26
25
|
|
27
|
-
# @todo rewrite as default-handler, because this looks a little distracting
|
28
26
|
module Token::Handler
|
29
27
|
|
30
|
-
|
31
|
-
|
28
|
+
register :function,
|
29
|
+
:handler => :noop,
|
30
|
+
:area => :none,
|
31
|
+
:description => "Type-Token to categorize all kind of JavaScript-Functions"
|
32
|
+
|
33
|
+
|
34
|
+
# We want to support either named-typed-tokens like
|
35
|
+
# @param [Foo] barname some description
|
36
|
+
#
|
37
|
+
# or multiline tokens like:
|
38
|
+
# @param configs
|
39
|
+
# Some configuration Object with following properties:
|
40
|
+
# [String] foo some string
|
41
|
+
# [Bar] bar and another one
|
42
|
+
#
|
43
|
+
# @note this can also be utilized for JavaScript-Event-Triggers or Callbacks with Parameters
|
44
|
+
register :param, :area => :none, :description => "Token for Function-Parameters like '@param [String] name your name'" do |tokenklass, content|
|
32
45
|
|
33
|
-
# We want to support either named-typed-tokens like
|
34
|
-
# @param [Foo] barname some description
|
35
|
-
#
|
36
|
-
# or multiline tokens like:
|
37
|
-
# @param configs
|
38
|
-
# [String] foo some string
|
39
|
-
# [Bar] bar and another one
|
40
|
-
#
|
41
|
-
#
|
42
|
-
# if out content matches something with `[` at the beginning, it seems to be
|
43
|
-
# a normal named-typed-token
|
44
|
-
# it's a little tricky because we still want to allow multiline descriptions of each param
|
45
|
-
def parse_token(content)
|
46
|
-
typestring, name, content = TOKEN_W_TYPE_NAME.match(content).captures
|
47
|
-
types = typestring.split /,\s*/
|
48
|
-
Token::Token::ParamToken.new(:name => name, :types => types, :content => content)
|
49
|
-
end
|
50
|
-
|
51
46
|
# it's @param [String] name some content
|
52
47
|
if content.lines.first.match TOKEN_W_TYPE_NAME
|
53
|
-
self.add_token
|
48
|
+
self.add_token Token::Handler.apply(:typed_with_name, Token::Token::ParamToken, content)
|
54
49
|
|
55
50
|
# it maybe a multiline
|
56
51
|
else
|
57
|
-
|
58
|
-
name = lines.shift.strip
|
59
|
-
types = ['PropertyObject']
|
60
|
-
|
61
|
-
# now split line at opening bracket, not at line-break to enable multiline properties
|
62
|
-
children = lines.join("\n").strip.gsub(/\s+\[/, "<--SPLIT_HERE-->[").split("<--SPLIT_HERE-->")
|
63
|
-
|
64
|
-
children.map! do |child|
|
65
|
-
parse_token(child)
|
66
|
-
end
|
67
|
-
|
68
|
-
self.add_token tokenklass.new(:name => name, :types => types, :children => children)
|
52
|
+
self.add_token Token::Handler.apply(:named_nested_shorthand, Token::Token::ParamToken, content)
|
69
53
|
end
|
70
54
|
end
|
71
55
|
|
72
56
|
|
73
57
|
end
|
74
58
|
|
75
|
-
Token::Handler.register :return, :handler => :typed
|
59
|
+
Token::Handler.register :return, :handler => :typed, :area => :none, :description => "Returnvalue of a Function"
|
76
60
|
Token::Handler.register :throws, :handler => :typed
|
77
61
|
|
78
62
|
# MethodAlias
|