jsduck 5.3.4 → 6.0.0beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/bin/jsduck +3 -3
- data/lib/jsduck/app.rb +1 -1
- data/lib/jsduck/assets.rb +3 -3
- data/lib/jsduck/base_type.rb +2 -2
- data/lib/jsduck/batch_processor.rb +3 -1
- data/lib/jsduck/categories/file.rb +2 -2
- data/lib/jsduck/class_doc_expander.rb +1 -1
- data/lib/jsduck/css/parser.rb +59 -90
- data/lib/jsduck/css/type.rb +55 -0
- data/lib/jsduck/doc/parser.rb +1 -1
- data/lib/jsduck/doc/scanner.rb +2 -2
- data/lib/jsduck/doc/subproperties.rb +1 -1
- data/lib/jsduck/export_writer.rb +4 -4
- data/lib/jsduck/exporter/app.rb +2 -1
- data/lib/jsduck/exporter/full.rb +5 -3
- data/lib/jsduck/external_classes.rb +337 -5
- data/lib/jsduck/format/class.rb +3 -3
- data/lib/jsduck/format/doc.rb +6 -5
- data/lib/jsduck/format/subproperties.rb +1 -1
- data/lib/jsduck/guide_toc.rb +45 -27
- data/lib/jsduck/guide_toc_entry.rb +54 -0
- data/lib/jsduck/guides.rb +9 -5
- data/lib/jsduck/img/dir.rb +1 -1
- data/lib/jsduck/inline/example.rb +3 -1
- data/lib/jsduck/inline/img.rb +3 -3
- data/lib/jsduck/inline/link.rb +2 -2
- data/lib/jsduck/inline/link_renderer.rb +3 -2
- data/lib/jsduck/inline/video.rb +2 -1
- data/lib/jsduck/js/class.rb +6 -11
- data/lib/jsduck/js/ext_define.rb +46 -0
- data/lib/jsduck/js/ext_patterns.rb +7 -2
- data/lib/jsduck/js/rkelly_adapter.rb +16 -2
- data/lib/jsduck/logger.rb +40 -25
- data/lib/jsduck/member_registry.rb +41 -0
- data/lib/jsduck/news.rb +18 -5
- data/lib/jsduck/options/config.rb +35 -0
- data/lib/jsduck/options/helpful_parser.rb +111 -0
- data/lib/jsduck/options/input_files.rb +60 -0
- data/lib/jsduck/options/jsb.rb +25 -0
- data/lib/jsduck/{options.rb → options/parser.rb} +436 -484
- data/lib/jsduck/options/processor.rb +47 -0
- data/lib/jsduck/options/record.rb +51 -0
- data/lib/jsduck/output_dir.rb +4 -4
- data/lib/jsduck/parser.rb +5 -5
- data/lib/jsduck/process/components.rb +19 -0
- data/lib/jsduck/process/ext4_events.rb +4 -2
- data/lib/jsduck/process/importer.rb +5 -2
- data/lib/jsduck/process/inherit_members.rb +2 -0
- data/lib/jsduck/process/lint.rb +3 -3
- data/lib/jsduck/process/no_doc.rb +1 -1
- data/lib/jsduck/process/overrides.rb +4 -3
- data/lib/jsduck/process/versions.rb +86 -51
- data/lib/jsduck/render/class.rb +3 -2
- data/lib/jsduck/render/subproperties.rb +18 -0
- data/lib/jsduck/render/tags.rb +13 -1
- data/lib/jsduck/source/file.rb +2 -2
- data/lib/jsduck/tag/class.rb +6 -0
- data/lib/jsduck/tag/component.rb +19 -0
- data/lib/jsduck/tag/css_mixin.rb +10 -0
- data/lib/jsduck/tag/deprecated.rb +1 -1
- data/{template-min/resources/images/class-m.png → lib/jsduck/tag/icons/class-large.png} +0 -0
- data/lib/jsduck/tag/icons/class-redirect.png +0 -0
- data/lib/jsduck/tag/icons/class.png +0 -0
- data/{template-min/resources/images/component-m.png → lib/jsduck/tag/icons/component-large.png} +0 -0
- data/lib/jsduck/tag/icons/component-redirect.png +0 -0
- data/lib/jsduck/tag/icons/component.png +0 -0
- data/{template-min/resources/images/singleton-m.png → lib/jsduck/tag/icons/singleton-large.png} +0 -0
- data/lib/jsduck/tag/icons/singleton-redirect.png +0 -0
- data/lib/jsduck/tag/icons/singleton.png +0 -0
- data/lib/jsduck/tag/inheritdoc.rb +2 -2
- data/lib/jsduck/tag/new.rb +13 -0
- data/lib/jsduck/tag/since.rb +2 -2
- data/lib/jsduck/tag/singleton.rb +13 -0
- data/lib/jsduck/tag/tag.rb +19 -0
- data/lib/jsduck/tag_registry.rb +20 -81
- data/lib/jsduck/util/io.rb +5 -0
- data/lib/jsduck/util/json.rb +3 -3
- data/lib/jsduck/util/null_object.rb +14 -1
- data/lib/jsduck/util/parallel.rb +7 -3
- data/lib/jsduck/version.rb +1 -1
- data/lib/jsduck/warning/registry.rb +4 -2
- data/lib/jsduck/warning/tag.rb +57 -0
- data/lib/jsduck/web/class_icons.rb +76 -0
- data/lib/jsduck/web/css.rb +12 -1
- data/lib/jsduck/web/data.rb +4 -3
- data/lib/jsduck/web/index_html.rb +26 -10
- data/lib/jsduck/web/member_icons.rb +3 -3
- data/lib/jsduck/web/search.rb +4 -4
- data/lib/jsduck/web/source.rb +1 -1
- data/lib/jsduck/web/template.rb +6 -6
- data/lib/jsduck/web/tree.rb +22 -0
- data/lib/jsduck/web/writer.rb +11 -9
- data/template-min/app-0f524ddd276c4019a11a6128932a9c96.js +1 -0
- data/template-min/index-template.html +1 -1
- data/template-min/print-template.html +1 -1
- data/template-min/resources/css/{app-4689d2a5522dcd3c9e9923ca59c33f27.css → app-de670120f43fdad3091a0cc2c10daadb.css} +1 -1
- data/template-min/resources/images/icons.xcf +0 -0
- data/template-min/template.html +2 -2
- metadata +46 -13
- data/lib/jsduck/css/lexer.rb +0 -203
- data/lib/jsduck/option_parser.rb +0 -109
- data/lib/jsduck/web/icons.rb +0 -31
- data/template-min/app-0c945a27f43452df695771ddb60b3d14.js +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 22b2eee9a27379a8bcb0c152fd6749ac45803aae
|
4
|
+
data.tar.gz: 19aca3cbd478c9b9c9dd917a50950580d461ad3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18f5f78668b4d1ccc721ab6e0c6fc4e2b07716a524269d6d87bbca2d02b87505e46cbc4f5e27e0c54f451bd40266bf09bbc60f7c9322033a732b9bf6797d0b0a
|
7
|
+
data.tar.gz: 8d73b981ebc7e1edaadb280b5bd59293ecdb91d54aa98be139c63f53286a8ca7cbcfaa1694e586efa624371cc03edd7d99c2f77f6c984976a23312205574eeb7
|
data/README.md
CHANGED
@@ -98,7 +98,7 @@ Who's using JSDuck?
|
|
98
98
|
- [CKEditor](http://docs.ckeditor.com)
|
99
99
|
- [GeoExt 2](https://github.com/geoext/geoext2)
|
100
100
|
- Rally Software [Rally App SDK](https://prod.help.rallydev.com/apps/2.0rc1/doc/)
|
101
|
-
- Wikimedia Foundation [
|
101
|
+
- Wikimedia Foundation [MediaWiki](https://doc.wikimedia.org/mediawiki-core/master/js/)
|
102
102
|
and [VisualEditor](https://doc.wikimedia.org/VisualEditor/master/)
|
103
103
|
- [Sencha](http://docs.sencha.com) - obviously :)
|
104
104
|
|
@@ -148,7 +148,7 @@ input.
|
|
148
148
|
Changelog
|
149
149
|
---------
|
150
150
|
|
151
|
-
See [the Releases page](https://github.com/senchalabs/jsduck/
|
151
|
+
See [the Releases page](https://github.com/senchalabs/jsduck/releases).
|
152
152
|
|
153
153
|
|
154
154
|
More questions?
|
data/bin/jsduck
CHANGED
@@ -18,10 +18,10 @@
|
|
18
18
|
$:.unshift File.dirname(File.dirname(__FILE__)) + "/lib"
|
19
19
|
|
20
20
|
require 'jsduck/app'
|
21
|
-
require 'jsduck/options'
|
21
|
+
require 'jsduck/options/processor'
|
22
|
+
|
23
|
+
opts = JsDuck::Options::Processor.process(ARGV)
|
22
24
|
|
23
|
-
opts = JsDuck::Options.new
|
24
|
-
opts.parse!(ARGV)
|
25
25
|
exit_code = JsDuck::App.new(opts).run
|
26
26
|
|
27
27
|
exit exit_code
|
data/lib/jsduck/app.rb
CHANGED
data/lib/jsduck/assets.rb
CHANGED
@@ -36,7 +36,7 @@ module JsDuck
|
|
36
36
|
@guides = Guides.create(@opts.guides, doc_formatter, @opts)
|
37
37
|
@videos = Videos.create(@opts.videos)
|
38
38
|
@examples = Examples.create(@opts.examples, @opts)
|
39
|
-
@categories = Categories::Factory.create(@opts.
|
39
|
+
@categories = Categories::Factory.create(@opts.categories, doc_formatter, @relations)
|
40
40
|
@news = News.create(@relations, doc_formatter, @opts)
|
41
41
|
end
|
42
42
|
|
@@ -45,8 +45,8 @@ module JsDuck
|
|
45
45
|
#
|
46
46
|
# Welcome page and categories are written in JsDuck::IndexHtml
|
47
47
|
def write
|
48
|
-
@guides.write(@opts.
|
49
|
-
Img::Writer.copy(@images.all_used, @opts.
|
48
|
+
@guides.write(@opts.output+"/guides")
|
49
|
+
Img::Writer.copy(@images.all_used, @opts.output+"/images")
|
50
50
|
end
|
51
51
|
|
52
52
|
end
|
data/lib/jsduck/base_type.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'jsduck/
|
1
|
+
require 'jsduck/member_registry'
|
2
2
|
|
3
3
|
module JsDuck
|
4
4
|
|
@@ -38,7 +38,7 @@ module JsDuck
|
|
38
38
|
# Returns the detected member type on success.
|
39
39
|
# Otherwise nil.
|
40
40
|
def self.detect_member(doc_map)
|
41
|
-
type =
|
41
|
+
type = MemberRegistry.names.find {|type| doc_map[type] }
|
42
42
|
|
43
43
|
if type == :cfg
|
44
44
|
# Only detect a single @cfg as a :cfg.
|
@@ -13,6 +13,7 @@ require 'jsduck/process/inherit_doc'
|
|
13
13
|
require 'jsduck/process/versions'
|
14
14
|
require 'jsduck/process/return_values'
|
15
15
|
require 'jsduck/process/fires'
|
16
|
+
require 'jsduck/process/components'
|
16
17
|
require 'jsduck/process/lint'
|
17
18
|
require 'jsduck/process/no_doc'
|
18
19
|
require 'jsduck/process/circular_deps'
|
@@ -61,7 +62,7 @@ module JsDuck
|
|
61
62
|
# classes inside Relations container.
|
62
63
|
def to_class_objects(docs, opts)
|
63
64
|
classes = docs.map {|d| Class.new(d) }
|
64
|
-
Relations.new(classes, opts.
|
65
|
+
Relations.new(classes, opts.external)
|
65
66
|
end
|
66
67
|
|
67
68
|
# Do all kinds of post-processing on Relations object.
|
@@ -71,6 +72,7 @@ module JsDuck
|
|
71
72
|
Process::Versions.new(relations, opts).process_all!
|
72
73
|
Process::ReturnValues.new(relations).process_all!
|
73
74
|
Process::Fires.new(relations).process_all!
|
75
|
+
Process::Components.new(relations).process_all!
|
74
76
|
Process::Lint.new(relations).process_all!
|
75
77
|
Process::NoDoc.new(relations).process_all!
|
76
78
|
relations
|
@@ -38,7 +38,7 @@ module JsDuck
|
|
38
38
|
end.map {|cls| cls[:name] }.sort
|
39
39
|
|
40
40
|
if classes.length == 0
|
41
|
-
Logger.warn(:cat_no_match, "No class found matching a pattern '#{name}' in categories file", @filename)
|
41
|
+
Logger.warn(:cat_no_match, "No class found matching a pattern '#{name}' in categories file", {:filename => @filename})
|
42
42
|
end
|
43
43
|
classes
|
44
44
|
end
|
@@ -58,7 +58,7 @@ module JsDuck
|
|
58
58
|
# Check that each existing non-private & non-deprecated class is listed
|
59
59
|
@relations.each do |cls|
|
60
60
|
unless listed_classes[cls[:name]] || cls[:private] || cls[:deprecated]
|
61
|
-
Logger.warn(:cat_class_missing, "Class '#{cls[:name]}' not found in categories file", @filename)
|
61
|
+
Logger.warn(:cat_class_missing, "Class '#{cls[:name]}' not found in categories file", {:filename => @filename})
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
data/lib/jsduck/css/parser.rb
CHANGED
@@ -1,120 +1,89 @@
|
|
1
|
-
require '
|
1
|
+
require 'sass'
|
2
|
+
require 'jsduck/css/type'
|
2
3
|
|
3
4
|
module JsDuck
|
4
5
|
module Css
|
5
6
|
|
7
|
+
# Parses SCSS using the official SASS parser.
|
6
8
|
class Parser
|
9
|
+
TYPE = Css::Type.new
|
10
|
+
|
7
11
|
def initialize(input, options = {})
|
8
|
-
@
|
12
|
+
@input = input
|
9
13
|
@docs = []
|
10
14
|
end
|
11
15
|
|
12
|
-
#
|
13
|
-
# that JavaScript parser does.
|
16
|
+
# Returns an array of docsets like the Js::Parser does.
|
14
17
|
def parse
|
15
|
-
|
16
|
-
|
17
|
-
comment = @lex.next(true)
|
18
|
-
@docs << {
|
19
|
-
:comment => comment[:value],
|
20
|
-
:linenr => comment[:linenr],
|
21
|
-
:code => code_block,
|
22
|
-
:type => :doc_comment,
|
23
|
-
}
|
24
|
-
else
|
25
|
-
@lex.next
|
26
|
-
end
|
27
|
-
end
|
18
|
+
root = Sass::Engine.new(@input, :syntax => :scss).to_tree
|
19
|
+
find_doc_comments(root.children)
|
28
20
|
@docs
|
29
21
|
end
|
30
22
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
23
|
+
private
|
24
|
+
|
25
|
+
def find_doc_comments(nodes)
|
26
|
+
prev_comment = nil
|
27
|
+
|
28
|
+
nodes.each do |node|
|
29
|
+
if prev_comment
|
30
|
+
@docs << make_docset(prev_comment, node)
|
31
|
+
prev_comment = nil
|
32
|
+
end
|
33
|
+
|
34
|
+
if node.class == Sass::Tree::CommentNode
|
35
|
+
if node.type == :normal && node.value[0] =~ /\A\/\*\*/
|
36
|
+
prev_comment = node
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
find_doc_comments(node.children)
|
40
41
|
end
|
41
|
-
end
|
42
42
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
return {
|
47
|
-
:tagname => :css_mixin,
|
48
|
-
:name => look(:ident) ? match(:ident) : nil,
|
49
|
-
}
|
43
|
+
if prev_comment
|
44
|
+
@docs << make_docset(prev_comment)
|
45
|
+
end
|
50
46
|
end
|
51
47
|
|
52
|
-
|
53
|
-
def var_declaration
|
54
|
-
name = match(:var)
|
55
|
-
match(":")
|
56
|
-
value_list = css_value
|
48
|
+
def make_docset(prev_comment, node=nil)
|
57
49
|
return {
|
58
|
-
:
|
59
|
-
:
|
60
|
-
:
|
61
|
-
:type =>
|
50
|
+
:comment => prev_comment.value[0].sub(/\A\/\*\*/, "").sub(/\*\/\z/, ""),
|
51
|
+
:linenr => prev_comment.line,
|
52
|
+
:code => analyze_code(node),
|
53
|
+
:type => :doc_comment,
|
62
54
|
}
|
63
55
|
end
|
64
56
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
"percentage"
|
83
|
-
when :string
|
84
|
-
"string"
|
85
|
-
when :hash
|
86
|
-
"color"
|
87
|
-
when :ident
|
88
|
-
case val[0][:value]
|
89
|
-
when "true", "false"
|
90
|
-
return "boolean"
|
91
|
-
when "rgb", "rgba", "hsl", "hsla"
|
92
|
-
return "color"
|
93
|
-
when "black", "silver", "gray", "white", "maroon",
|
94
|
-
"red", "purple", "fuchsia", "green", "lime", "olive",
|
95
|
-
"yellow", "navy", "blue", "teal", "aqua", "orange"
|
96
|
-
return "color"
|
97
|
-
when "transparent"
|
98
|
-
return "color"
|
99
|
-
end
|
57
|
+
def analyze_code(node)
|
58
|
+
if node.class == Sass::Tree::VariableNode
|
59
|
+
return {
|
60
|
+
:tagname => :css_var,
|
61
|
+
:name => "$" + node.name,
|
62
|
+
:default => node.expr.to_sass,
|
63
|
+
:type => TYPE.detect(node.expr),
|
64
|
+
}
|
65
|
+
elsif node.class == Sass::Tree::MixinDefNode
|
66
|
+
return {
|
67
|
+
:tagname => :css_mixin,
|
68
|
+
:name => node.name,
|
69
|
+
:params => build_params(node.args),
|
70
|
+
}
|
71
|
+
else
|
72
|
+
# Default to property like in Js::Parser.
|
73
|
+
return {:tagname => :property}
|
100
74
|
end
|
101
75
|
end
|
102
76
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
else
|
111
|
-
throw "Expected: " + args.join(", ")
|
77
|
+
def build_params(mixin_args)
|
78
|
+
mixin_args.map do |arg|
|
79
|
+
{
|
80
|
+
:name => "$" + arg[0].name,
|
81
|
+
:default => arg[1] ? arg[1].to_s : nil,
|
82
|
+
:type => arg[1] ? TYPE.detect(arg[1]) : nil,
|
83
|
+
}
|
112
84
|
end
|
113
85
|
end
|
114
86
|
|
115
|
-
def look(*args)
|
116
|
-
@lex.look(*args)
|
117
|
-
end
|
118
87
|
end
|
119
88
|
|
120
89
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'sass'
|
2
|
+
|
3
|
+
module JsDuck
|
4
|
+
module Css
|
5
|
+
|
6
|
+
class Type
|
7
|
+
# Given SASS expression node, determines its type.
|
8
|
+
# When unknown, return nil.
|
9
|
+
def detect(node)
|
10
|
+
if LITERAL_TYPES[node.class]
|
11
|
+
LITERAL_TYPES[node.class]
|
12
|
+
elsif node.class == Sass::Script::Funcall && COLOR_FUNCTIONS[node.name]
|
13
|
+
"color"
|
14
|
+
else
|
15
|
+
nil
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
LITERAL_TYPES = {
|
20
|
+
Sass::Script::Number => "number",
|
21
|
+
Sass::Script::String => "string",
|
22
|
+
Sass::Script::Color => "color",
|
23
|
+
Sass::Script::Bool => "boolean",
|
24
|
+
Sass::Script::List => "list",
|
25
|
+
}
|
26
|
+
|
27
|
+
COLOR_FUNCTIONS = {
|
28
|
+
# CSS3 builtins
|
29
|
+
"rgb" => true,
|
30
|
+
"rgba" => true,
|
31
|
+
"hsl" => true,
|
32
|
+
"hsla" => true,
|
33
|
+
# SASS builtins
|
34
|
+
"mix" => true,
|
35
|
+
"adjust-hue" => true,
|
36
|
+
"lighten" => true,
|
37
|
+
"darken" => true,
|
38
|
+
"saturate" => true,
|
39
|
+
"desaturate" => true,
|
40
|
+
"grayscale" => true,
|
41
|
+
"complement" => true,
|
42
|
+
"invert" => true,
|
43
|
+
"opacify" => true,
|
44
|
+
"fade-in" => true,
|
45
|
+
"transparentize" => true,
|
46
|
+
"fade-out" => true,
|
47
|
+
"adjust-color" => true,
|
48
|
+
"scale-color" => true,
|
49
|
+
"change-color" => true,
|
50
|
+
}
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
data/lib/jsduck/doc/parser.rb
CHANGED
data/lib/jsduck/doc/scanner.rb
CHANGED
@@ -61,7 +61,7 @@ module JsDuck
|
|
61
61
|
|
62
62
|
def warn(name, pos)
|
63
63
|
parent = name.sub(/\.[^.]*$/, '')
|
64
|
-
msg = "Ignoring subproperty '#{name}'
|
64
|
+
msg = "Ignoring subproperty '#{name}' no parent found with name '#{parent}'."
|
65
65
|
Logger.warn(:subproperty, msg, pos)
|
66
66
|
end
|
67
67
|
|
data/lib/jsduck/export_writer.rb
CHANGED
@@ -20,19 +20,19 @@ module JsDuck
|
|
20
20
|
def write
|
21
21
|
format_classes
|
22
22
|
|
23
|
-
clean_output_dir unless @opts.
|
23
|
+
clean_output_dir unless @opts.output == :stdout
|
24
24
|
|
25
25
|
export_classes
|
26
26
|
export_examples_in_guides if @opts.export == :examples
|
27
27
|
|
28
|
-
Util::Stdout.flush if @opts.
|
28
|
+
Util::Stdout.flush if @opts.output == :stdout
|
29
29
|
end
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
33
|
def export_classes
|
34
34
|
cw = ClassWriter.new(get_exporter, @relations, @opts)
|
35
|
-
cw.write(@opts.
|
35
|
+
cw.write(@opts.output, ".json")
|
36
36
|
end
|
37
37
|
|
38
38
|
def get_exporter
|
@@ -45,7 +45,7 @@ module JsDuck
|
|
45
45
|
|
46
46
|
def export_examples_in_guides
|
47
47
|
gw = GuideWriter.new(Exporter::Examples, @assets.guides, @opts)
|
48
|
-
gw.write(@opts.
|
48
|
+
gw.write(@opts.output, ".json")
|
49
49
|
end
|
50
50
|
|
51
51
|
# -- util routines --
|
data/lib/jsduck/exporter/app.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'jsduck/render/class'
|
2
2
|
require 'jsduck/exporter/full'
|
3
3
|
require 'jsduck/tag_registry'
|
4
|
+
require 'jsduck/web/class_icons'
|
4
5
|
|
5
6
|
module JsDuck
|
6
7
|
module Exporter
|
@@ -18,7 +19,7 @@ module JsDuck
|
|
18
19
|
def export(cls)
|
19
20
|
data = @full_exporter.export(cls)
|
20
21
|
|
21
|
-
data[:
|
22
|
+
data[:classIcon] = Web::ClassIcons.get(cls)
|
22
23
|
data[:superclasses] = cls.superclasses.collect {|c| c[:name] }
|
23
24
|
data[:subclasses] = @relations.subclasses(cls).collect {|c| c[:name] }.sort
|
24
25
|
data[:mixedInto] = @relations.mixed_into(cls).collect {|c| c[:name] }.sort
|