jsduck 4.0.1 → 4.1.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 (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