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
@@ -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