jsdoc-rails 0.0.1
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.
- data/.gitignore +8 -0
- data/Gemfile +5 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +94 -0
- data/Rakefile +29 -0
- data/app/controllers/jsdoc/documentation_controller.rb +48 -0
- data/app/helpers/jsdoc/documentation_helper.rb +50 -0
- data/app/models/jsdoc/borrowed_function.rb +7 -0
- data/app/models/jsdoc/borrowed_property.rb +7 -0
- data/app/models/jsdoc/example.rb +5 -0
- data/app/models/jsdoc/function.rb +21 -0
- data/app/models/jsdoc/param.rb +7 -0
- data/app/models/jsdoc/property.rb +13 -0
- data/app/models/jsdoc/require.rb +5 -0
- data/app/models/jsdoc/return.rb +5 -0
- data/app/models/jsdoc/see.rb +4 -0
- data/app/models/jsdoc/symbol.rb +58 -0
- data/app/models/jsdoc/throw.rb +4 -0
- data/app/views/jsdoc/documentation/_inheritance_tree_branch.html.erb +12 -0
- data/app/views/jsdoc/documentation/_members_table.html.erb +38 -0
- data/app/views/jsdoc/documentation/_param_list.html.erb +11 -0
- data/app/views/jsdoc/documentation/index.html.erb +7 -0
- data/app/views/jsdoc/documentation/source.html.erb +11 -0
- data/app/views/jsdoc/documentation/symbol.html.erb +111 -0
- data/app/views/layouts/jsdoc/_aside_symbol_list.html.erb +12 -0
- data/app/views/layouts/jsdoc/_header.html.erb +1 -0
- data/app/views/layouts/jsdoc/_symbol_tree_branch.html.erb +3 -0
- data/app/views/layouts/jsdoc/documentation.html.erb +44 -0
- data/app/views/layouts/jsdoc/documentation_wrapper.html.erb +2 -0
- data/config/routes.rb +8 -0
- data/jsdoc-rails.gemspec +25 -0
- data/jsdoc-toolkit/README.txt +183 -0
- data/jsdoc-toolkit/app/frame.js +33 -0
- data/jsdoc-toolkit/app/frame/Chain.js +102 -0
- data/jsdoc-toolkit/app/frame/Dumper.js +144 -0
- data/jsdoc-toolkit/app/frame/Hash.js +84 -0
- data/jsdoc-toolkit/app/frame/Link.js +173 -0
- data/jsdoc-toolkit/app/frame/Namespace.js +10 -0
- data/jsdoc-toolkit/app/frame/Opt.js +134 -0
- data/jsdoc-toolkit/app/frame/Reflection.js +26 -0
- data/jsdoc-toolkit/app/frame/String.js +93 -0
- data/jsdoc-toolkit/app/frame/Testrun.js +129 -0
- data/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
- data/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
- data/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
- data/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
- data/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
- data/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
- data/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
- data/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +294 -0
- data/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +140 -0
- data/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
- data/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
- data/jsdoc-toolkit/app/lib/JSDOC/Parser.js +146 -0
- data/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
- data/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +646 -0
- data/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +243 -0
- data/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
- data/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
- data/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
- data/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
- data/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
- data/jsdoc-toolkit/app/lib/JSDOC/Walker.js +557 -0
- data/jsdoc-toolkit/app/main.js +111 -0
- data/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
- data/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
- data/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
- data/jsdoc-toolkit/app/plugins/publishSrcHilite.js +62 -0
- data/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
- data/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
- data/jsdoc-toolkit/app/plugins/tagSynonyms.js +45 -0
- data/jsdoc-toolkit/app/run.js +348 -0
- data/jsdoc-toolkit/app/t/TestDoc.js +144 -0
- data/jsdoc-toolkit/app/t/runner.js +13 -0
- data/jsdoc-toolkit/app/test.js +342 -0
- data/jsdoc-toolkit/app/test/addon.js +24 -0
- data/jsdoc-toolkit/app/test/anon_inner.js +14 -0
- data/jsdoc-toolkit/app/test/augments.js +31 -0
- data/jsdoc-toolkit/app/test/augments2.js +26 -0
- data/jsdoc-toolkit/app/test/borrows.js +46 -0
- data/jsdoc-toolkit/app/test/borrows2.js +23 -0
- data/jsdoc-toolkit/app/test/config.js +22 -0
- data/jsdoc-toolkit/app/test/constructs.js +18 -0
- data/jsdoc-toolkit/app/test/encoding.js +10 -0
- data/jsdoc-toolkit/app/test/encoding_other.js +12 -0
- data/jsdoc-toolkit/app/test/event.js +54 -0
- data/jsdoc-toolkit/app/test/exports.js +14 -0
- data/jsdoc-toolkit/app/test/functions_anon.js +39 -0
- data/jsdoc-toolkit/app/test/functions_nested.js +33 -0
- data/jsdoc-toolkit/app/test/global.js +13 -0
- data/jsdoc-toolkit/app/test/globals.js +25 -0
- data/jsdoc-toolkit/app/test/ignore.js +10 -0
- data/jsdoc-toolkit/app/test/inner.js +16 -0
- data/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
- data/jsdoc-toolkit/app/test/lend.js +33 -0
- data/jsdoc-toolkit/app/test/memberof.js +19 -0
- data/jsdoc-toolkit/app/test/memberof2.js +38 -0
- data/jsdoc-toolkit/app/test/memberof3.js +33 -0
- data/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
- data/jsdoc-toolkit/app/test/module.js +17 -0
- data/jsdoc-toolkit/app/test/multi_methods.js +25 -0
- data/jsdoc-toolkit/app/test/name.js +19 -0
- data/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
- data/jsdoc-toolkit/app/test/nocode.js +13 -0
- data/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
- data/jsdoc-toolkit/app/test/overview.js +20 -0
- data/jsdoc-toolkit/app/test/param_inline.js +37 -0
- data/jsdoc-toolkit/app/test/params_optional.js +8 -0
- data/jsdoc-toolkit/app/test/prototype.js +17 -0
- data/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
- data/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
- data/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
- data/jsdoc-toolkit/app/test/public.js +10 -0
- data/jsdoc-toolkit/app/test/scripts/code.js +5 -0
- data/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
- data/jsdoc-toolkit/app/test/shared.js +42 -0
- data/jsdoc-toolkit/app/test/shared2.js +2 -0
- data/jsdoc-toolkit/app/test/shortcuts.js +22 -0
- data/jsdoc-toolkit/app/test/static_this.js +13 -0
- data/jsdoc-toolkit/app/test/synonyms.js +31 -0
- data/jsdoc-toolkit/app/test/tosource.js +23 -0
- data/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
- data/jsdoc-toolkit/changes.txt +124 -0
- data/jsdoc-toolkit/conf/sample.conf +31 -0
- data/jsdoc-toolkit/java/build.xml +36 -0
- data/jsdoc-toolkit/java/build_1.4.xml +36 -0
- data/jsdoc-toolkit/java/classes/js.jar +0 -0
- data/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
- data/jsdoc-toolkit/java/src/JsRun.java +21 -0
- data/jsdoc-toolkit/jsdebug.jar +0 -0
- data/jsdoc-toolkit/jsrun.jar +0 -0
- data/jsdoc-toolkit/jsrun.sh +52 -0
- data/jsdoc-toolkit/templates/jsdoc-rails/publish.js +202 -0
- data/jsdoc-toolkit/templates/jsdoc-rails/seeds.tmpl +449 -0
- data/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
- data/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
- data/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
- data/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
- data/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
- data/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
- data/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
- data/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
- data/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
- data/lib/generators/jsdoc/jsdoc_generator.rb +71 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_borrowed_functions_table.rb +19 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_borrowed_properties_table.rb +19 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_examples_table.rb +18 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_functions_table.rb +33 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_params_table.rb +24 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_properties_table.rb +37 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_requires_table.rb +16 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_returns_table.rb +18 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_sees_table.rb +18 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_symbols_table.rb +31 -0
- data/lib/generators/jsdoc/templates/migrations/jsdoc_create_throws_table.rb +18 -0
- data/lib/jsdoc.rb +3 -0
- data/lib/jsdoc/engine.rb +30 -0
- data/lib/jsdoc/railties/tasks.rake +89 -0
- data/lib/jsdoc/version.rb +3 -0
- data/public/images/jsdoc/icons/class.gif +0 -0
- data/public/images/jsdoc/icons/cmp.gif +0 -0
- data/public/images/jsdoc/icons/docs.gif +0 -0
- data/public/images/jsdoc/icons/elbow-end.gif +0 -0
- data/public/images/jsdoc/icons/elbow-minus.gif +0 -0
- data/public/images/jsdoc/icons/elbow-plus.gif +0 -0
- data/public/images/jsdoc/icons/elbow.gif +0 -0
- data/public/images/jsdoc/icons/event.gif +0 -0
- data/public/images/jsdoc/icons/inherited.gif +0 -0
- data/public/images/jsdoc/icons/method.gif +0 -0
- data/public/images/jsdoc/icons/pkg.gif +0 -0
- data/public/images/jsdoc/icons/prop.gif +0 -0
- data/public/images/jsdoc/icons/static.gif +0 -0
- data/public/javascripts/jsdoc/jsdoc.js +52 -0
- data/public/stylesheets/jsdoc/documentation.css +483 -0
- data/test/dummy/.gitignore +4 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +45 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +22 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +26 -0
- data/test/dummy/config/environments/production.rb +49 -0
- data/test/dummy/config/environments/test.rb +35 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +10 -0
- data/test/dummy/config/initializers/jsdoc.rb +5 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/db/.gitkeep +0 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +26 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/public/javascripts/application.js +2 -0
- data/test/dummy/public/javascripts/controls.js +965 -0
- data/test/dummy/public/javascripts/dragdrop.js +974 -0
- data/test/dummy/public/javascripts/effects.js +1123 -0
- data/test/dummy/public/javascripts/prototype.js +6001 -0
- data/test/dummy/public/javascripts/rails.js +175 -0
- data/test/dummy/public/stylesheets/.gitkeep +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/integration/navigation_test.rb +7 -0
- data/test/jsdoc_test.rb +7 -0
- data/test/support/integration_case.rb +5 -0
- data/test/test_helper.rb +22 -0
- metadata +297 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright 2011 Ryan Williams
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
= JSDoc for Rails 3
|
|
2
|
+
|
|
3
|
+
This plugin allows you to load your Javascript documentation (using
|
|
4
|
+
jsdoc-toolkit) into your Rails 3 application's database. This means you can
|
|
5
|
+
easily create dynamic and searchable documentation.
|
|
6
|
+
|
|
7
|
+
== Installation
|
|
8
|
+
|
|
9
|
+
Edit your Gemfile and add this line
|
|
10
|
+
|
|
11
|
+
gem 'jsdoc-rails', :git => 'git://github.com/RyanWilliams/jsdoc-rails.git', :require => 'jsdoc'
|
|
12
|
+
|
|
13
|
+
Then run
|
|
14
|
+
|
|
15
|
+
bundle install
|
|
16
|
+
|
|
17
|
+
Next you need to copy the static assets (images, javascript and stylesheet) and
|
|
18
|
+
also generate the migrations to create the JSDoc tables. They are all prefixed
|
|
19
|
+
with 'jsdoc_' so shouldn't conflict with anything you already have.
|
|
20
|
+
|
|
21
|
+
rails g jsdoc
|
|
22
|
+
|
|
23
|
+
Migrate your database
|
|
24
|
+
|
|
25
|
+
rake db:migrate
|
|
26
|
+
|
|
27
|
+
== Loading the data
|
|
28
|
+
|
|
29
|
+
The data is generated using jsdoc-toolkit 2.4.0. This is included and used
|
|
30
|
+
automatically. This utility does require java to be in your system path to
|
|
31
|
+
function properly.
|
|
32
|
+
|
|
33
|
+
To import the documentation directly into your database simply run:
|
|
34
|
+
|
|
35
|
+
rake jsdoc:import SRC=/path/to/your/javascript/code
|
|
36
|
+
|
|
37
|
+
If everything went to plan you can fire up the rails console and see a class
|
|
38
|
+
|
|
39
|
+
Jsdoc::Symbol.where(:symbol_type => 'class').first
|
|
40
|
+
|
|
41
|
+
If you wish to generate the data on one machine for use on another you can
|
|
42
|
+
split this into two operations.
|
|
43
|
+
|
|
44
|
+
First write the data out:
|
|
45
|
+
|
|
46
|
+
rake jsdoc:output SRC=/path/to/your/javascript/code OUTPUT=data/mydocs.rb
|
|
47
|
+
|
|
48
|
+
Now copy the file to the machine you want to load the data onto and import it with:
|
|
49
|
+
|
|
50
|
+
rake jsdoc:load SRC=data/mydocs.rb
|
|
51
|
+
|
|
52
|
+
== Configuration
|
|
53
|
+
|
|
54
|
+
There are 2 configuration options you can set. You specify them in an initializer.
|
|
55
|
+
i.e. A file named config/initializers/jsdoc.rb
|
|
56
|
+
|
|
57
|
+
The first option is to specify the URL path the documentation will live at
|
|
58
|
+
|
|
59
|
+
Jsdoc::Engine.mount_point = '/documentation'
|
|
60
|
+
|
|
61
|
+
And the second option is the file-system path where your javascript source code
|
|
62
|
+
is. This is relative to the Rails 'public' folder or an absolute path. This is
|
|
63
|
+
only used to rendering the source code in the documentation.
|
|
64
|
+
|
|
65
|
+
Jsdoc::Engine.source_path = 'jsdoc/source'
|
|
66
|
+
|
|
67
|
+
== Creating views
|
|
68
|
+
|
|
69
|
+
=== Welcome Page
|
|
70
|
+
|
|
71
|
+
At the very least you'll want to customise the welcome page. To do this you
|
|
72
|
+
just need to create a view in your project named
|
|
73
|
+
app/views/jsdoc/documentation/index.html.erb
|
|
74
|
+
|
|
75
|
+
=== Header
|
|
76
|
+
|
|
77
|
+
The header lives in a partial at app/views/layouts/jsdoc/_header.html.erb.
|
|
78
|
+
Replace it with anything you like.
|
|
79
|
+
|
|
80
|
+
=== Adding Stylesheets
|
|
81
|
+
|
|
82
|
+
The easiest way to add a stylesheet is to create a layout at
|
|
83
|
+
app/views/layouts/jsdoc/documentation_wrapper.html.erb and fill it with:
|
|
84
|
+
|
|
85
|
+
<% content_for(:head) do %>
|
|
86
|
+
<%= stylesheet_link_tag 'my_styles.css' %>
|
|
87
|
+
<% end %>
|
|
88
|
+
<%= render :file => 'layouts/jsdoc/documentation' %>
|
|
89
|
+
|
|
90
|
+
=== Everything else
|
|
91
|
+
|
|
92
|
+
If you wish to customise the whole layout then your best option is to peek at
|
|
93
|
+
the views in the plugin and override anything you need to. They all live in
|
|
94
|
+
app/views/jsdoc/ and app/views/layouts/jsdoc/
|
data/Rakefile
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
begin
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
rescue LoadError
|
|
6
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
require 'rake'
|
|
10
|
+
require 'rake/rdoctask'
|
|
11
|
+
|
|
12
|
+
require 'rake/testtask'
|
|
13
|
+
|
|
14
|
+
Rake::TestTask.new(:test) do |t|
|
|
15
|
+
t.libs << 'lib'
|
|
16
|
+
t.libs << 'test'
|
|
17
|
+
t.pattern = 'test/**/*_test.rb'
|
|
18
|
+
t.verbose = false
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
task :default => :test
|
|
22
|
+
|
|
23
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
24
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
25
|
+
rdoc.title = 'Jsdoc'
|
|
26
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
27
|
+
rdoc.rdoc_files.include('README.rdoc')
|
|
28
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
29
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Jsdoc
|
|
2
|
+
class DocumentationController < ApplicationController
|
|
3
|
+
layout 'jsdoc/documentation_wrapper'
|
|
4
|
+
|
|
5
|
+
before_filter :get_root_symbols, :except => [:raw_source]
|
|
6
|
+
|
|
7
|
+
def index
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def symbol
|
|
11
|
+
@symbol = Jsdoc::Symbol.where(:alias => params[:symbol_alias]).first
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def source
|
|
15
|
+
@filename = params[:filename]
|
|
16
|
+
@source_code = get_source_code(@filename)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def raw_source
|
|
20
|
+
@filename = params[:filename]
|
|
21
|
+
render :text => get_source_code(@filename), :content_type => 'text/plain'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def get_source_code(filename)
|
|
27
|
+
if Jsdoc::Engine.source_path[0..0] == '/'
|
|
28
|
+
source_path = Jsdoc::Engine.source_path
|
|
29
|
+
else
|
|
30
|
+
source_root = File.expand_path(File.join(Rails.root, 'public', Jsdoc::Engine.source_path))
|
|
31
|
+
end
|
|
32
|
+
file_path = File.expand_path(File.join(source_root, filename))
|
|
33
|
+
|
|
34
|
+
# Protect against kiddies trying to access other parts of the filesystem
|
|
35
|
+
raise "Invalid path" unless file_path.start_with?(source_root)
|
|
36
|
+
|
|
37
|
+
return File.open(file_path).read
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def get_root_symbols
|
|
41
|
+
@root_symbols = Jsdoc::Symbol.where(:member_of => nil)
|
|
42
|
+
|
|
43
|
+
if Jsdoc::Engine.no_global
|
|
44
|
+
@root_symbols = @root_symbols.where('name != ?', '_global_')
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module Jsdoc::DocumentationHelper
|
|
2
|
+
def symbols
|
|
3
|
+
return Jsdoc::Symbol.order(:alias)
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def namespaces
|
|
7
|
+
return Jsdoc::Symbol.namespaces
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def anchorName(member)
|
|
11
|
+
anchor = ''
|
|
12
|
+
|
|
13
|
+
anchor += 'static_' if member.is_static
|
|
14
|
+
anchor += 'method_' if member.is_a?(Jsdoc::Function) and member.symbol.present?
|
|
15
|
+
anchor += 'property_' if member.is_a?(Jsdoc::Property)
|
|
16
|
+
anchor += member.name
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def full_class_list
|
|
20
|
+
output = '<ul>'
|
|
21
|
+
Jsdoc::Symbol.where(:member_of => nil).each do |child|
|
|
22
|
+
output += '<li>' + link_to(list_namespace(child), jsdoc_symbol_path(child.alias)) + '</li>'
|
|
23
|
+
end
|
|
24
|
+
output += '</ul>'
|
|
25
|
+
return output.html_safe
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def list_namespace(namespace)
|
|
29
|
+
output = namespace.name
|
|
30
|
+
if namespace.children.size > 0
|
|
31
|
+
output += '<ul>'
|
|
32
|
+
for child in namespace.children
|
|
33
|
+
output += '<li>' + link_to(list_namespace(child), jsdoc_symbol_path(child.alias)) + '</li>'
|
|
34
|
+
end
|
|
35
|
+
output += '</ul>'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
return output.html_safe
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def link_to_symbol(symbol_type)
|
|
43
|
+
return nil if symbol_type.blank?
|
|
44
|
+
|
|
45
|
+
symbol = Jsdoc::Symbol.where(:alias => symbol_type).first
|
|
46
|
+
return symbol_type if symbol.nil?
|
|
47
|
+
|
|
48
|
+
return link_to(symbol_type, symbol.alias)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Jsdoc
|
|
2
|
+
class Function < ActiveRecord::Base
|
|
3
|
+
belongs_to :symbol
|
|
4
|
+
has_many :params
|
|
5
|
+
has_many :returns
|
|
6
|
+
has_many :requires
|
|
7
|
+
has_many :throws
|
|
8
|
+
has_many :sees, :as => 'see_for'
|
|
9
|
+
has_many :examples, :as => 'example_for'
|
|
10
|
+
|
|
11
|
+
has_many :borrowed_to_join, :class_name => 'Jsdoc::BorrowedFunction'
|
|
12
|
+
has_many :borrowed_to, :through => :borrowed_to_join
|
|
13
|
+
|
|
14
|
+
scope :private, where(:is_private => true)
|
|
15
|
+
scope :public, where(:is_private => false)
|
|
16
|
+
scope :method_types, where(:function_type => 'method')
|
|
17
|
+
scope :event_types, where(:function_type => 'event')
|
|
18
|
+
|
|
19
|
+
scope :for_symbol, lambda { |s| includes(:borrowed_to).where('symbol_id = :symbol_id OR (jsdoc_borrowed_functions.borrowed_to_id = :symbol_id)', :symbol_id => s.id) }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Jsdoc
|
|
2
|
+
class Property < ActiveRecord::Base
|
|
3
|
+
belongs_to :symbol
|
|
4
|
+
|
|
5
|
+
has_many :borrowed_to_join, :class_name => 'Jsdoc::BorrowedProperty'
|
|
6
|
+
has_many :borrowed_to, :through => :borrowed_to_join
|
|
7
|
+
|
|
8
|
+
scope :private, where(:is_private => true)
|
|
9
|
+
scope :public, where(:is_private => false)
|
|
10
|
+
|
|
11
|
+
scope :for_symbol, lambda { |s| includes(:borrowed_to).where('symbol_id = :symbol_id OR jsdoc_borrowed_properties.borrowed_to_id = :symbol_id', :symbol_id => s.id) }
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Jsdoc
|
|
2
|
+
class Symbol < ActiveRecord::Base
|
|
3
|
+
belongs_to :constructor, :class_name => 'Jsdoc::Function'
|
|
4
|
+
has_many :examples, :as => 'example_for'
|
|
5
|
+
|
|
6
|
+
has_many :own_functions, :class_name => 'Jsdoc::Function'
|
|
7
|
+
has_many :own_properties, :class_name => 'Jsdoc::Property'
|
|
8
|
+
|
|
9
|
+
has_many :borrowed_functions_join, :foreign_key => 'borrowed_to_id', :class_name => 'Jsdoc::BorrowedFunction'
|
|
10
|
+
has_many :borrowed_properties_join, :foreign_key => 'borrowed_to_id', :class_name => 'Jsdoc::BorrowedProperty'
|
|
11
|
+
|
|
12
|
+
has_many :borrowed_functions, :through => :borrowed_functions_join, :source => :function
|
|
13
|
+
has_many :borrowed_properties, :through => :borrowed_properties_join, :source => :property
|
|
14
|
+
|
|
15
|
+
has_many :children, :class_name => 'Jsdoc::Symbol', :foreign_key => :member_of, :primary_key => :alias
|
|
16
|
+
has_many :subclasses, :class_name => 'Jsdoc::Symbol', :foreign_key => :extends, :primary_key => :alias
|
|
17
|
+
|
|
18
|
+
belongs_to :superclass, :class_name => 'Jsdoc::Symbol', :foreign_key => :extends, :primary_key => :alias
|
|
19
|
+
|
|
20
|
+
scope :namespaces, where(:symbol_type => 'namespace')
|
|
21
|
+
scope :classes, where(:symbol_type => 'class')
|
|
22
|
+
scope :functions, where(:symbol_type => 'function')
|
|
23
|
+
|
|
24
|
+
def functions
|
|
25
|
+
return Jsdoc::Function.for_symbol(self)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def properties
|
|
29
|
+
return Jsdoc::Property.for_symbol(self)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def requires
|
|
33
|
+
return [] if constructor.nil?
|
|
34
|
+
return constructor.requires
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def inheritance_tree
|
|
38
|
+
branches = [self]
|
|
39
|
+
while branches.last.superclass
|
|
40
|
+
branches << branches.last.superclass
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
return branches
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def public_members?
|
|
47
|
+
return true if properties.public.present?
|
|
48
|
+
return true if functions.public.present?
|
|
49
|
+
return false
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def private_members?
|
|
53
|
+
return true if properties.private.present?
|
|
54
|
+
return true if functions.private.present?
|
|
55
|
+
return false
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<ul>
|
|
2
|
+
<li>
|
|
3
|
+
<% if @symbol == branches.last %>
|
|
4
|
+
<%= branches.pop.name %>
|
|
5
|
+
<% else %>
|
|
6
|
+
<%= link_to(branches.last.name, jsdoc_symbol_path(branches.pop.alias)) %>
|
|
7
|
+
<% end %>
|
|
8
|
+
<% if branches.size > 0 %>
|
|
9
|
+
<%= render :partial => 'inheritance_tree_branch', :locals => {:branches => branches} %>
|
|
10
|
+
<% end %>
|
|
11
|
+
</li>
|
|
12
|
+
</ul>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<% if members.size > 0 %>
|
|
2
|
+
<table class="members">
|
|
3
|
+
<thead>
|
|
4
|
+
<tr>
|
|
5
|
+
<th><%= member_type.capitalize %></th>
|
|
6
|
+
<th class="defined_by">Defined By</th>
|
|
7
|
+
</tr>
|
|
8
|
+
</thead>
|
|
9
|
+
<tbody>
|
|
10
|
+
<% for m in members.sort{|x,y| x.name <=> y.name} %>
|
|
11
|
+
<tr id="<%= anchorName(m) %>" class="<%= m.symbol == @symbol ? 'own' : 'borrowed' %> <%= member_type.underscore %>">
|
|
12
|
+
<td>
|
|
13
|
+
<% if m.is_static %><span class="flag"><static></span><% end %>
|
|
14
|
+
<% if m.respond_to?('is_constant') and m.is_constant %><span class="flag"><constant></span><% end %>
|
|
15
|
+
<% if m.respond_to?('is_readable') and m.is_readable and !m.is_writable %><span class="flag"><read-only></span><% end %>
|
|
16
|
+
<% if m.respond_to?('is_readable') and m.is_writable and !m.is_readable %><span class="flag"><write-only></span><% end %>
|
|
17
|
+
<% if m.is_a?(Jsdoc::Property) %>
|
|
18
|
+
<%= link_to(m.name, '#' + anchorName(m), :class => 'member_link') %> : <%= m.property_type.blank? ? '*' : link_to_symbol(m.property_type) %>
|
|
19
|
+
<% elsif m.is_a?(Jsdoc::Function) %>
|
|
20
|
+
<%= link_to(m.name, '#' + anchorName(m), :class => 'member_link') %> <%= render :partial => 'param_list', :locals => {:params => m.params} %> : <span class="return_type"><%= m.returns.blank? ? 'void' : link_to_symbol(m.returns.first.return_type) %></span>
|
|
21
|
+
<% else %>
|
|
22
|
+
<%= m.name %>
|
|
23
|
+
<% end %>
|
|
24
|
+
|
|
25
|
+
<% if m.description.present? %>
|
|
26
|
+
<div class="description">
|
|
27
|
+
<%= raw(m.description) %>
|
|
28
|
+
</div>
|
|
29
|
+
<% end %>
|
|
30
|
+
</td>
|
|
31
|
+
<td><%= m.symbol == @symbol ? @symbol.name : link_to(m.symbol.name, jsdoc_symbol_path(m.symbol.alias) + "##{member_type.underscore}_#{m.name}") %></td>
|
|
32
|
+
</tr>
|
|
33
|
+
<% end %>
|
|
34
|
+
</tbody>
|
|
35
|
+
</table>
|
|
36
|
+
<% else %>
|
|
37
|
+
This <%= @symbol.symbol_type.downcase %> has no <%= member_type.downcase.pluralize %>.
|
|
38
|
+
<% end %>
|