jsdoc-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,71 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ class JsdocGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
6
+
7
+ def self.source_root
8
+ @source_root ||= File.join(File.dirname(__FILE__), 'templates')
9
+ end
10
+
11
+ def self.next_migration_number(dirname)
12
+ if ActiveRecord::Base.timestamped_migrations
13
+ if @previous_migration_number
14
+ @previous_migration_number += 1
15
+ else
16
+ @previous_migration_number = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
17
+ end
18
+
19
+ return @previous_migration_number.to_s
20
+ else
21
+ return "%.3d" % (current_migration_number(dirname) + 1)
22
+ end
23
+ end
24
+
25
+ def create_migration_files
26
+ migration_templates = File.join(File.dirname(__FILE__), 'templates/migrations/')
27
+
28
+ Dir.foreach(migration_templates) do |f|
29
+ next unless f.ends_with?('.rb')
30
+
31
+ optional_migration_template "migrations/#{f}", "db/migrate/#{f}"
32
+ end
33
+ end
34
+
35
+ def copy_static_assets
36
+ assets = ['public/images/jsdoc/', 'public/stylesheets/jsdoc/', 'public/javascripts/jsdoc/'];
37
+
38
+ assets.each do |a|
39
+ asset_dir = File.join(File.dirname(__FILE__), '../../../', a)
40
+ copy_dir(asset_dir, a)
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def copy_dir(src, dst)
47
+ Dir.foreach(src) do |f|
48
+ next if %w(. ..).include?(f)
49
+ src_file = File.join(src, f)
50
+ dst_file = File.join(dst, f)
51
+
52
+ if File.directory?(src_file)
53
+ copy_dir(src_file, dst_file)
54
+ else
55
+ copy_file(src_file, dst_file)
56
+ end
57
+
58
+ end
59
+ end
60
+
61
+ def optional_migration_template(*args)
62
+ migration_template(*args)
63
+ rescue Exception => e
64
+ if e.message.include?('Another migration is already named')
65
+ puts "Skipping existing migration: #{args[1]}"
66
+ return
67
+ else
68
+ raise e
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,19 @@
1
+ class JsdocCreateBorrowedFunctionsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_borrowed_functions do |t|
4
+ t.integer :borrowed_to_id
5
+ t.integer :borrowed_from_id
6
+ t.integer :function_id
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :jsdoc_borrowed_functions, :borrowed_from_id
12
+ add_index :jsdoc_borrowed_functions, :borrowed_to_id
13
+ add_index :jsdoc_borrowed_functions, :function_id
14
+ end
15
+
16
+ def self.down
17
+ drop_table :jsdoc_borrowed_functions
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ class JsdocCreateBorrowedPropertiesTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_borrowed_properties do |t|
4
+ t.integer :borrowed_to_id
5
+ t.integer :borrowed_from_id
6
+ t.integer :property_id
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :jsdoc_borrowed_properties, :borrowed_from_id
12
+ add_index :jsdoc_borrowed_properties, :borrowed_to_id
13
+ add_index :jsdoc_borrowed_properties, :property_id
14
+ end
15
+
16
+ def self.down
17
+ drop_table :jsdoc_borrowed_properties
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ class JsdocCreateExamplesTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_examples do |t|
4
+ t.integer :example_for_id
5
+ t.string :example_for_type
6
+ t.text :code
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :jsdoc_examples, :example_for_id
12
+ add_index :jsdoc_examples, :example_for_type
13
+ end
14
+
15
+ def self.down
16
+ drop_table :jsdoc_examples
17
+ end
18
+ end
@@ -0,0 +1,33 @@
1
+ class JsdocCreateFunctionsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_functions do |t|
4
+ t.string :name
5
+ t.string :alias
6
+ t.string :member_of
7
+ t.integer :symbol_id
8
+ t.string :function_type
9
+ t.string :version
10
+ t.text :description
11
+ t.string :defined_in
12
+ t.string :since
13
+ t.string :author
14
+ t.boolean :is_private
15
+ t.boolean :is_inner
16
+ t.boolean :is_static
17
+ t.boolean :is_deprecated
18
+ t.text :deprecated_description
19
+
20
+ t.timestamps
21
+ end
22
+
23
+ add_index :jsdoc_functions, :symbol_id
24
+ add_index :jsdoc_functions, :function_type
25
+ add_index :jsdoc_functions, :name
26
+ add_index :jsdoc_functions, :alias
27
+ add_index :jsdoc_functions, :member_of
28
+ end
29
+
30
+ def self.down
31
+ drop_table :jsdoc_functions
32
+ end
33
+ end
@@ -0,0 +1,24 @@
1
+ class JsdocCreateParamsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_params do |t|
4
+ t.integer :function_id
5
+ t.integer :order
6
+ t.string :name
7
+ t.string :default
8
+ t.boolean :is_optional
9
+ t.string :param_type
10
+ t.text :description
11
+
12
+ t.timestamps
13
+ end
14
+
15
+ add_index :jsdoc_params, :function_id
16
+ add_index :jsdoc_params, :name
17
+ add_index :jsdoc_params, :order
18
+ add_index :jsdoc_params, :param_type
19
+ end
20
+
21
+ def self.down
22
+ drop_table :jsdoc_params
23
+ end
24
+ end
@@ -0,0 +1,37 @@
1
+ class JsdocCreatePropertiesTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_properties do |t|
4
+ t.string :name
5
+ t.string :alias
6
+ t.string :member_of
7
+ t.integer :symbol_id
8
+ t.string :property_type
9
+ t.string :version
10
+ t.text :description
11
+ t.string :defined_in
12
+ t.string :since
13
+ t.string :author
14
+ t.string :default
15
+ t.boolean :is_private
16
+ t.boolean :is_inner
17
+ t.boolean :is_static
18
+ t.boolean :is_constant
19
+ t.boolean :is_deprecated
20
+ t.boolean :is_readable
21
+ t.boolean :is_writable
22
+ t.text :deprecated_description
23
+
24
+ t.timestamps
25
+ end
26
+
27
+ add_index :jsdoc_properties, :symbol_id
28
+ add_index :jsdoc_properties, :property_type
29
+ add_index :jsdoc_properties, :name
30
+ add_index :jsdoc_properties, :alias
31
+ add_index :jsdoc_properties, :member_of
32
+ end
33
+
34
+ def self.down
35
+ drop_table :jsdoc_properties
36
+ end
37
+ end
@@ -0,0 +1,16 @@
1
+ class JsdocCreateRequiresTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_requires do |t|
4
+ t.integer :function_id
5
+ t.text :require
6
+
7
+ t.timestamps
8
+ end
9
+
10
+ add_index :jsdoc_requires, :function_id
11
+ end
12
+
13
+ def self.down
14
+ drop_table :jsdoc_requires
15
+ end
16
+ end
@@ -0,0 +1,18 @@
1
+ class JsdocCreateReturnsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_returns do |t|
4
+ t.integer :function_id
5
+ t.string :return_type
6
+ t.text :description
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :jsdoc_returns, :function_id
12
+ add_index :jsdoc_returns, :return_type
13
+ end
14
+
15
+ def self.down
16
+ drop_table :jsdoc_returns
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ class JsdocCreateSeesTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_sees do |t|
4
+ t.integer :see_for_id
5
+ t.string :see_for_type
6
+ t.text :description
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :jsdoc_sees, :see_for_id
12
+ add_index :jsdoc_sees, :see_for_type
13
+ end
14
+
15
+ def self.down
16
+ drop_table :jsdoc_sees
17
+ end
18
+ end
@@ -0,0 +1,31 @@
1
+ class JsdocCreateSymbolsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_symbols do |t|
4
+ t.string :name
5
+ t.string :alias
6
+ t.string :member_of
7
+ t.integer :constructor_id
8
+ t.string :symbol_type
9
+ t.string :version
10
+ t.text :description
11
+ t.string :defined_in
12
+ t.string :since
13
+ t.string :author
14
+ t.string :extends
15
+ t.boolean :is_deprecated
16
+ t.text :deprecated_description
17
+
18
+ t.timestamps
19
+ end
20
+
21
+ add_index :jsdoc_symbols, :name
22
+ add_index :jsdoc_symbols, :alias
23
+ add_index :jsdoc_symbols, :member_of
24
+ add_index :jsdoc_symbols, :symbol_type
25
+ add_index :jsdoc_symbols, :constructor_id
26
+ end
27
+
28
+ def self.down
29
+ drop_table :jsdoc_symbols
30
+ end
31
+ end
@@ -0,0 +1,18 @@
1
+ class JsdocCreateThrowsTable < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :jsdoc_throws do |t|
4
+ t.integer :function_id
5
+ t.string :throw_type
6
+ t.text :description
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :jsdoc_throws, :function_id
12
+ add_index :jsdoc_throws, :throw_type
13
+ end
14
+
15
+ def self.down
16
+ drop_table :jsdoc_throws
17
+ end
18
+ end
data/lib/jsdoc.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Jsdoc
2
+ require 'jsdoc/engine' if defined?(Rails) && Rails::VERSION::MAJOR == 3
3
+ end
@@ -0,0 +1,30 @@
1
+ require 'jsdoc'
2
+ require 'rails'
3
+ require 'action_controller'
4
+
5
+ module Jsdoc
6
+ def self.table_name_prefix
7
+ 'jsdoc_'
8
+ end
9
+
10
+ class Engine < Rails::Engine
11
+ @@mount_point = '/documentation'
12
+ cattr_accessor :mount_point
13
+ @@source_path = 'jsdoc/source'
14
+ cattr_accessor :source_path
15
+ @@no_global = true
16
+ cattr_accessor :no_global
17
+
18
+ # We can add all of the public assets from our engine and make them
19
+ # available to use. This allows us to use javascripts, images, stylesheets
20
+ # etc.
21
+ initializer 'static assets' do |app|
22
+ app.middleware.use ::ActionDispatch::Static, "#{root}/public"
23
+ end
24
+
25
+
26
+ rake_tasks do
27
+ load 'jsdoc/railties/tasks.rake'
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,89 @@
1
+ def confirm(msg)
2
+ puts msg
3
+ STDIN.gets.strip == 'yes'
4
+ end
5
+
6
+ def wipe_data
7
+ msg = " /!\\ WARNING /!\\ THIS OPERATION WILL WIPE OUT EVERYTHING FROM THE JSDOC-RAILS TABLES.\n"
8
+ msg += " /!\\ WARNING /!\\ To skip this step specify NOWIPE=true when calling this taks.\n"
9
+ msg += " /!\\ WARNING /!\\ If you're sure you want to continue, please type 'yes'."
10
+ unless confirm(msg)
11
+ puts "Data wipe cancelled"
12
+ return false
13
+ end
14
+
15
+ [Jsdoc::BorrowedFunction, Jsdoc::BorrowedProperty, Jsdoc::Example, Jsdoc::Function, Jsdoc::Param, Jsdoc::Property, Jsdoc::Require, Jsdoc::Return, Jsdoc::See, Jsdoc::Symbol, Jsdoc::Throw].each do |klass|
16
+ puts "Deleting everything for: #{klass.name}"
17
+ klass.delete_all
18
+ end
19
+
20
+ return true
21
+ end
22
+
23
+ def output_jsdocs(src, dst)
24
+ output_dir = File.dirname(dst)
25
+ output_file = File.basename(dst)
26
+
27
+ jsdoc_path = File.join(File.dirname(__FILE__), '../../../jsdoc-toolkit')
28
+
29
+ template_path = File.join(jsdoc_path, 'templates', 'jsdoc-rails')
30
+
31
+ puts "Reading from: #{ENV['SRC']}"
32
+ puts "Outputing to: #{File.join(output_dir, output_file)}"
33
+ system(%Q(cd "#{src.gsub('"', '\\"')}"; java -jar "#{jsdoc_path}/jsrun.jar" "#{jsdoc_path}/app/run.js" -r=100 -a -d="#{output_dir}" -D="outputFile:#{output_file}" -t=#{template_path} -- *))
34
+ end
35
+
36
+ namespace :jsdoc do
37
+ desc "Write a Ruby script containing all the JSDoc definitions which can be loaded directly into Rails. Specify with SRC=/path/to/javascript/, OUTPUT=db/jsdoc-data.rb"
38
+ task :output do
39
+ output = ENV['OUTPUT'] || 'db/jsdoc-data.rb'
40
+ output = File.join(Dir.pwd, output) unless output[0..0] == '/'
41
+ src = ENV['SRC']
42
+
43
+ if src.blank?
44
+ puts "You must specify the SRC variable pointing to the location of your javascript code"
45
+ return 1
46
+ end
47
+
48
+ output_jsdocs(src, output)
49
+ end
50
+ end
51
+
52
+ namespace :jsdoc do
53
+ desc "Load a Ruby script containing JSDoc data, as generated by 'rake jsdoc:output'. Specify with SRC=db/jsdoc-data.rb, NOWIPE=false"
54
+ task :load => :environment do
55
+ src = ENV['SRC'] || 'db/jsdoc-data.rb'
56
+
57
+ unless ENV['NOWIPE'].present? and ENV['NOWIPE'][0..0].downcase == 't'
58
+ unless wipe_data
59
+ puts "Data load cancelled"
60
+ return false
61
+ end
62
+ end
63
+ load(src)
64
+ end
65
+ end
66
+
67
+ namespace :jsdoc do
68
+ desc "Load all the JSDoc data from your Javascript source. Effectivly the same as running jsdoc:output then jsdoc:load. Specify with SRC=/path/to/javascript/, NOWIPE=false"
69
+ task :import => :environment do
70
+ src = ENV['SRC']
71
+
72
+ if src.blank?
73
+ puts "You must specify the SRC variable pointing to the location of your javascript code"
74
+ return 1
75
+ end
76
+
77
+ unless ENV['NOWIPE'].present? and ENV['NOWIPE'][0..0].downcase == 'f'
78
+ unless wipe_data
79
+ puts "Data load cancelled"
80
+ return false
81
+ end
82
+ end
83
+
84
+ tmpfile = Tempfile.new('jsdoc-rails')
85
+ output_jsdocs(src, tmpfile.path)
86
+ load(tmpfile.path)
87
+ tmpfile.close
88
+ end
89
+ end