jsduck 4.0.1 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +14 -0
- data/esprima/esprima.js +210 -85
- data/jsduck.gemspec +3 -3
- data/lib/jsduck/accessors.rb +10 -8
- data/lib/jsduck/aggregator.rb +7 -7
- data/lib/jsduck/app.rb +24 -164
- data/lib/jsduck/app_data.rb +2 -4
- data/lib/jsduck/assets.rb +5 -2
- data/lib/jsduck/ast.rb +9 -4
- data/lib/jsduck/batch_formatter.rb +54 -0
- data/lib/jsduck/batch_parser.rb +106 -0
- data/lib/jsduck/categories.rb +5 -6
- data/lib/jsduck/class.rb +77 -239
- data/lib/jsduck/class_doc_expander.rb +0 -5
- data/lib/jsduck/class_formatter.rb +14 -10
- data/lib/jsduck/class_name.rb +23 -0
- data/lib/jsduck/class_writer.rb +9 -8
- data/lib/jsduck/doc_ast.rb +5 -6
- data/lib/jsduck/doc_formatter.rb +61 -272
- data/lib/jsduck/enum.rb +4 -4
- data/lib/jsduck/esprima.rb +10 -4
- data/lib/jsduck/examples.rb +5 -5
- data/lib/jsduck/export_writer.rb +62 -0
- data/lib/jsduck/exporter/app.rb +62 -0
- data/lib/jsduck/exporter/examples.rb +58 -0
- data/lib/jsduck/exporter/full.rb +60 -0
- data/lib/jsduck/file_categories.rb +7 -4
- data/lib/jsduck/function_ast.rb +99 -0
- data/lib/jsduck/grouped_asset.rb +27 -16
- data/lib/jsduck/guide_writer.rb +8 -7
- data/lib/jsduck/guides.rb +31 -29
- data/lib/jsduck/icons.rb +12 -1
- data/lib/jsduck/images.rb +3 -3
- data/lib/jsduck/importer.rb +7 -7
- data/lib/jsduck/index_html.rb +20 -6
- data/lib/jsduck/inherit_doc.rb +9 -12
- data/lib/jsduck/inline/example.rb +42 -0
- data/lib/jsduck/inline/img.rb +55 -0
- data/lib/jsduck/inline/link.rb +227 -0
- data/lib/jsduck/inline/video.rb +67 -0
- data/lib/jsduck/inline_examples.rb +7 -7
- data/lib/jsduck/js_parser.rb +5 -4
- data/lib/jsduck/lint.rb +14 -2
- data/lib/jsduck/logger.rb +5 -6
- data/lib/jsduck/members_index.rb +132 -0
- data/lib/jsduck/merger.rb +3 -9
- data/lib/jsduck/options.rb +39 -41
- data/lib/jsduck/override.rb +3 -7
- data/lib/jsduck/relations.rb +9 -9
- data/lib/jsduck/renderer.rb +3 -3
- data/lib/jsduck/return_values.rb +72 -0
- data/lib/jsduck/search_data.rb +16 -20
- data/lib/jsduck/shortener.rb +58 -0
- data/lib/jsduck/signature_renderer.rb +1 -2
- data/lib/jsduck/source/file.rb +98 -0
- data/lib/jsduck/source/file_parser.rb +72 -0
- data/lib/jsduck/source/writer.rb +89 -0
- data/lib/jsduck/tag/aside.rb +1 -1
- data/lib/jsduck/tag/since.rb +1 -1
- data/lib/jsduck/template_dir.rb +2 -2
- data/lib/jsduck/util/html.rb +27 -0
- data/lib/jsduck/util/io.rb +32 -0
- data/lib/jsduck/util/json.rb +60 -0
- data/lib/jsduck/util/null_object.rb +23 -0
- data/lib/jsduck/util/os.rb +14 -0
- data/lib/jsduck/util/parallel.rb +34 -0
- data/lib/jsduck/util/singleton.rb +35 -0
- data/lib/jsduck/util/stdout.rb +33 -0
- data/lib/jsduck/videos.rb +5 -5
- data/lib/jsduck/web_writer.rb +79 -0
- data/lib/jsduck/welcome.rb +6 -6
- data/spec/class_factory.rb +20 -0
- metadata +32 -20
- data/lib/jsduck/api_exporter.rb +0 -48
- data/lib/jsduck/app_exporter.rb +0 -60
- data/lib/jsduck/examples_exporter.rb +0 -56
- data/lib/jsduck/full_exporter.rb +0 -35
- data/lib/jsduck/html.rb +0 -25
- data/lib/jsduck/inline_img.rb +0 -53
- data/lib/jsduck/inline_video.rb +0 -58
- data/lib/jsduck/io.rb +0 -30
- data/lib/jsduck/json_duck.rb +0 -52
- data/lib/jsduck/lexer.rb +0 -251
- data/lib/jsduck/null_object.rb +0 -19
- data/lib/jsduck/os.rb +0 -11
- data/lib/jsduck/parallel_wrap.rb +0 -32
- data/lib/jsduck/source_file.rb +0 -97
- data/lib/jsduck/source_file_parser.rb +0 -70
- data/lib/jsduck/source_writer.rb +0 -87
- data/lib/jsduck/stats.rb +0 -103
- data/lib/jsduck/stdout.rb +0 -31
data/lib/jsduck/grouped_asset.rb
CHANGED
@@ -10,20 +10,10 @@ module JsDuck
|
|
10
10
|
class GroupedAsset
|
11
11
|
# Should be called from constructor after @groups have been read in,
|
12
12
|
# and after it's been ensured that all items in groupes have names.
|
13
|
-
|
14
|
-
# Prints warning when there is a duplicate item within a group.
|
15
|
-
# The warning message should say something like "duplicate <asset type>"
|
16
|
-
def build_map_by_name(warning_msg, filename)
|
13
|
+
def build_map_by_name
|
17
14
|
@map_by_name = {}
|
18
|
-
|
19
|
-
|
20
|
-
group["items"].each do |item|
|
21
|
-
if group_map[item["name"]]
|
22
|
-
Logger.instance.warn(:dup_asset, "#{warning_msg} '#{item['name']}'", filename)
|
23
|
-
end
|
24
|
-
@map_by_name[item["name"]] = item
|
25
|
-
group_map[item["name"]] = item
|
26
|
-
end
|
15
|
+
each_item do |item|
|
16
|
+
@map_by_name[item["name"]] = item
|
27
17
|
end
|
28
18
|
end
|
29
19
|
|
@@ -33,9 +23,30 @@ module JsDuck
|
|
33
23
|
end
|
34
24
|
|
35
25
|
# Iterates over all items in all groups
|
36
|
-
def each_item
|
37
|
-
|
38
|
-
|
26
|
+
def each_item(group=nil, &block)
|
27
|
+
group = group || @groups
|
28
|
+
|
29
|
+
group.each do |item|
|
30
|
+
if item["items"]
|
31
|
+
each_item(item["items"], &block)
|
32
|
+
else
|
33
|
+
block.call(item)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def map_items(group=nil, &block)
|
39
|
+
group = group || @groups
|
40
|
+
|
41
|
+
group.map do |item|
|
42
|
+
if item["items"]
|
43
|
+
{
|
44
|
+
"title" => item["title"],
|
45
|
+
"items" => map_items(item["items"], &block)
|
46
|
+
}
|
47
|
+
else
|
48
|
+
block.call(item)
|
49
|
+
end
|
39
50
|
end
|
40
51
|
end
|
41
52
|
|
data/lib/jsduck/guide_writer.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
require 'jsduck/
|
1
|
+
require 'jsduck/util/parallel'
|
2
|
+
require 'jsduck/util/stdout'
|
3
|
+
require 'jsduck/util/json'
|
2
4
|
require 'jsduck/logger'
|
3
|
-
require 'jsduck/stdout'
|
4
5
|
require 'fileutils'
|
5
6
|
|
6
7
|
module JsDuck
|
@@ -24,21 +25,21 @@ module JsDuck
|
|
24
25
|
|
25
26
|
def write_stdout
|
26
27
|
json = ParallelWrap.map(all_guides) {|guide| @exporter.export_guide(guide) }.compact
|
27
|
-
Stdout.
|
28
|
+
Util::Stdout.add(json)
|
28
29
|
end
|
29
30
|
|
30
31
|
def write_dir(dir, extension)
|
31
32
|
FileUtils.mkdir(dir) unless File.exists?(dir)
|
32
|
-
|
33
|
+
Util::Parallel.each(all_guides) do |guide|
|
33
34
|
filename = dir + "/" + guide["name"] + extension
|
34
|
-
Logger.
|
35
|
+
Logger.log("Writing guide", filename)
|
35
36
|
json = @exporter.export_guide(guide)
|
36
37
|
# skip file if exporter returned nil
|
37
38
|
if json
|
38
39
|
if extension == ".json"
|
39
|
-
|
40
|
+
Util::Json.write_json(filename, json)
|
40
41
|
elsif extension == ".js"
|
41
|
-
|
42
|
+
Util::Json.write_jsonp(filename, guide["name"], json)
|
42
43
|
else
|
43
44
|
throw "Unexpected file extension: #{extension}"
|
44
45
|
end
|
data/lib/jsduck/guides.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'jsduck/logger'
|
2
|
-
require 'jsduck/
|
3
|
-
require 'jsduck/io'
|
4
|
-
require 'jsduck/null_object'
|
2
|
+
require 'jsduck/util/json'
|
3
|
+
require 'jsduck/util/io'
|
4
|
+
require 'jsduck/util/null_object'
|
5
5
|
require 'jsduck/logger'
|
6
6
|
require 'jsduck/grouped_asset'
|
7
|
-
require 'jsduck/html'
|
7
|
+
require 'jsduck/util/html'
|
8
8
|
require 'fileutils'
|
9
9
|
|
10
10
|
module JsDuck
|
@@ -16,17 +16,18 @@ module JsDuck
|
|
16
16
|
if filename
|
17
17
|
Guides.new(filename, formatter, opts)
|
18
18
|
else
|
19
|
-
NullObject.new(:to_array => [], :to_html => "", :[] => nil)
|
19
|
+
Util::NullObject.new(:to_array => [], :to_html => "", :[] => nil)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
23
|
# Parses guides config file
|
24
24
|
def initialize(filename, formatter, opts)
|
25
25
|
@path = File.dirname(filename)
|
26
|
-
@groups =
|
27
|
-
build_map_by_name("Two guides have the same name", filename)
|
26
|
+
@groups = Util::Json.read(filename)
|
28
27
|
@formatter = formatter
|
29
28
|
@opts = opts
|
29
|
+
build_map_by_name
|
30
|
+
load_all_guides
|
30
31
|
end
|
31
32
|
|
32
33
|
# Writes all guides to given dir in JsonP format
|
@@ -35,43 +36,36 @@ module JsDuck
|
|
35
36
|
each_item {|guide| write_guide(guide, dir) }
|
36
37
|
end
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
# Load the guide if not loaded
|
42
|
-
guide[:html] = load_guide(guide) if guide[:html] == nil
|
43
|
-
# Pass guide to block if it was successfully loaded.
|
44
|
-
yield guide if guide[:html]
|
39
|
+
def load_all_guides
|
40
|
+
each_item do |guide|
|
41
|
+
guide[:html] = load_guide(guide)
|
45
42
|
end
|
46
43
|
end
|
47
44
|
|
48
45
|
# Modified to_array that excludes the :html from guide nodes
|
49
46
|
def to_array
|
50
|
-
|
51
|
-
{
|
52
|
-
"title" => group["title"],
|
53
|
-
"items" => group["items"].map {|g| Hash[g.select {|k, v| k != :html }] }
|
54
|
-
}
|
47
|
+
map_items do |item|
|
48
|
+
Hash[item.select {|k, v| k != :html }]
|
55
49
|
end
|
56
50
|
end
|
57
51
|
|
58
52
|
def load_guide(guide)
|
59
53
|
in_dir = @path + "/guides/" + guide["name"]
|
60
54
|
|
61
|
-
return Logger.
|
55
|
+
return Logger.warn(:guide, "Guide not found", in_dir) unless File.exists?(in_dir)
|
62
56
|
|
63
57
|
guide_file = in_dir + "/README.md"
|
64
58
|
|
65
|
-
return Logger.
|
59
|
+
return Logger.warn(:guide, "Guide not found", guide_file) unless File.exists?(guide_file)
|
66
60
|
|
67
61
|
begin
|
68
62
|
@formatter.doc_context = {:filename => guide_file, :linenr => 0}
|
69
63
|
name = File.basename(in_dir)
|
70
64
|
@formatter.img_path = "guides/#{name}"
|
71
65
|
|
72
|
-
return add_toc(guide, @formatter.format(
|
66
|
+
return add_toc(guide, @formatter.format(Util::IO.read(guide_file)))
|
73
67
|
rescue
|
74
|
-
Logger.
|
68
|
+
Logger.fatal_backtrace("Error while reading/formatting guide #{in_dir}", $!)
|
75
69
|
exit(1)
|
76
70
|
end
|
77
71
|
end
|
@@ -82,14 +76,14 @@ module JsDuck
|
|
82
76
|
in_dir = @path + "/guides/" + guide["name"]
|
83
77
|
out_dir = dir + "/" + guide["name"]
|
84
78
|
|
85
|
-
Logger.
|
79
|
+
Logger.log("Writing guide", out_dir)
|
86
80
|
# Copy the whole guide dir over
|
87
81
|
FileUtils.cp_r(in_dir, out_dir)
|
88
82
|
|
89
83
|
# Ensure the guide has an icon
|
90
84
|
fix_icon(out_dir)
|
91
85
|
|
92
|
-
|
86
|
+
Util::Json.write_jsonp(out_dir+"/README.js", guide["name"], {:guide => guide[:html], :title => guide["title"]})
|
93
87
|
end
|
94
88
|
|
95
89
|
# Ensures the guide dir contains icon.png.
|
@@ -117,7 +111,7 @@ module JsDuck
|
|
117
111
|
html.each_line do |line|
|
118
112
|
if line =~ /^<h2>(.*)<\/h2>$/
|
119
113
|
i += 1
|
120
|
-
text = HTML.strip_tags($1)
|
114
|
+
text = Util::HTML.strip_tags($1)
|
121
115
|
toc << "<li><a href='#!/guide/#{guide['name']}-section-#{i}'>#{text}</a></li>\n"
|
122
116
|
new_html << "<h2 id='#{guide['name']}-section-#{i}'>#{text}</h2>\n"
|
123
117
|
else
|
@@ -136,23 +130,31 @@ module JsDuck
|
|
136
130
|
end
|
137
131
|
|
138
132
|
# Returns HTML listing of guides
|
139
|
-
def to_html
|
133
|
+
def to_html(style="")
|
140
134
|
html = @groups.map do |group|
|
141
135
|
[
|
142
136
|
"<h3>#{group['title']}</h3>",
|
143
137
|
"<ul>",
|
144
|
-
group["items"].map {|g| "<li><a href='#!/guide/#{g['name']}'>#{g['title']}</a></li>" },
|
138
|
+
flatten_subgroups(group["items"]).map {|g| "<li><a href='#!/guide/#{g['name']}'>#{g['title']}</a></li>" },
|
145
139
|
"</ul>",
|
146
140
|
]
|
147
141
|
end.flatten.join("\n")
|
148
142
|
|
149
143
|
return <<-EOHTML
|
150
|
-
<div id='guides-content' style='
|
144
|
+
<div id='guides-content' style='#{style}'>
|
151
145
|
#{html}
|
152
146
|
</div>
|
153
147
|
EOHTML
|
154
148
|
end
|
155
149
|
|
150
|
+
def flatten_subgroups(items)
|
151
|
+
result = []
|
152
|
+
each_item(items) do |item|
|
153
|
+
result << item
|
154
|
+
end
|
155
|
+
result
|
156
|
+
end
|
157
|
+
|
156
158
|
# Extracts guide icon URL from guide hash
|
157
159
|
def icon_url(guide)
|
158
160
|
"guides/" + guide["name"] + "/icon.png"
|
data/lib/jsduck/icons.rb
CHANGED
@@ -9,10 +9,21 @@ module JsDuck
|
|
9
9
|
:name => cls[:name],
|
10
10
|
:extends => cls[:extends],
|
11
11
|
:private => cls[:private],
|
12
|
-
:icon => cls
|
12
|
+
:icon => Icons::class_icon(cls),
|
13
13
|
}
|
14
14
|
end
|
15
15
|
end
|
16
|
+
|
17
|
+
# Returns CSS class name for an icon of class
|
18
|
+
def self.class_icon(cls)
|
19
|
+
if cls[:singleton]
|
20
|
+
"icon-singleton"
|
21
|
+
elsif cls.inherits_from?("Ext.Component")
|
22
|
+
"icon-component"
|
23
|
+
else
|
24
|
+
"icon-class"
|
25
|
+
end
|
26
|
+
end
|
16
27
|
end
|
17
28
|
|
18
29
|
end
|
data/lib/jsduck/images.rb
CHANGED
@@ -35,7 +35,7 @@ module JsDuck
|
|
35
35
|
def copy(output_dir)
|
36
36
|
@images.each_key do |img|
|
37
37
|
unless copy_img(img, output_dir)
|
38
|
-
Logger.
|
38
|
+
Logger.warn(:image, "Image not found.", img)
|
39
39
|
end
|
40
40
|
end
|
41
41
|
report_unused
|
@@ -47,7 +47,7 @@ module JsDuck
|
|
47
47
|
filename = path + "/" + img
|
48
48
|
if map.has_key?(filename)
|
49
49
|
dest = output_dir + "/" + img
|
50
|
-
Logger.
|
50
|
+
Logger.log("Copying image", dest)
|
51
51
|
FileUtils.makedirs(File.dirname(dest))
|
52
52
|
FileUtils.cp(filename, dest)
|
53
53
|
# mark file as used.
|
@@ -62,7 +62,7 @@ module JsDuck
|
|
62
62
|
def report_unused
|
63
63
|
@paths.each_pair do |path, map|
|
64
64
|
map.each_pair do |img, used|
|
65
|
-
Logger.
|
65
|
+
Logger.warn(:image_unused, "Image not used.", img) unless used
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
data/lib/jsduck/importer.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require 'jsduck/
|
2
|
-
require 'jsduck/null_object'
|
1
|
+
require 'jsduck/util/json'
|
2
|
+
require 'jsduck/util/null_object'
|
3
3
|
require 'jsduck/logger'
|
4
|
-
require 'jsduck/
|
4
|
+
require 'jsduck/util/parallel'
|
5
5
|
|
6
6
|
module JsDuck
|
7
7
|
|
@@ -29,15 +29,15 @@ module JsDuck
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def current_version
|
32
|
-
NullObject.new(:[] => NullObject.new(:[] => true))
|
32
|
+
Util::NullObject.new(:[] => Util::NullObject.new(:[] => true))
|
33
33
|
end
|
34
34
|
|
35
35
|
# Reads in data from all .json files in directory
|
36
36
|
def read(ver)
|
37
37
|
# Map list of files into pairs of (classname, members-hash)
|
38
|
-
pairs =
|
39
|
-
JsDuck::Logger.
|
40
|
-
json =
|
38
|
+
pairs = Util::Parallel.map(Dir[ver[:path] + "/*.json"]) do |filename|
|
39
|
+
JsDuck::Logger.log("Importing #{ver[:version]}", filename)
|
40
|
+
json = Util::Json.read(filename)
|
41
41
|
[json["name"], members_id_index(json)]
|
42
42
|
end
|
43
43
|
|
data/lib/jsduck/index_html.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'jsduck/logger'
|
2
|
-
require 'jsduck/io'
|
2
|
+
require 'jsduck/util/io'
|
3
3
|
require 'fileutils'
|
4
4
|
|
5
5
|
module JsDuck
|
@@ -17,8 +17,10 @@ module JsDuck
|
|
17
17
|
def write
|
18
18
|
if @opts.seo
|
19
19
|
FileUtils.cp(@opts.template_dir+"/index.php", @opts.output_dir+"/index.php")
|
20
|
+
FileUtils.cp(@opts.template_dir+"/Mobile_Detect.php", @opts.output_dir+"/Mobile_Detect.php")
|
20
21
|
create_template_html(@opts.template_dir+"/template.html", @opts.output_dir+"/template.html")
|
21
22
|
create_print_template_html(@opts.template_dir+"/print-template.html", @opts.output_dir+"/print-template.html")
|
23
|
+
create_index_template_html(@opts.template_dir+"/index-template.html", @opts.output_dir+"/index-template.html")
|
22
24
|
else
|
23
25
|
create_template_html(@opts.template_dir+"/template.html", @opts.output_dir+"/index.html")
|
24
26
|
end
|
@@ -32,9 +34,9 @@ module JsDuck
|
|
32
34
|
"{header}" => @opts.header,
|
33
35
|
"{footer}" => "<div id='footer-content' style='display: none'>#{@opts.footer}</div>",
|
34
36
|
"{extjs_path}" => @opts.extjs_path,
|
35
|
-
"{welcome}" => @assets.welcome.to_html,
|
36
|
-
"{categories}" => @assets.categories.to_html,
|
37
|
-
"{guides}" => @assets.guides.to_html,
|
37
|
+
"{welcome}" => @assets.welcome.to_html("display:none"),
|
38
|
+
"{categories}" => @assets.categories.to_html("display:none"),
|
39
|
+
"{guides}" => @assets.guides.to_html("display:none"),
|
38
40
|
"{head_html}" => @opts.head_html,
|
39
41
|
"{body_html}" => @opts.body_html,
|
40
42
|
})
|
@@ -47,10 +49,22 @@ module JsDuck
|
|
47
49
|
})
|
48
50
|
end
|
49
51
|
|
52
|
+
def create_index_template_html(in_file, out_file)
|
53
|
+
categories = @assets.categories.to_html
|
54
|
+
guides = @assets.guides.to_html
|
55
|
+
|
56
|
+
write_template(in_file, out_file, {
|
57
|
+
"{title}" => @opts.title,
|
58
|
+
"{header}" => @opts.header,
|
59
|
+
"{categories}" => categories ? "<h1>API Documentation</h1> #{categories}" : "",
|
60
|
+
"{guides}" => guides ? "<h1>Guides</h1> #{guides}" : "",
|
61
|
+
})
|
62
|
+
end
|
63
|
+
|
50
64
|
# Opens in_file, replaces {keys} inside it, writes to out_file
|
51
65
|
def write_template(in_file, out_file, replacements)
|
52
|
-
Logger.
|
53
|
-
html =
|
66
|
+
Logger.log("Writing", out_file)
|
67
|
+
html = Util::IO.read(in_file)
|
54
68
|
html.gsub!(/\{\w+\}/) do |key|
|
55
69
|
replacements[key] ? replacements[key] : key
|
56
70
|
end
|
data/lib/jsduck/inherit_doc.rb
CHANGED
@@ -20,7 +20,7 @@ module JsDuck
|
|
20
20
|
resolve(member, new_cfgs)
|
21
21
|
end
|
22
22
|
end
|
23
|
-
move_cfgs(cls, new_cfgs)
|
23
|
+
move_cfgs(cls, new_cfgs) if new_cfgs.length > 0
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -52,12 +52,9 @@ module JsDuck
|
|
52
52
|
def move_cfgs(cls, members)
|
53
53
|
members.each do |m|
|
54
54
|
m[:tagname] = :cfg
|
55
|
-
cls[:members][:property].delete(m)
|
56
|
-
cls[:members][:cfg] << m
|
57
55
|
end
|
58
|
-
#
|
59
|
-
|
60
|
-
cls.reset_members_lookup!
|
56
|
+
# Ask class to update its internal caches for these members
|
57
|
+
cls.update_members!(members)
|
61
58
|
end
|
62
59
|
|
63
60
|
# For auto-detected members/classes (which have @private == :inherit)
|
@@ -75,6 +72,7 @@ module JsDuck
|
|
75
72
|
#
|
76
73
|
# If the parent also has @inheritdoc, continues recursively.
|
77
74
|
def find_parent(m)
|
75
|
+
|
78
76
|
inherit = m[:inheritdoc] || {}
|
79
77
|
if inherit[:cls]
|
80
78
|
# @inheritdoc MyClass#member
|
@@ -120,7 +118,6 @@ module JsDuck
|
|
120
118
|
end
|
121
119
|
end
|
122
120
|
|
123
|
-
#pp parent[:doc]
|
124
121
|
return parent[:inheritdoc] ? find_parent(parent) : parent
|
125
122
|
end
|
126
123
|
|
@@ -134,8 +131,8 @@ module JsDuck
|
|
134
131
|
# Auto-detected properties can override either a property or a
|
135
132
|
# config. So look for both types.
|
136
133
|
if tagname == :property
|
137
|
-
cfg = cls.
|
138
|
-
prop = cls.
|
134
|
+
cfg = cls.find_members(:name => name, :tagname => :cfg, :static => static || false)[0]
|
135
|
+
prop = cls.find_members(:name => name, :tagname => :property, :static => static || false)[0]
|
139
136
|
|
140
137
|
if cfg && prop
|
141
138
|
prop
|
@@ -150,10 +147,10 @@ module JsDuck
|
|
150
147
|
else
|
151
148
|
# Unless the auto-detected member is detected as static,
|
152
149
|
# look only at instance members.
|
153
|
-
cls.
|
150
|
+
cls.find_members(:name => name, :tagname => tagname, :static => static || false)[0]
|
154
151
|
end
|
155
152
|
else
|
156
|
-
cls.
|
153
|
+
cls.find_members(:name => name, :tagname => tagname, :static => static)[0]
|
157
154
|
end
|
158
155
|
end
|
159
156
|
|
@@ -185,7 +182,7 @@ module JsDuck
|
|
185
182
|
i_member = item[:inheritdoc][:member]
|
186
183
|
|
187
184
|
msg = "@inheritdoc #{item[:inheritdoc][:cls]}"+ (i_member ? "#" + i_member : "") + " - " + msg
|
188
|
-
Logger.
|
185
|
+
Logger.warn(:inheritdoc, msg, context[:filename], context[:linenr])
|
189
186
|
|
190
187
|
return nil
|
191
188
|
end
|