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.
Files changed (213) hide show
  1. data/.gitignore +8 -0
  2. data/Gemfile +5 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.rdoc +94 -0
  5. data/Rakefile +29 -0
  6. data/app/controllers/jsdoc/documentation_controller.rb +48 -0
  7. data/app/helpers/jsdoc/documentation_helper.rb +50 -0
  8. data/app/models/jsdoc/borrowed_function.rb +7 -0
  9. data/app/models/jsdoc/borrowed_property.rb +7 -0
  10. data/app/models/jsdoc/example.rb +5 -0
  11. data/app/models/jsdoc/function.rb +21 -0
  12. data/app/models/jsdoc/param.rb +7 -0
  13. data/app/models/jsdoc/property.rb +13 -0
  14. data/app/models/jsdoc/require.rb +5 -0
  15. data/app/models/jsdoc/return.rb +5 -0
  16. data/app/models/jsdoc/see.rb +4 -0
  17. data/app/models/jsdoc/symbol.rb +58 -0
  18. data/app/models/jsdoc/throw.rb +4 -0
  19. data/app/views/jsdoc/documentation/_inheritance_tree_branch.html.erb +12 -0
  20. data/app/views/jsdoc/documentation/_members_table.html.erb +38 -0
  21. data/app/views/jsdoc/documentation/_param_list.html.erb +11 -0
  22. data/app/views/jsdoc/documentation/index.html.erb +7 -0
  23. data/app/views/jsdoc/documentation/source.html.erb +11 -0
  24. data/app/views/jsdoc/documentation/symbol.html.erb +111 -0
  25. data/app/views/layouts/jsdoc/_aside_symbol_list.html.erb +12 -0
  26. data/app/views/layouts/jsdoc/_header.html.erb +1 -0
  27. data/app/views/layouts/jsdoc/_symbol_tree_branch.html.erb +3 -0
  28. data/app/views/layouts/jsdoc/documentation.html.erb +44 -0
  29. data/app/views/layouts/jsdoc/documentation_wrapper.html.erb +2 -0
  30. data/config/routes.rb +8 -0
  31. data/jsdoc-rails.gemspec +25 -0
  32. data/jsdoc-toolkit/README.txt +183 -0
  33. data/jsdoc-toolkit/app/frame.js +33 -0
  34. data/jsdoc-toolkit/app/frame/Chain.js +102 -0
  35. data/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  36. data/jsdoc-toolkit/app/frame/Hash.js +84 -0
  37. data/jsdoc-toolkit/app/frame/Link.js +173 -0
  38. data/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  39. data/jsdoc-toolkit/app/frame/Opt.js +134 -0
  40. data/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  41. data/jsdoc-toolkit/app/frame/String.js +93 -0
  42. data/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  43. data/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  44. data/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  45. data/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  46. data/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  47. data/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  48. data/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
  49. data/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
  50. data/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +294 -0
  51. data/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +140 -0
  52. data/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  53. data/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  54. data/jsdoc-toolkit/app/lib/JSDOC/Parser.js +146 -0
  55. data/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  56. data/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +646 -0
  57. data/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +243 -0
  58. data/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  59. data/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  60. data/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  61. data/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  62. data/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  63. data/jsdoc-toolkit/app/lib/JSDOC/Walker.js +557 -0
  64. data/jsdoc-toolkit/app/main.js +111 -0
  65. data/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  66. data/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  67. data/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  68. data/jsdoc-toolkit/app/plugins/publishSrcHilite.js +62 -0
  69. data/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
  70. data/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  71. data/jsdoc-toolkit/app/plugins/tagSynonyms.js +45 -0
  72. data/jsdoc-toolkit/app/run.js +348 -0
  73. data/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  74. data/jsdoc-toolkit/app/t/runner.js +13 -0
  75. data/jsdoc-toolkit/app/test.js +342 -0
  76. data/jsdoc-toolkit/app/test/addon.js +24 -0
  77. data/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  78. data/jsdoc-toolkit/app/test/augments.js +31 -0
  79. data/jsdoc-toolkit/app/test/augments2.js +26 -0
  80. data/jsdoc-toolkit/app/test/borrows.js +46 -0
  81. data/jsdoc-toolkit/app/test/borrows2.js +23 -0
  82. data/jsdoc-toolkit/app/test/config.js +22 -0
  83. data/jsdoc-toolkit/app/test/constructs.js +18 -0
  84. data/jsdoc-toolkit/app/test/encoding.js +10 -0
  85. data/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  86. data/jsdoc-toolkit/app/test/event.js +54 -0
  87. data/jsdoc-toolkit/app/test/exports.js +14 -0
  88. data/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  89. data/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  90. data/jsdoc-toolkit/app/test/global.js +13 -0
  91. data/jsdoc-toolkit/app/test/globals.js +25 -0
  92. data/jsdoc-toolkit/app/test/ignore.js +10 -0
  93. data/jsdoc-toolkit/app/test/inner.js +16 -0
  94. data/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  95. data/jsdoc-toolkit/app/test/lend.js +33 -0
  96. data/jsdoc-toolkit/app/test/memberof.js +19 -0
  97. data/jsdoc-toolkit/app/test/memberof2.js +38 -0
  98. data/jsdoc-toolkit/app/test/memberof3.js +33 -0
  99. data/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  100. data/jsdoc-toolkit/app/test/module.js +17 -0
  101. data/jsdoc-toolkit/app/test/multi_methods.js +25 -0
  102. data/jsdoc-toolkit/app/test/name.js +19 -0
  103. data/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  104. data/jsdoc-toolkit/app/test/nocode.js +13 -0
  105. data/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  106. data/jsdoc-toolkit/app/test/overview.js +20 -0
  107. data/jsdoc-toolkit/app/test/param_inline.js +37 -0
  108. data/jsdoc-toolkit/app/test/params_optional.js +8 -0
  109. data/jsdoc-toolkit/app/test/prototype.js +17 -0
  110. data/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  111. data/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  112. data/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  113. data/jsdoc-toolkit/app/test/public.js +10 -0
  114. data/jsdoc-toolkit/app/test/scripts/code.js +5 -0
  115. data/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
  116. data/jsdoc-toolkit/app/test/shared.js +42 -0
  117. data/jsdoc-toolkit/app/test/shared2.js +2 -0
  118. data/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  119. data/jsdoc-toolkit/app/test/static_this.js +13 -0
  120. data/jsdoc-toolkit/app/test/synonyms.js +31 -0
  121. data/jsdoc-toolkit/app/test/tosource.js +23 -0
  122. data/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  123. data/jsdoc-toolkit/changes.txt +124 -0
  124. data/jsdoc-toolkit/conf/sample.conf +31 -0
  125. data/jsdoc-toolkit/java/build.xml +36 -0
  126. data/jsdoc-toolkit/java/build_1.4.xml +36 -0
  127. data/jsdoc-toolkit/java/classes/js.jar +0 -0
  128. data/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  129. data/jsdoc-toolkit/java/src/JsRun.java +21 -0
  130. data/jsdoc-toolkit/jsdebug.jar +0 -0
  131. data/jsdoc-toolkit/jsrun.jar +0 -0
  132. data/jsdoc-toolkit/jsrun.sh +52 -0
  133. data/jsdoc-toolkit/templates/jsdoc-rails/publish.js +202 -0
  134. data/jsdoc-toolkit/templates/jsdoc-rails/seeds.tmpl +449 -0
  135. data/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  136. data/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  137. data/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
  138. data/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  139. data/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
  140. data/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  141. data/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  142. data/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  143. data/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  144. data/lib/generators/jsdoc/jsdoc_generator.rb +71 -0
  145. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_borrowed_functions_table.rb +19 -0
  146. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_borrowed_properties_table.rb +19 -0
  147. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_examples_table.rb +18 -0
  148. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_functions_table.rb +33 -0
  149. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_params_table.rb +24 -0
  150. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_properties_table.rb +37 -0
  151. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_requires_table.rb +16 -0
  152. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_returns_table.rb +18 -0
  153. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_sees_table.rb +18 -0
  154. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_symbols_table.rb +31 -0
  155. data/lib/generators/jsdoc/templates/migrations/jsdoc_create_throws_table.rb +18 -0
  156. data/lib/jsdoc.rb +3 -0
  157. data/lib/jsdoc/engine.rb +30 -0
  158. data/lib/jsdoc/railties/tasks.rake +89 -0
  159. data/lib/jsdoc/version.rb +3 -0
  160. data/public/images/jsdoc/icons/class.gif +0 -0
  161. data/public/images/jsdoc/icons/cmp.gif +0 -0
  162. data/public/images/jsdoc/icons/docs.gif +0 -0
  163. data/public/images/jsdoc/icons/elbow-end.gif +0 -0
  164. data/public/images/jsdoc/icons/elbow-minus.gif +0 -0
  165. data/public/images/jsdoc/icons/elbow-plus.gif +0 -0
  166. data/public/images/jsdoc/icons/elbow.gif +0 -0
  167. data/public/images/jsdoc/icons/event.gif +0 -0
  168. data/public/images/jsdoc/icons/inherited.gif +0 -0
  169. data/public/images/jsdoc/icons/method.gif +0 -0
  170. data/public/images/jsdoc/icons/pkg.gif +0 -0
  171. data/public/images/jsdoc/icons/prop.gif +0 -0
  172. data/public/images/jsdoc/icons/static.gif +0 -0
  173. data/public/javascripts/jsdoc/jsdoc.js +52 -0
  174. data/public/stylesheets/jsdoc/documentation.css +483 -0
  175. data/test/dummy/.gitignore +4 -0
  176. data/test/dummy/Rakefile +7 -0
  177. data/test/dummy/app/controllers/application_controller.rb +3 -0
  178. data/test/dummy/app/helpers/application_helper.rb +2 -0
  179. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  180. data/test/dummy/config.ru +4 -0
  181. data/test/dummy/config/application.rb +45 -0
  182. data/test/dummy/config/boot.rb +10 -0
  183. data/test/dummy/config/database.yml +22 -0
  184. data/test/dummy/config/environment.rb +5 -0
  185. data/test/dummy/config/environments/development.rb +26 -0
  186. data/test/dummy/config/environments/production.rb +49 -0
  187. data/test/dummy/config/environments/test.rb +35 -0
  188. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  189. data/test/dummy/config/initializers/inflections.rb +10 -0
  190. data/test/dummy/config/initializers/jsdoc.rb +5 -0
  191. data/test/dummy/config/initializers/mime_types.rb +5 -0
  192. data/test/dummy/config/initializers/secret_token.rb +7 -0
  193. data/test/dummy/config/initializers/session_store.rb +8 -0
  194. data/test/dummy/config/locales/en.yml +5 -0
  195. data/test/dummy/config/routes.rb +58 -0
  196. data/test/dummy/db/.gitkeep +0 -0
  197. data/test/dummy/public/404.html +26 -0
  198. data/test/dummy/public/422.html +26 -0
  199. data/test/dummy/public/500.html +26 -0
  200. data/test/dummy/public/favicon.ico +0 -0
  201. data/test/dummy/public/javascripts/application.js +2 -0
  202. data/test/dummy/public/javascripts/controls.js +965 -0
  203. data/test/dummy/public/javascripts/dragdrop.js +974 -0
  204. data/test/dummy/public/javascripts/effects.js +1123 -0
  205. data/test/dummy/public/javascripts/prototype.js +6001 -0
  206. data/test/dummy/public/javascripts/rails.js +175 -0
  207. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  208. data/test/dummy/script/rails +6 -0
  209. data/test/integration/navigation_test.rb +7 -0
  210. data/test/jsdoc_test.rb +7 -0
  211. data/test/support/integration_case.rb +5 -0
  212. data/test/test_helper.rb +22 -0
  213. metadata +297 -0
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ .bundle/
2
+ log/*.log
3
+ pkg/
4
+ test/dummy/db/*.sqlite3
5
+ test/dummy/log/*.log
6
+ test/dummy/tmp/
7
+ rdoc/
8
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ gem 'sqlite3-ruby', :require => 'sqlite3'
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,7 @@
1
+ module Jsdoc
2
+ class BorrowedFunction < ActiveRecord::Base
3
+ belongs_to :borrowed_to, :class_name => 'Jsdoc::Symbol'
4
+ belongs_to :borrowed_from, :class_name => 'Jsdoc::Symbol'
5
+ belongs_to :function
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Jsdoc
2
+ class BorrowedProperty < ActiveRecord::Base
3
+ belongs_to :borrowed_to, :class_name => 'Jsdoc::Symbol'
4
+ belongs_to :borrowed_from, :class_name => 'Jsdoc::Symbol'
5
+ belongs_to :property
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ module Jsdoc
2
+ class Example < ActiveRecord::Base
3
+ belongs_to :example_for, :polymorphic => true
4
+ end
5
+ 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,7 @@
1
+ module Jsdoc
2
+ class Param < ActiveRecord::Base
3
+ belongs_to :function
4
+
5
+ default_scope order('"order"')
6
+ end
7
+ 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,5 @@
1
+ module Jsdoc
2
+ class Require < ActiveRecord::Base
3
+ belongs_to :function
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ module Jsdoc
2
+ class Return < ActiveRecord::Base
3
+ belongs_to :function
4
+ end
5
+ end
@@ -0,0 +1,4 @@
1
+ module Jsdoc
2
+ class See < ActiveRecord::Base
3
+ end
4
+ 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,4 @@
1
+ module Jsdoc
2
+ class Throw < ActiveRecord::Base
3
+ end
4
+ 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">&lt;static&gt;</span><% end %>
14
+ <% if m.respond_to?('is_constant') and m.is_constant %><span class="flag">&lt;constant&gt;</span><% end %>
15
+ <% if m.respond_to?('is_readable') and m.is_readable and !m.is_writable %><span class="flag">&lt;read-only&gt;</span><% end %>
16
+ <% if m.respond_to?('is_readable') and m.is_writable and !m.is_readable %><span class="flag">&lt;write-only&gt;</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 %>