Loading lib/jsduck/doc_type.rb +1 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -57,4 +57,3 @@ module JsDuck end end lib/jsduck/override.rb +12 −4 Original line number Diff line number Diff line Loading @@ -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] Loading @@ -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 Loading @@ -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 Loading spec/aggregator_overrides_spec.rb +30 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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 Loading
lib/jsduck/doc_type.rb +1 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -57,4 +57,3 @@ module JsDuck end end
lib/jsduck/override.rb +12 −4 Original line number Diff line number Diff line Loading @@ -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] Loading @@ -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 Loading @@ -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 Loading
spec/aggregator_overrides_spec.rb +30 −2 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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