jsduck 4.0.1 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. data/Rakefile +14 -0
  2. data/esprima/esprima.js +210 -85
  3. data/jsduck.gemspec +3 -3
  4. data/lib/jsduck/accessors.rb +10 -8
  5. data/lib/jsduck/aggregator.rb +7 -7
  6. data/lib/jsduck/app.rb +24 -164
  7. data/lib/jsduck/app_data.rb +2 -4
  8. data/lib/jsduck/assets.rb +5 -2
  9. data/lib/jsduck/ast.rb +9 -4
  10. data/lib/jsduck/batch_formatter.rb +54 -0
  11. data/lib/jsduck/batch_parser.rb +106 -0
  12. data/lib/jsduck/categories.rb +5 -6
  13. data/lib/jsduck/class.rb +77 -239
  14. data/lib/jsduck/class_doc_expander.rb +0 -5
  15. data/lib/jsduck/class_formatter.rb +14 -10
  16. data/lib/jsduck/class_name.rb +23 -0
  17. data/lib/jsduck/class_writer.rb +9 -8
  18. data/lib/jsduck/doc_ast.rb +5 -6
  19. data/lib/jsduck/doc_formatter.rb +61 -272
  20. data/lib/jsduck/enum.rb +4 -4
  21. data/lib/jsduck/esprima.rb +10 -4
  22. data/lib/jsduck/examples.rb +5 -5
  23. data/lib/jsduck/export_writer.rb +62 -0
  24. data/lib/jsduck/exporter/app.rb +62 -0
  25. data/lib/jsduck/exporter/examples.rb +58 -0
  26. data/lib/jsduck/exporter/full.rb +60 -0
  27. data/lib/jsduck/file_categories.rb +7 -4
  28. data/lib/jsduck/function_ast.rb +99 -0
  29. data/lib/jsduck/grouped_asset.rb +27 -16
  30. data/lib/jsduck/guide_writer.rb +8 -7
  31. data/lib/jsduck/guides.rb +31 -29
  32. data/lib/jsduck/icons.rb +12 -1
  33. data/lib/jsduck/images.rb +3 -3
  34. data/lib/jsduck/importer.rb +7 -7
  35. data/lib/jsduck/index_html.rb +20 -6
  36. data/lib/jsduck/inherit_doc.rb +9 -12
  37. data/lib/jsduck/inline/example.rb +42 -0
  38. data/lib/jsduck/inline/img.rb +55 -0
  39. data/lib/jsduck/inline/link.rb +227 -0
  40. data/lib/jsduck/inline/video.rb +67 -0
  41. data/lib/jsduck/inline_examples.rb +7 -7
  42. data/lib/jsduck/js_parser.rb +5 -4
  43. data/lib/jsduck/lint.rb +14 -2
  44. data/lib/jsduck/logger.rb +5 -6
  45. data/lib/jsduck/members_index.rb +132 -0
  46. data/lib/jsduck/merger.rb +3 -9
  47. data/lib/jsduck/options.rb +39 -41
  48. data/lib/jsduck/override.rb +3 -7
  49. data/lib/jsduck/relations.rb +9 -9
  50. data/lib/jsduck/renderer.rb +3 -3
  51. data/lib/jsduck/return_values.rb +72 -0
  52. data/lib/jsduck/search_data.rb +16 -20
  53. data/lib/jsduck/shortener.rb +58 -0
  54. data/lib/jsduck/signature_renderer.rb +1 -2
  55. data/lib/jsduck/source/file.rb +98 -0
  56. data/lib/jsduck/source/file_parser.rb +72 -0
  57. data/lib/jsduck/source/writer.rb +89 -0
  58. data/lib/jsduck/tag/aside.rb +1 -1
  59. data/lib/jsduck/tag/since.rb +1 -1
  60. data/lib/jsduck/template_dir.rb +2 -2
  61. data/lib/jsduck/util/html.rb +27 -0
  62. data/lib/jsduck/util/io.rb +32 -0
  63. data/lib/jsduck/util/json.rb +60 -0
  64. data/lib/jsduck/util/null_object.rb +23 -0
  65. data/lib/jsduck/util/os.rb +14 -0
  66. data/lib/jsduck/util/parallel.rb +34 -0
  67. data/lib/jsduck/util/singleton.rb +35 -0
  68. data/lib/jsduck/util/stdout.rb +33 -0
  69. data/lib/jsduck/videos.rb +5 -5
  70. data/lib/jsduck/web_writer.rb +79 -0
  71. data/lib/jsduck/welcome.rb +6 -6
  72. data/spec/class_factory.rb +20 -0
  73. metadata +32 -20
  74. data/lib/jsduck/api_exporter.rb +0 -48
  75. data/lib/jsduck/app_exporter.rb +0 -60
  76. data/lib/jsduck/examples_exporter.rb +0 -56
  77. data/lib/jsduck/full_exporter.rb +0 -35
  78. data/lib/jsduck/html.rb +0 -25
  79. data/lib/jsduck/inline_img.rb +0 -53
  80. data/lib/jsduck/inline_video.rb +0 -58
  81. data/lib/jsduck/io.rb +0 -30
  82. data/lib/jsduck/json_duck.rb +0 -52
  83. data/lib/jsduck/lexer.rb +0 -251
  84. data/lib/jsduck/null_object.rb +0 -19
  85. data/lib/jsduck/os.rb +0 -11
  86. data/lib/jsduck/parallel_wrap.rb +0 -32
  87. data/lib/jsduck/source_file.rb +0 -97
  88. data/lib/jsduck/source_file_parser.rb +0 -70
  89. data/lib/jsduck/source_writer.rb +0 -87
  90. data/lib/jsduck/stats.rb +0 -103
  91. data/lib/jsduck/stdout.rb +0 -31
@@ -1,5 +1,5 @@
1
- require 'jsduck/null_object'
2
- require 'jsduck/io'
1
+ require 'jsduck/util/null_object'
2
+ require 'jsduck/util/io'
3
3
 
4
4
  module JsDuck
5
5
 
@@ -9,18 +9,18 @@ module JsDuck
9
9
  if filename
10
10
  Welcome.new(filename)
11
11
  else
12
- NullObject.new(:to_html => "")
12
+ Util::NullObject.new(:to_html => "")
13
13
  end
14
14
  end
15
15
 
16
16
  # Parses welcome HTML file with content for welcome page.
17
17
  def initialize(filename)
18
- @html = JsDuck::IO.read(filename)
18
+ @html = Util::IO.read(filename)
19
19
  end
20
20
 
21
21
  # Returns the HTML
22
- def to_html
23
- "<div id='welcome-content' style='display:none'>#{@html}</div>"
22
+ def to_html(style="")
23
+ "<div id='welcome-content' style='#{style}'>#{@html}</div>"
24
24
  end
25
25
 
26
26
  end
@@ -0,0 +1,20 @@
1
+ require "jsduck/class"
2
+
3
+ # A helper for easy creation of classes in tests
4
+ #
5
+ # Allows simplified members hashes to be used.
6
+ module Helper
7
+ class ClassFactory
8
+ def self.create(cfg)
9
+ cfg[:members].each do |m|
10
+ m[:tagname] = :property unless m[:tagname]
11
+ m[:owner] = cfg[:name]
12
+ m[:meta] = {} unless m[:meta]
13
+ m[:meta][:static] = true if m[:static]
14
+ m[:id] = JsDuck::Class.member_id(m)
15
+ end
16
+
17
+ JsDuck::Class.new(cfg)
18
+ end
19
+ end
20
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsduck
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-21 00:00:00.000000000 Z
13
+ date: 2012-09-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rdiscount
@@ -150,17 +150,18 @@ files:
150
150
  - jsduck.gemspec
151
151
  - lib/jsduck/accessors.rb
152
152
  - lib/jsduck/aggregator.rb
153
- - lib/jsduck/api_exporter.rb
154
153
  - lib/jsduck/app.rb
155
154
  - lib/jsduck/app_data.rb
156
- - lib/jsduck/app_exporter.rb
157
155
  - lib/jsduck/assets.rb
158
156
  - lib/jsduck/ast.rb
159
157
  - lib/jsduck/auto_categories.rb
158
+ - lib/jsduck/batch_formatter.rb
159
+ - lib/jsduck/batch_parser.rb
160
160
  - lib/jsduck/categories.rb
161
161
  - lib/jsduck/class.rb
162
162
  - lib/jsduck/class_doc_expander.rb
163
163
  - lib/jsduck/class_formatter.rb
164
+ - lib/jsduck/class_name.rb
164
165
  - lib/jsduck/class_writer.rb
165
166
  - lib/jsduck/css_lexer.rb
166
167
  - lib/jsduck/css_parser.rb
@@ -172,48 +173,47 @@ files:
172
173
  - lib/jsduck/esprima.rb
173
174
  - lib/jsduck/evaluator.rb
174
175
  - lib/jsduck/examples.rb
175
- - lib/jsduck/examples_exporter.rb
176
+ - lib/jsduck/export_writer.rb
177
+ - lib/jsduck/exporter/app.rb
178
+ - lib/jsduck/exporter/examples.rb
179
+ - lib/jsduck/exporter/full.rb
176
180
  - lib/jsduck/file_categories.rb
177
- - lib/jsduck/full_exporter.rb
181
+ - lib/jsduck/function_ast.rb
178
182
  - lib/jsduck/grouped_asset.rb
179
183
  - lib/jsduck/guide_writer.rb
180
184
  - lib/jsduck/guides.rb
181
- - lib/jsduck/html.rb
182
185
  - lib/jsduck/icons.rb
183
186
  - lib/jsduck/images.rb
184
187
  - lib/jsduck/importer.rb
185
188
  - lib/jsduck/index_html.rb
186
189
  - lib/jsduck/inherit_doc.rb
190
+ - lib/jsduck/inline/example.rb
191
+ - lib/jsduck/inline/img.rb
192
+ - lib/jsduck/inline/link.rb
193
+ - lib/jsduck/inline/video.rb
187
194
  - lib/jsduck/inline_examples.rb
188
- - lib/jsduck/inline_img.rb
189
- - lib/jsduck/inline_video.rb
190
- - lib/jsduck/io.rb
191
195
  - lib/jsduck/js_parser.rb
192
- - lib/jsduck/json_duck.rb
193
- - lib/jsduck/lexer.rb
194
196
  - lib/jsduck/lint.rb
195
197
  - lib/jsduck/logger.rb
198
+ - lib/jsduck/members_index.rb
196
199
  - lib/jsduck/merger.rb
197
200
  - lib/jsduck/meta_tag.rb
198
201
  - lib/jsduck/meta_tag_loader.rb
199
202
  - lib/jsduck/meta_tag_registry.rb
200
203
  - lib/jsduck/meta_tag_renderer.rb
201
- - lib/jsduck/null_object.rb
202
204
  - lib/jsduck/option_parser.rb
203
205
  - lib/jsduck/options.rb
204
- - lib/jsduck/os.rb
205
206
  - lib/jsduck/override.rb
206
- - lib/jsduck/parallel_wrap.rb
207
207
  - lib/jsduck/relations.rb
208
208
  - lib/jsduck/renderer.rb
209
+ - lib/jsduck/return_values.rb
209
210
  - lib/jsduck/search_data.rb
210
211
  - lib/jsduck/serializer.rb
212
+ - lib/jsduck/shortener.rb
211
213
  - lib/jsduck/signature_renderer.rb
212
- - lib/jsduck/source_file.rb
213
- - lib/jsduck/source_file_parser.rb
214
- - lib/jsduck/source_writer.rb
215
- - lib/jsduck/stats.rb
216
- - lib/jsduck/stdout.rb
214
+ - lib/jsduck/source/file.rb
215
+ - lib/jsduck/source/file_parser.rb
216
+ - lib/jsduck/source/writer.rb
217
217
  - lib/jsduck/tag/abstract.rb
218
218
  - lib/jsduck/tag/aside.rb
219
219
  - lib/jsduck/tag/author.rb
@@ -235,10 +235,22 @@ files:
235
235
  - lib/jsduck/tag/template.rb
236
236
  - lib/jsduck/template_dir.rb
237
237
  - lib/jsduck/type_parser.rb
238
+ - lib/jsduck/util/html.rb
239
+ - lib/jsduck/util/io.rb
240
+ - lib/jsduck/util/json.rb
241
+ - lib/jsduck/util/null_object.rb
242
+ - lib/jsduck/util/os.rb
243
+ - lib/jsduck/util/parallel.rb
244
+ - lib/jsduck/util/singleton.rb
245
+ - lib/jsduck/util/stdout.rb
238
246
  - lib/jsduck/videos.rb
247
+ - lib/jsduck/web_writer.rb
239
248
  - lib/jsduck/welcome.rb
249
+ - spec/class_factory.rb
240
250
  - template-min/README.md
251
+ - template-min/Mobile_Detect.php
241
252
  - template-min/template.html
253
+ - template-min/index-template.html
242
254
  - template-min/eg-iframe.html
243
255
  - template-min/resources/images/component-m.png
244
256
  - template-min/resources/images/expandcollapse.png
@@ -1,48 +0,0 @@
1
- require 'jsduck/json_duck'
2
- require 'jsduck/class'
3
-
4
- module JsDuck
5
-
6
- # Exporter for simple JSON format listing only class name and names
7
- # of all of its members.
8
- #
9
- # It produces the following structure:
10
- #
11
- # {
12
- # :name => "Panel",
13
- # :members => {
14
- # :cfg => ["width", "height", "title"],
15
- # :method => ["getWidth", "setWidth"],
16
- # ...
17
- # },
18
- # :statics => { ... }
19
- # }
20
- #
21
- class ApiExporter
22
- def initialize(relations, opts)
23
- # All params ignored, they're present to be compatible with
24
- # other exporters.
25
- end
26
-
27
- # Returns hash of class name and member names
28
- def export(cls)
29
- {
30
- :name => cls[:name],
31
- :members => export_members(cls, :members),
32
- :statics => export_members(cls, :statics),
33
- }
34
- end
35
-
36
- private
37
-
38
- def export_members(cls, context)
39
- h = {}
40
- Class.default_members_hash.each_key do |type|
41
- h[type] = cls.members(type, context).map {|m| m[:name] }
42
- end
43
- h
44
- end
45
-
46
- end
47
-
48
- end
@@ -1,60 +0,0 @@
1
- require 'jsduck/full_exporter'
2
- require 'jsduck/renderer'
3
- require 'jsduck/doc_formatter'
4
-
5
- module JsDuck
6
-
7
- # Exports data for Docs app.
8
- class AppExporter < FullExporter
9
- def initialize(relations, opts)
10
- super(relations, opts)
11
- @renderer = Renderer.new(opts)
12
- end
13
-
14
- # Returns compacted class data hash which contains an additional
15
- # :html field with full HTML to show on class overview page.
16
- def export(cls)
17
- data = super(cls)
18
- data[:html] = @renderer.render(data)
19
- return compact(data)
20
- end
21
-
22
- private
23
-
24
- # removes extra data from export
25
- def compact(cls)
26
- cls.delete(:doc)
27
- cls[:members] = compact_members_group(cls[:members])
28
- cls[:statics] = compact_members_group(cls[:statics])
29
- cls[:files] = compact_files(cls[:files])
30
- cls
31
- end
32
-
33
- def compact_members_group(group)
34
- c_group = {}
35
- group.each_pair do |type, members|
36
- c_group[type] = members.map {|m| compact_member(m) }
37
- end
38
- c_group
39
- end
40
-
41
- def compact_member(m)
42
- m_copy = {}
43
- [:name, :tagname, :owner, :meta, :id].each do |key|
44
- m_copy[key] = m[key]
45
- end
46
- m_copy
47
- end
48
-
49
- # Remove full path from filename for privacy considerations as the
50
- # path can reveal information about the system where JSDuck was
51
- # run. The docs app doesn't need to have this information.
52
- def compact_files(files)
53
- files.map do |f|
54
- {:filename => File.basename(f[:filename]), :href => f[:href]}
55
- end
56
- end
57
-
58
- end
59
-
60
- end
@@ -1,56 +0,0 @@
1
- require 'jsduck/inline_examples'
2
-
3
- module JsDuck
4
-
5
- # Exporter for inline examples.
6
- #
7
- # It produces the following structure:
8
- #
9
- # {
10
- # :type => :class, # can also be :guide
11
- # :name => "Panel",
12
- # :examples => [
13
- # {:code => "bla bla", :options => {}},
14
- # {:code => "bla bla", :options => {"raw" => true}},
15
- # ...
16
- # ]
17
- # }
18
- #
19
- class ExamplesExporter
20
- def initialize(relations, opts)
21
- # All params ignored, they're present to be compatible with
22
- # other exporters.
23
- @inline_examples = InlineExamples.new
24
- end
25
-
26
- # Returns hash of class name and inline examples
27
- def export(cls)
28
- examples = @inline_examples.extract(cls[:doc])
29
- if examples.length > 0
30
- {
31
- :type => :class,
32
- :name => cls[:name],
33
- :examples => examples,
34
- }
35
- else
36
- nil
37
- end
38
- end
39
-
40
- # Returns hash of guide name and inline examples
41
- def export_guide(guide)
42
- examples = @inline_examples.extract(guide[:html] || "")
43
- if examples.length > 0
44
- {
45
- :type => :guide,
46
- :name => guide["name"],
47
- :examples => examples,
48
- }
49
- else
50
- nil
51
- end
52
- end
53
-
54
- end
55
-
56
- end
@@ -1,35 +0,0 @@
1
- require 'jsduck/class'
2
-
3
- module JsDuck
4
-
5
- # Exporter for all the class docs.
6
- class FullExporter
7
- def initialize(relations, opts)
8
- @relations = relations
9
- # opts parameter is here just for compatibility with other exporters
10
- end
11
-
12
- # Returns all data in Class object as hash.
13
- def export(cls)
14
- h = cls.to_hash
15
- h[:members] = {}
16
- Class.default_members_hash.each_key do |key|
17
- h[:members][key] = cls.members(key)
18
- h[:statics][key] = cls.members(key, :statics)
19
- end
20
- h[:component] = cls.inherits_from?("Ext.Component")
21
- h[:superclasses] = cls.superclasses.collect {|c| c.full_name }
22
- h[:subclasses] = @relations.subclasses(cls).collect {|c| c.full_name }
23
- h[:mixedInto] = @relations.mixed_into(cls).collect {|c| c.full_name }
24
-
25
- h[:mixins] = cls.deps(:mixins).collect {|c| c.full_name }
26
- h[:parentMixins] = cls.parent_deps(:mixins).collect {|c| c.full_name }
27
- h[:requires] = cls.deps(:requires).collect {|c| c.full_name }
28
- h[:uses] = cls.deps(:uses).collect {|c| c.full_name }
29
-
30
- h
31
- end
32
-
33
- end
34
-
35
- end
@@ -1,25 +0,0 @@
1
- require 'cgi'
2
-
3
- module JsDuck
4
-
5
- # Helpers for dealing with HTML
6
- class HTML
7
-
8
- # Strips tags from HTML text
9
- def self.strip_tags(html)
10
- html.gsub(/<.*?>/, "")
11
- end
12
-
13
- # Escapes HTML, replacing < with &lt; ...
14
- def self.escape(html)
15
- CGI.escapeHTML(html)
16
- end
17
-
18
- # Unescapes HTML, replacing &lt; with < ...
19
- def self.unescape(html)
20
- CGI.unescapeHTML(html)
21
- end
22
-
23
- end
24
-
25
- end
@@ -1,53 +0,0 @@
1
- require 'jsduck/html'
2
- require 'jsduck/logger'
3
-
4
- module JsDuck
5
-
6
- # Implementation of inline tag {@img}
7
- class InlineImg
8
- # Base path to prefix images from {@img} tags.
9
- # Defaults to no prefix.
10
- attr_accessor :base_path
11
-
12
- # This will hold list of all image paths gathered from {@img} tags.
13
- attr_accessor :images
14
-
15
- def initialize(opts={})
16
- @tpl = opts[:img_tpl] || '<img src="%u" alt="%a"/>'
17
-
18
- @re = /\{@img\s+(\S*?)(?:\s+(.+?))?\}/m
19
-
20
- @base_path = nil
21
- @images = []
22
- end
23
-
24
- # Takes StringScanner instance.
25
- #
26
- # Looks for inline tag at the current scan pointer position, when
27
- # found, moves scan pointer forward and performs the apporpriate
28
- # replacement.
29
- def replace(input)
30
- if input.check(@re)
31
- input.scan(@re).sub(@re) { apply_tpl($1, $2) }
32
- else
33
- false
34
- end
35
- end
36
-
37
- # applies the image template
38
- def apply_tpl(url, alt_text)
39
- @images << url
40
- @tpl.gsub(/(%\w)/) do
41
- case $1
42
- when '%u'
43
- @base_path ? (@base_path + "/" + url) : url
44
- when '%a'
45
- HTML.escape(alt_text||"")
46
- else
47
- $1
48
- end
49
- end
50
- end
51
- end
52
-
53
- end