Skip to content
Snippets Groups Projects
Commit 6282582a authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Allow for anonymous overrides.

That is, allow to use the @override tag without accompaning @class
tag to give a name for the override.
parent 83cc1b88
Branches
Tags
No related merge requests found
......@@ -12,7 +12,7 @@ module JsDuck
def detect(docs, code)
doc_map = build_doc_map(docs)
if doc_map[:class]
if doc_map[:class] || doc_map[:override]
:class
elsif doc_map[:event]
:event
......@@ -57,4 +57,3 @@ module JsDuck
end
end
......@@ -32,7 +32,7 @@ module JsDuck
# Combine comments of classes
if override[:doc].length > 0
add_doc(target, "**From override #{override[:name]}:** " + override[:doc])
add_doc(target, "**From override #{get_name(override)}:** " + override[:doc])
end
target[:files] += override[:files]
......@@ -48,14 +48,14 @@ module JsDuck
ex = existing[m[:id]]
if ex
if m[:doc].length > 0
add_doc(ex, "**From override #{override[:name]}:** " + m[:doc])
add_doc(ex, "**From override #{get_name(override)}:** " + m[:doc])
else
add_doc(ex, "**Overridden in #{override[:name]}.**")
add_doc(ex, "**Overridden in #{get_name(override)}.**")
end
ex[:files] += m[:files]
else
add_member(target, m)
add_doc(m, "**Defined in override #{override[:name]}.**")
add_doc(m, "**Defined in override #{get_name(override)}.**")
m[:owner] = target[:name]
end
end
......@@ -63,6 +63,14 @@ module JsDuck
# helpers
def get_name(override)
if override[:name] != ""
override[:name]
else
override[:files][0][:filename]
end
end
def each_member(cls)
cls[:members].each {|m| yield m }
end
......
......@@ -6,7 +6,7 @@ require "jsduck/relations"
describe JsDuck::Aggregator do
def parse(string)
agr = JsDuck::Aggregator.new
agr.aggregate(JsDuck::Source::File.new(string))
agr.aggregate(JsDuck::Source::File.new(string, "blah.js"))
agr.process_overrides
JsDuck::Relations.new(agr.result.map {|cls| JsDuck::Class.new(cls) })
end
......@@ -229,5 +229,33 @@ describe JsDuck::Aggregator do
methods["foobar"][:doc].should == "**Overridden in FooOverride.**"
end
end
describe "use of @override tag without @class" do
let(:classes) do
parse(<<-EOF)
/** */
Ext.define("Foo", {
foobar: function(){}
});
/** @override Foo */
Ext.apply(Foo.prototype, {
/** */
bar: function(){ },
/** */
foobar: function(){ return true; }
});
EOF
end
let(:methods) { create_members_map(classes["Foo"]) }
it "adds member to overridden class" do
methods["bar"].should_not == nil
end
it "adds note to docs about member being overridden" do
methods["foobar"][:doc].should == "**Overridden in blah.js.**"
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment