jsduck 5.3.4 → 6.0.0beta
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.
- 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
|