jsduck 4.10.4 → 5.0.0.beta01

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 (183) hide show
  1. data/.travis.yml +0 -1
  2. data/README.md +32 -6
  3. data/Rakefile +10 -18
  4. data/bin/compare +5 -5
  5. data/bin/jsduck +2 -3
  6. data/jsduck.gemspec +3 -4
  7. data/lib/jsduck/aggregator.rb +21 -80
  8. data/lib/jsduck/app.rb +7 -14
  9. data/lib/jsduck/app_data.rb +4 -5
  10. data/lib/jsduck/assets.rb +4 -7
  11. data/lib/jsduck/base_type.rb +53 -0
  12. data/lib/jsduck/batch_parser.rb +8 -87
  13. data/lib/jsduck/batch_processor.rb +77 -0
  14. data/lib/jsduck/categories/auto.rb +83 -0
  15. data/lib/jsduck/categories/class_name.rb +63 -0
  16. data/lib/jsduck/categories/factory.rb +113 -0
  17. data/lib/jsduck/categories/file.rb +75 -0
  18. data/lib/jsduck/class.rb +3 -9
  19. data/lib/jsduck/class_doc_expander.rb +1 -1
  20. data/lib/jsduck/css/lexer.rb +203 -0
  21. data/lib/jsduck/css/parser.rb +121 -0
  22. data/lib/jsduck/doc/comment.rb +40 -0
  23. data/lib/jsduck/doc/map.rb +23 -0
  24. data/lib/jsduck/doc/parser.rb +128 -0
  25. data/lib/jsduck/doc/processor.rb +52 -0
  26. data/lib/jsduck/doc/scanner.rb +76 -0
  27. data/lib/jsduck/doc/standard_tag_parser.rb +154 -0
  28. data/lib/jsduck/doc/subproperties.rb +64 -0
  29. data/lib/jsduck/docs_code_comparer.rb +31 -0
  30. data/lib/jsduck/export_writer.rb +2 -2
  31. data/lib/jsduck/exporter/app.rb +16 -4
  32. data/lib/jsduck/exporter/full.rb +2 -2
  33. data/lib/jsduck/format/batch.rb +58 -0
  34. data/lib/jsduck/format/class.rb +62 -0
  35. data/lib/jsduck/format/doc.rb +172 -0
  36. data/lib/jsduck/format/html_stack.rb +109 -0
  37. data/lib/jsduck/format/shortener.rb +55 -0
  38. data/lib/jsduck/format/subproperties.rb +64 -0
  39. data/lib/jsduck/guides.rb +32 -14
  40. data/lib/jsduck/index_html.rb +3 -1
  41. data/lib/jsduck/inline/auto_link.rb +2 -2
  42. data/lib/jsduck/inline/link.rb +4 -3
  43. data/lib/jsduck/inline/link_renderer.rb +2 -2
  44. data/lib/jsduck/inline/video.rb +8 -2
  45. data/lib/jsduck/js/ast.rb +361 -0
  46. data/lib/jsduck/js/esprima.rb +39 -0
  47. data/lib/jsduck/{esprima → js/esprima}/esprima.js +0 -0
  48. data/lib/jsduck/js/evaluator.rb +70 -0
  49. data/lib/jsduck/js/ext_patterns.rb +70 -0
  50. data/lib/jsduck/js/function.rb +206 -0
  51. data/lib/jsduck/js/node.rb +194 -0
  52. data/lib/jsduck/js/node_array.rb +36 -0
  53. data/lib/jsduck/js/parser.rb +223 -0
  54. data/lib/jsduck/js/serializer.rb +263 -0
  55. data/lib/jsduck/js/utils.rb +21 -0
  56. data/lib/jsduck/logger.rb +3 -13
  57. data/lib/jsduck/members_index.rb +3 -4
  58. data/lib/jsduck/merger.rb +25 -145
  59. data/lib/jsduck/options.rb +29 -132
  60. data/lib/jsduck/parser.rb +76 -0
  61. data/lib/jsduck/process/accessors.rb +133 -0
  62. data/lib/jsduck/process/circular_deps.rb +58 -0
  63. data/lib/jsduck/process/enums.rb +91 -0
  64. data/lib/jsduck/process/ext4_events.rb +43 -0
  65. data/lib/jsduck/process/global_members.rb +36 -0
  66. data/lib/jsduck/process/ignored_classes.rb +16 -0
  67. data/lib/jsduck/process/importer.rb +58 -0
  68. data/lib/jsduck/process/inherit_doc.rb +197 -0
  69. data/lib/jsduck/process/lint.rb +135 -0
  70. data/lib/jsduck/process/overrides.rb +99 -0
  71. data/lib/jsduck/process/return_values.rb +72 -0
  72. data/lib/jsduck/process/versions.rb +102 -0
  73. data/lib/jsduck/relations.rb +5 -0
  74. data/lib/jsduck/render/class.rb +144 -0
  75. data/lib/jsduck/render/sidebar.rb +97 -0
  76. data/lib/jsduck/render/signature.rb +94 -0
  77. data/lib/jsduck/render/subproperties.rb +99 -0
  78. data/lib/jsduck/render/tags.rb +38 -0
  79. data/lib/jsduck/search_data.rb +19 -13
  80. data/lib/jsduck/source/file.rb +8 -17
  81. data/lib/jsduck/tag/abstract.rb +4 -7
  82. data/lib/jsduck/tag/accessor.rb +10 -0
  83. data/lib/jsduck/tag/alias.rb +61 -0
  84. data/lib/jsduck/tag/alternate_class_names.rb +17 -0
  85. data/lib/jsduck/tag/aside.rb +28 -31
  86. data/lib/jsduck/tag/author.rb +9 -5
  87. data/lib/jsduck/tag/boolean_tag.rb +24 -0
  88. data/lib/jsduck/tag/cfg.rb +45 -0
  89. data/lib/jsduck/tag/chainable.rb +5 -7
  90. data/lib/jsduck/tag/class.rb +28 -0
  91. data/lib/jsduck/tag/class_list_tag.rb +40 -0
  92. data/lib/jsduck/tag/constructor.rb +24 -0
  93. data/lib/jsduck/tag/css_mixin.rb +17 -0
  94. data/lib/jsduck/tag/css_var.rb +29 -0
  95. data/lib/jsduck/tag/default.rb +31 -0
  96. data/lib/jsduck/tag/deprecated.rb +13 -27
  97. data/lib/jsduck/tag/deprecated_tag.rb +58 -0
  98. data/lib/jsduck/tag/doc.rb +32 -0
  99. data/lib/jsduck/tag/docauthor.rb +4 -5
  100. data/lib/jsduck/tag/enum.rb +70 -0
  101. data/lib/jsduck/tag/event.rb +28 -0
  102. data/lib/jsduck/tag/evented.rb +10 -0
  103. data/lib/jsduck/tag/extends.rb +45 -0
  104. data/lib/jsduck/tag/ftype.rb +18 -0
  105. data/lib/jsduck/tag/hide.rb +4 -11
  106. data/lib/jsduck/tag/ignore.rb +6 -7
  107. data/lib/jsduck/tag/inheritable.rb +10 -0
  108. data/lib/jsduck/tag/inheritdoc.rb +48 -0
  109. data/lib/jsduck/tag/markdown.rb +8 -6
  110. data/lib/jsduck/tag/member.rb +24 -0
  111. data/lib/jsduck/tag/method.rb +35 -0
  112. data/lib/jsduck/tag/mixins.rb +26 -0
  113. data/lib/jsduck/tag/name.rb +36 -0
  114. data/lib/jsduck/tag/new.rb +13 -27
  115. data/lib/jsduck/tag/override.rb +37 -0
  116. data/lib/jsduck/tag/overrides.rb +29 -0
  117. data/lib/jsduck/tag/param.rb +87 -0
  118. data/lib/jsduck/tag/preventable.rb +19 -10
  119. data/lib/jsduck/tag/private.rb +28 -13
  120. data/lib/jsduck/tag/property.rb +39 -0
  121. data/lib/jsduck/tag/protected.rb +5 -7
  122. data/lib/jsduck/tag/ptype.rb +18 -0
  123. data/lib/jsduck/tag/readonly.rb +4 -7
  124. data/lib/jsduck/tag/removed.rb +21 -29
  125. data/lib/jsduck/tag/required.rb +11 -9
  126. data/lib/jsduck/tag/requires.rb +12 -0
  127. data/lib/jsduck/tag/return.rb +47 -0
  128. data/lib/jsduck/tag/since.rb +19 -11
  129. data/lib/jsduck/tag/singleton.rb +15 -0
  130. data/lib/jsduck/tag/static.rb +5 -7
  131. data/lib/jsduck/tag/subproperties.rb +23 -0
  132. data/lib/jsduck/tag/tag.rb +208 -0
  133. data/lib/jsduck/tag/template.rb +14 -9
  134. data/lib/jsduck/tag/throws.rb +38 -0
  135. data/lib/jsduck/tag/type.rb +48 -0
  136. data/lib/jsduck/tag/uses.rb +12 -0
  137. data/lib/jsduck/tag/xtype.rb +30 -0
  138. data/lib/jsduck/tag_loader.rb +39 -0
  139. data/lib/jsduck/tag_registry.rb +189 -0
  140. data/lib/jsduck/type_parser.rb +3 -3
  141. data/lib/jsduck/web_writer.rb +2 -2
  142. data/lib/jsduck/welcome.rb +1 -1
  143. metadata +578 -538
  144. data/lib/jsduck/accessors.rb +0 -136
  145. data/lib/jsduck/ast.rb +0 -524
  146. data/lib/jsduck/auto_categories.rb +0 -80
  147. data/lib/jsduck/batch_formatter.rb +0 -60
  148. data/lib/jsduck/categories.rb +0 -73
  149. data/lib/jsduck/categories_class_name.rb +0 -37
  150. data/lib/jsduck/circular_deps.rb +0 -56
  151. data/lib/jsduck/class_formatter.rb +0 -102
  152. data/lib/jsduck/columns.rb +0 -56
  153. data/lib/jsduck/css_lexer.rb +0 -201
  154. data/lib/jsduck/css_parser.rb +0 -119
  155. data/lib/jsduck/doc_ast.rb +0 -319
  156. data/lib/jsduck/doc_formatter.rb +0 -142
  157. data/lib/jsduck/doc_parser.rb +0 -611
  158. data/lib/jsduck/doc_type.rb +0 -59
  159. data/lib/jsduck/enum.rb +0 -73
  160. data/lib/jsduck/esprima.rb +0 -51
  161. data/lib/jsduck/evaluator.rb +0 -69
  162. data/lib/jsduck/ext_patterns.rb +0 -58
  163. data/lib/jsduck/file_categories.rb +0 -76
  164. data/lib/jsduck/function_ast.rb +0 -206
  165. data/lib/jsduck/guide_anchors.rb +0 -32
  166. data/lib/jsduck/guide_toc.rb +0 -49
  167. data/lib/jsduck/html_stack.rb +0 -105
  168. data/lib/jsduck/importer.rb +0 -121
  169. data/lib/jsduck/inherit_doc.rb +0 -193
  170. data/lib/jsduck/js_parser.rb +0 -221
  171. data/lib/jsduck/lint.rb +0 -133
  172. data/lib/jsduck/meta_tag.rb +0 -88
  173. data/lib/jsduck/meta_tag_loader.rb +0 -67
  174. data/lib/jsduck/meta_tag_registry.rb +0 -111
  175. data/lib/jsduck/meta_tag_renderer.rb +0 -34
  176. data/lib/jsduck/news.rb +0 -128
  177. data/lib/jsduck/override.rb +0 -87
  178. data/lib/jsduck/renderer.rb +0 -361
  179. data/lib/jsduck/return_values.rb +0 -72
  180. data/lib/jsduck/serializer.rb +0 -262
  181. data/lib/jsduck/shortener.rb +0 -58
  182. data/lib/jsduck/signature_renderer.rb +0 -91
  183. data/lib/jsduck/source/file_parser.rb +0 -72
data/.travis.yml CHANGED
@@ -6,7 +6,6 @@ install:
6
6
  - gem install rdiscount
7
7
  - gem install json
8
8
  - gem install parallel
9
- - gem install execjs
10
9
  - gem install therubyracer -v 0.10.1
11
10
  - gem install rspec
12
11
  - gem install rake
data/README.md CHANGED
@@ -34,12 +34,38 @@ Standard rubygems install should do:
34
34
 
35
35
  $ [sudo] gem install jsduck
36
36
 
37
- Windows users probably want to [download a binary release][winbin].
38
-
39
- See the [installation guide][] for help when you run into problems.
40
-
41
- [winbin]: https://sourceforge.net/projects/jsduck/files/
42
- [installation guide]: https://github.com/senchalabs/jsduck/wiki/Installation
37
+ If you encounter errors during gem installation, you may need to
38
+ install the header files for compiling extension modules for Ruby 1.9.
39
+ For Debian systems you'll need the `ruby1.9-dev` package. For Red Hat
40
+ / CentOS / Fedora use the `ruby-devel` package.
41
+
42
+ In **OSX Mountain Lion** the compilation of `therubyracer` dependency
43
+ often fails for so far unknown reasons. Most users have found a
44
+ solution in upgrading to Ruby 1.9 using [RVM][].
45
+
46
+ For **Windows** users out there, you can download the binary version,
47
+ which includes Ruby interpreter and all dependencies bundled in a
48
+ single .exe file. Grab it from the [download page][].
49
+
50
+ Alternatively you can install through rubygems, but you need to do
51
+ some additional tweaks. First go and [download][libs download]
52
+ therubyracer gem and v8 lib that stereobooster has built for
53
+ windows. You need to install this special rubyracer version instead of
54
+ the one from rubygems:
55
+
56
+ > gem install therubyracer-0.11.0beta1-x86-mingw32.gem
57
+
58
+ To make it actually work you need `v8.dll` somewhere in your
59
+ system. Extract the `lib_v8.3.11.9.zip` take the `v8.dll` inside it
60
+ and place into the `bin` directory of your Ruby installation (other
61
+ dirs that are on your PATH can work too, but I've found this to be the
62
+ most sensible place to put it). Now you're ready to install JSDuck:
63
+
64
+ > gem install jsduck
65
+
66
+ [RVM]: https://rvm.io/
67
+ [download page]: https://sourceforge.net/projects/jsduck/files/
68
+ [libs download]: https://github.com/stereobooster/therubyracer/downloads
43
69
 
44
70
  Usage
45
71
  -----
data/Rakefile CHANGED
@@ -104,7 +104,7 @@ def compress
104
104
  dir = "template-min"
105
105
 
106
106
  # Create JSB3 file for Docs app
107
- system("sencha", "create", "jsb", "-a", "http://localhost/docs/", "-p", "#{dir}/app.jsb3")
107
+ system("sencha", "create", "jsb", "-a", "http://localhost/~renesaarsoo/docs/", "-p", "#{dir}/app.jsb3")
108
108
  # Concatenate files listed in JSB3 file
109
109
  system("sencha", "build", "-p", "#{dir}/app.jsb3", "-d", dir)
110
110
 
@@ -159,11 +159,6 @@ class JsDuckRunner
159
159
  add_options("--comments-domain", db_name+"/"+version)
160
160
  end
161
161
 
162
- def add_search(product, version)
163
- add_options("--search-url", "http://support-test.sencha.com:8080/docsearch/search")
164
- add_options("--search-domain", product+"/"+version)
165
- end
166
-
167
162
  def add_ext4
168
163
  @options += [
169
164
  "--title", "Sencha Docs - Ext JS 4.0",
@@ -252,7 +247,7 @@ task :ext4 => :sass do
252
247
  runner.add_debug
253
248
  runner.run
254
249
 
255
- system("ln -s #{EXT_BUILD} #{OUT_DIR}/extjs-build")
250
+ system("cp -r #{EXT_BUILD} #{OUT_DIR}/extjs-build")
256
251
  end
257
252
 
258
253
  desc "Run JSDuck on Ext JS from SDK repo (for internal use at Sencha)"
@@ -262,14 +257,15 @@ task :sdk => :sass do
262
257
  "--output", OUT_DIR,
263
258
  "--config", "#{SDK_DIR}/extjs/docs/config.json",
264
259
  "--examples-base-url", "extjs-build/examples/",
260
+ # "--import", "4.1:../docs.sencha.com/exports/extjs-4.1.1",
261
+ # "--import", "4.2",
265
262
  "--seo"
266
263
  )
267
264
  runner.add_debug
268
265
  runner.add_comments('ext-js', '4')
269
- runner.add_search('Ext JS', '4.2.0')
270
266
  runner.run
271
267
 
272
- system("ln -s #{EXT_BUILD} #{OUT_DIR}/extjs-build")
268
+ system("cp -r #{EXT_BUILD} #{OUT_DIR}/extjs-build")
273
269
  end
274
270
 
275
271
  desc "Run JSDuck on Sencha Touch 2 repo (for internal use at Sencha)"
@@ -279,14 +275,10 @@ task :touch2 => :sass do
279
275
  "--output", OUT_DIR,
280
276
  "--config", "#{SDK_DIR}/touch/docs/config.json",
281
277
  "--examples-base-url", "touch-build/examples/production/",
282
- # "--import", "1.1.0:../docs.sencha.com/exports/touch-1.1.0",
283
- # "--import", "1.1.1:../docs.sencha.com/exports/touch-1.1.1",
284
- # "--import", "2.0.0:../docs.sencha.com/exports/touch-2.0.0",
285
- # "--import", "2.0.1:../docs.sencha.com/exports/touch-2.0.1",
286
- # "--import", "2.1.0:../docs.sencha.com/exports/touch-2.1.0",
287
- # "--import", "2.1.1:../docs.sencha.com/exports/touch-2.1.1",
288
- # "--import", "2.2.0:../docs.sencha.com/exports/touch-2.2.0",
289
- # "--import", "2.2.1",
278
+ # "--import", "Touch 1.1:../docs.sencha.com/exports/touch-1.1",
279
+ # "--import", "Touch 2.0:../docs.sencha.com/exports/touch-2.0.1",
280
+ # "--import", "Touch 2.1.0:../docs.sencha.com/exports/touch-2.1.0",
281
+ # "--import", "Touch 2.1.1",
290
282
  "--seo"
291
283
  )
292
284
 
@@ -294,7 +286,7 @@ task :touch2 => :sass do
294
286
  runner.add_comments('touch', '2')
295
287
  runner.run
296
288
 
297
- system("ln -s #{TOUCH_BUILD} #{OUT_DIR}/touch-build")
289
+ system("cp -r #{TOUCH_BUILD} #{OUT_DIR}/touch-build")
298
290
  end
299
291
 
300
292
  task :default => :spec
data/bin/compare CHANGED
@@ -105,7 +105,7 @@ def read_ignored_members(filename)
105
105
  end
106
106
 
107
107
  def normal_public_member?(m)
108
- !m["private"] && !m["meta"]["protected"] && !m["meta"]["deprecated"] && !m["meta"]["removed"]
108
+ !m["private"] && !m["protected"] && !m["deprecated"] && !m["removed"]
109
109
  end
110
110
 
111
111
  def unify_default(v)
@@ -115,7 +115,7 @@ end
115
115
  def visibility(m)
116
116
  if m["private"]
117
117
  "private"
118
- elsif m["meta"]["protected"]
118
+ elsif m["protected"]
119
119
  "protected"
120
120
  else
121
121
  "public"
@@ -125,7 +125,7 @@ end
125
125
  # Finds equivalent member to given member from class.
126
126
  # Returns the member found or nil.
127
127
  def find_member(cls, member)
128
- cls[member["meta"]["static"] ? "statics" : "members"][member["tagname"]].find do |m|
128
+ cls[member["static"] ? "statics" : "members"][member["tagname"]].find do |m|
129
129
  member["name"] == m["name"]
130
130
  end
131
131
  end
@@ -190,9 +190,9 @@ def compare_classes(cls1, cls2)
190
190
  :what => "removed",
191
191
  :other => other ? {
192
192
  :type => other["tagname"],
193
- :static => other["meta"]["static"],
193
+ :static => other["static"],
194
194
  :private => other["private"],
195
- :protected => other["meta"]["protected"],
195
+ :protected => other["protected"],
196
196
  } : nil
197
197
  }
198
198
  end
data/bin/jsduck CHANGED
@@ -17,11 +17,10 @@
17
17
  # For running when gem not installed
18
18
  $:.unshift File.dirname(File.dirname(__FILE__)) + "/lib"
19
19
 
20
+ require 'rubygems'
20
21
  require 'jsduck/app'
21
22
  require 'jsduck/options'
22
23
 
23
24
  opts = JsDuck::Options.new
24
25
  opts.parse!(ARGV)
25
- exit_code = JsDuck::App.new(opts).run
26
-
27
- exit exit_code
26
+ JsDuck::App.new(opts).run
data/jsduck.gemspec CHANGED
@@ -2,8 +2,8 @@ Gem::Specification.new do |s|
2
2
  s.required_rubygems_version = ">= 1.3.5"
3
3
 
4
4
  s.name = 'jsduck'
5
- s.version = '4.10.4'
6
- s.date = Time.new.strftime('%Y-%m-%d')
5
+ s.version = '5.0.0.beta01'
6
+ s.date = '2013-02-25'
7
7
  s.summary = "Simple JavaScript Duckumentation generator"
8
8
  s.description = "Documentation generator for Sencha JS frameworks"
9
9
  s.homepage = "https://github.com/senchalabs/jsduck"
@@ -22,8 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.add_dependency 'rdiscount'
23
23
  s.add_dependency 'json'
24
24
  s.add_dependency 'parallel'
25
- s.add_dependency 'execjs'
26
- s.add_dependency 'therubyracer', '>= 0.10.0'
25
+ s.add_dependency 'therubyracer', '>= 0.10.0', '< 0.11.0'
27
26
  s.add_dependency 'dimensions'
28
27
 
29
28
  s.add_development_dependency 'rspec'
@@ -1,16 +1,14 @@
1
- require 'jsduck/class'
2
- require 'jsduck/accessors'
3
1
  require 'jsduck/logger'
4
- require 'jsduck/enum'
5
- require 'jsduck/override'
6
2
 
7
3
  module JsDuck
8
4
 
9
- # Combines JavaScript Parser, DocParser and Merger.
10
- # Produces array of classes as result.
5
+ # Groups parsed documentation data from source files into classes.
6
+ #
7
+ # Produces Hash of classes as result. When a member is found that
8
+ # doesn't belong to any class, it's placed into special "global"
9
+ # class.
11
10
  class Aggregator
12
11
  def initialize
13
- @documentation = []
14
12
  @classes = {}
15
13
  @alt_names = {}
16
14
  @orphans = []
@@ -28,6 +26,18 @@ module JsDuck
28
26
  file.each {|doc| register(doc) }
29
27
  end
30
28
 
29
+ # Returns the final result which is a Hash of all classes indexed
30
+ # by name. It's a hash because some processors applied to this
31
+ # returned classes list need a random-access look up classes by
32
+ # name.
33
+ def result
34
+ classify_orphans
35
+ create_global_class
36
+ @classes
37
+ end
38
+
39
+ private
40
+
31
41
  # Registers documentation node either as class or as member of
32
42
  # some class.
33
43
  def register(node)
@@ -52,7 +62,6 @@ module JsDuck
52
62
  @current_class = old_cls
53
63
  else
54
64
  @current_class = cls
55
- @documentation << cls
56
65
  @classes[cls[:name]] = cls
57
66
 
58
67
  # Register all alternate names of class for lookup too
@@ -67,7 +76,6 @@ module JsDuck
67
76
  # it by merging the class with alt-name into this class.
68
77
  if @classes[altname]
69
78
  merge_classes(cls, @classes[altname])
70
- @documentation.delete(@classes[altname])
71
79
  @classes.delete(altname)
72
80
  warn_alt_name(cls)
73
81
  end
@@ -91,12 +99,8 @@ module JsDuck
91
99
  old[tag] = old[tag] || new[tag]
92
100
  end
93
101
  # Merge arrays
94
- [:mixins, :alternateClassNames, :files].each do |tag|
95
- old[tag] = old[tag] + new[tag]
96
- end
97
- # Merge meta hashes
98
- new[:meta].each_pair do |name, value|
99
- old[:meta][name] = old[:meta][name] || value
102
+ [:mixins, :alternateClassNames, :requires, :uses, :files].each do |tag|
103
+ old[tag] = (old[tag] || []) + (new[tag] || [])
100
104
  end
101
105
  # Merge hashes of arrays
102
106
  [:aliases].each do |tag|
@@ -120,7 +124,7 @@ module JsDuck
120
124
  # When no class precedes them - they too are orphaned.
121
125
  def add_member(node)
122
126
  # Completely ignore member if @ignore used
123
- return if node[:meta][:ignore]
127
+ return if node[:ignore]
124
128
 
125
129
  if node[:owner]
126
130
  if @classes[node[:owner]]
@@ -156,9 +160,7 @@ module JsDuck
156
160
  # Creates classes for orphans that have :owner property defined,
157
161
  # and then inserts orphans to these classes.
158
162
  def classify_orphans
159
- # Clone the orphans array first to avoid problems with
160
- # #inster_orphan method deleting items from @orphans array.
161
- @orphans.clone.each do |orph|
163
+ @orphans.each do |orph|
162
164
  if orph[:owner]
163
165
  class_name = orph[:owner]
164
166
  if !@classes[class_name]
@@ -187,73 +189,12 @@ module JsDuck
187
189
  :tagname => :class,
188
190
  :name => name,
189
191
  :doc => doc,
190
- :mixins => [],
191
192
  :alternateClassNames => [],
192
193
  :members => [],
193
194
  :aliases => {},
194
- :meta => {},
195
195
  :files => [{:filename => "", :linenr => 0, :href => ""}],
196
196
  })
197
197
  end
198
-
199
- # Gets rid of classes marked with @ignore
200
- def remove_ignored_classes
201
- @documentation.delete_if do |cls|
202
- if cls[:meta][:ignore]
203
- @classes.delete(cls["name"])
204
- true
205
- end
206
- end
207
- end
208
-
209
- # Appends Ext4 options parameter to each event parameter list.
210
- def append_ext4_event_options
211
- options = {
212
- :tagname => :param,
213
- :name => "eOpts",
214
- :type => "Object",
215
- :doc => "The options object passed to {@link Ext.util.Observable#addListener}."
216
- }
217
- @classes.each_value do |cls|
218
- cls[:members].each do |m|
219
- m[:params] << options if m[:tagname] == :event
220
- end
221
- end
222
- end
223
-
224
- # Creates accessor method for configs marked with @accessor
225
- def create_accessors
226
- accessors = Accessors.new
227
- @classes.each_value do |cls|
228
- accessors.create(cls)
229
- end
230
- end
231
-
232
- # Loops through all enums and auto-detects their types if needed.
233
- def process_enums
234
- Enum.new(@classes).process_all!
235
- end
236
-
237
- # Processes all overrides.
238
- # Returns list of override classes.
239
- def process_overrides
240
- Override.new(@classes).process_all!.map do |cls|
241
- # discard each override class
242
- @classes.delete(cls[:name])
243
- @documentation.delete(cls)
244
- cls
245
- end
246
- end
247
-
248
- # Are we dealing with ExtJS 4?
249
- # True if any of the classes is defined with Ext.define()
250
- def ext4?
251
- @documentation.any? {|cls| cls[:code_type] == :ext_define }
252
- end
253
-
254
- def result
255
- @documentation + @orphans
256
- end
257
198
  end
258
199
 
259
200
  end
data/lib/jsduck/app.rb CHANGED
@@ -1,9 +1,9 @@
1
1
  require 'jsduck/batch_parser'
2
+ require 'jsduck/batch_processor'
2
3
  require 'jsduck/assets'
3
- require 'jsduck/meta_tag_registry'
4
+ require 'jsduck/tag_registry'
4
5
  require 'jsduck/export_writer'
5
6
  require 'jsduck/web_writer'
6
- require 'jsduck/logger'
7
7
 
8
8
  module JsDuck
9
9
 
@@ -15,7 +15,6 @@ module JsDuck
15
15
  end
16
16
 
17
17
  # Main App logic.
18
- # Returns application exit code.
19
18
  def run
20
19
  parse
21
20
 
@@ -26,27 +25,21 @@ module JsDuck
26
25
  else
27
26
  generate_web_page
28
27
  end
29
-
30
- if @opts.warnings_exit_nonzero && Logger.warnings_logged?
31
- return 2
32
- else
33
- return 0
34
- end
35
28
  end
36
29
 
37
30
  private
38
31
 
39
32
  def parse
40
- @batch_parser = BatchParser.new(@opts)
41
- @relations = @batch_parser.run
33
+ @parsed_files = BatchParser.parse(@opts)
34
+ @relations = BatchProcessor.process(@parsed_files, @opts)
42
35
  end
43
36
 
44
37
  def init_assets
45
38
  # Initialize guides, videos, examples, ...
46
39
  @assets = Assets.new(@relations, @opts)
47
40
 
48
- # Give access to assets from all meta-tags
49
- MetaTagRegistry.instance.assets = @assets
41
+ # HACK: Give access to assets from @aside tag
42
+ TagRegistry.get_by_name(:aside).assets = @assets
50
43
  end
51
44
 
52
45
  def generate_export
@@ -54,7 +47,7 @@ module JsDuck
54
47
  end
55
48
 
56
49
  def generate_web_page
57
- WebWriter.new(@relations, @assets, @batch_parser.parsed_files, @opts).write
50
+ WebWriter.new(@relations, @assets, @parsed_files, @opts).write
58
51
  end
59
52
 
60
53
  end
@@ -1,7 +1,7 @@
1
1
  require 'jsduck/util/json'
2
2
  require 'jsduck/icons'
3
3
  require 'jsduck/search_data'
4
- require 'jsduck/meta_tag_registry'
4
+ require 'jsduck/tag_registry'
5
5
 
6
6
  module JsDuck
7
7
 
@@ -21,17 +21,16 @@ module JsDuck
21
21
  :guides => @assets.guides.to_array,
22
22
  :videos => @assets.videos.to_array,
23
23
  :examples => @assets.examples.to_array,
24
- :search => SearchData.new.create(@relations.classes, @assets, @opts),
25
- :guideSearch => @opts.search,
24
+ :search => SearchData.new.create(@relations.classes, @assets),
26
25
  :tests => @opts.tests,
27
- :signatures => MetaTagRegistry.instance.signatures,
26
+ :signatures => TagRegistry.signatures,
27
+ :memberTypes => TagRegistry.member_types,
28
28
  :localStorageDb => @opts.local_storage_db,
29
29
  :showPrintButton => @opts.seo,
30
30
  :touchExamplesUi => @opts.touch_examples_ui,
31
31
  :source => @opts.source,
32
32
  :commentsUrl => @opts.comments_url,
33
33
  :commentsDomain => @opts.comments_domain,
34
- :message => @opts.message,
35
34
  }
36
35
  }) + ";\n"
37
36
  File.open(filename, 'w') {|f| f.write(js) }