Loading lib/jsduck/logger.rb +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ module JsDuck [:type_syntax, "Syntax error in {type definition}"], [:type_name, "Unknown type referenced in {type definition}"], [:enum, "Enum with invalid values or no values at all"], [:fires, "@fires references unknown event"], [:image, "{@img} referring to missing file"], [:image_unused, "An image exists in --images dir that's not used"], Loading lib/jsduck/tag/fires.rb +16 −2 Original line number Diff line number Diff line require "jsduck/tag/tag" require "jsduck/logger" module JsDuck::Tag class Fires < Tag Loading @@ -24,14 +25,27 @@ module JsDuck::Tag end def process_doc(h, tags, pos) h[:fires] = tags.map {|t| t[:events] }.flatten h[:fires] = tags.map {|t| t[:events] }.flatten.map {|name| {:name => name} } end def format(m, formatter) cls = formatter.relations[m[:owner]] m[:fires].each do |e| if cls.find_members({:tagname => :event, :name => e[:name]}).length > 0 e[:link] = formatter.link(m[:owner], e[:name], e[:name], :event) else JsDuck::Logger.warn(:fires, "@fires references unknown event: #{e[:name]}", m[:files][0]) e[:link] = e[:name] end end end def to_html(m) return [ "<h3 class='pa'>Fires</h3>", "<ul>", m[:fires].map {|f| "<li>#{f}</li>" }, m[:fires].map {|e| "<li>#{e[:link]}</li>" }, "</ul>", ] end Loading spec/aggregator_fires_spec.rb +13 −13 Original line number Diff line number Diff line Loading @@ -5,13 +5,13 @@ describe JsDuck::Aggregator do Helper::MiniParser.parse(string) end def parse_member(string) parse(string)["global"][:members][0] def parse_fires(string) parse(string)["global"][:members][0][:fires].map {|e| e[:name] } end describe "@fires with single event" do before do @doc = parse_member(<<-EOS) @fires = parse_fires(<<-EOS) /** * Some function * @fires click Loading @@ -21,17 +21,17 @@ describe JsDuck::Aggregator do end it "detects one fired event" do @doc[:fires].length.should == 1 @fires.length.should == 1 end it "detects event name that's fired" do @doc[:fires][0].should == "click" @fires[0].should == "click" end end describe "@fires with multiple events" do before do @doc = parse_member(<<-EOS) @fires = parse_fires(<<-EOS) /** * @fires click dblclick */ Loading @@ -40,18 +40,18 @@ describe JsDuck::Aggregator do end it "detects two events" do @doc[:fires].length.should == 2 @fires.length.should == 2 end it "detects event names" do @doc[:fires][0].should == "click" @doc[:fires][1].should == "dblclick" @fires[0].should == "click" @fires[1].should == "dblclick" end end describe "multiple @fires tags" do before do @doc = parse_member(<<-EOS) @fires = parse_fires(<<-EOS) /** * @fires click * @fires dblclick Loading @@ -61,12 +61,12 @@ describe JsDuck::Aggregator do end it "detects two events" do @doc[:fires].length.should == 2 @fires.length.should == 2 end it "detects event names" do @doc[:fires][0].should == "click" @doc[:fires][1].should == "dblclick" @fires[0].should == "click" @fires[1].should == "dblclick" end end Loading Loading
lib/jsduck/logger.rb +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ module JsDuck [:type_syntax, "Syntax error in {type definition}"], [:type_name, "Unknown type referenced in {type definition}"], [:enum, "Enum with invalid values or no values at all"], [:fires, "@fires references unknown event"], [:image, "{@img} referring to missing file"], [:image_unused, "An image exists in --images dir that's not used"], Loading
lib/jsduck/tag/fires.rb +16 −2 Original line number Diff line number Diff line require "jsduck/tag/tag" require "jsduck/logger" module JsDuck::Tag class Fires < Tag Loading @@ -24,14 +25,27 @@ module JsDuck::Tag end def process_doc(h, tags, pos) h[:fires] = tags.map {|t| t[:events] }.flatten h[:fires] = tags.map {|t| t[:events] }.flatten.map {|name| {:name => name} } end def format(m, formatter) cls = formatter.relations[m[:owner]] m[:fires].each do |e| if cls.find_members({:tagname => :event, :name => e[:name]}).length > 0 e[:link] = formatter.link(m[:owner], e[:name], e[:name], :event) else JsDuck::Logger.warn(:fires, "@fires references unknown event: #{e[:name]}", m[:files][0]) e[:link] = e[:name] end end end def to_html(m) return [ "<h3 class='pa'>Fires</h3>", "<ul>", m[:fires].map {|f| "<li>#{f}</li>" }, m[:fires].map {|e| "<li>#{e[:link]}</li>" }, "</ul>", ] end Loading
spec/aggregator_fires_spec.rb +13 −13 Original line number Diff line number Diff line Loading @@ -5,13 +5,13 @@ describe JsDuck::Aggregator do Helper::MiniParser.parse(string) end def parse_member(string) parse(string)["global"][:members][0] def parse_fires(string) parse(string)["global"][:members][0][:fires].map {|e| e[:name] } end describe "@fires with single event" do before do @doc = parse_member(<<-EOS) @fires = parse_fires(<<-EOS) /** * Some function * @fires click Loading @@ -21,17 +21,17 @@ describe JsDuck::Aggregator do end it "detects one fired event" do @doc[:fires].length.should == 1 @fires.length.should == 1 end it "detects event name that's fired" do @doc[:fires][0].should == "click" @fires[0].should == "click" end end describe "@fires with multiple events" do before do @doc = parse_member(<<-EOS) @fires = parse_fires(<<-EOS) /** * @fires click dblclick */ Loading @@ -40,18 +40,18 @@ describe JsDuck::Aggregator do end it "detects two events" do @doc[:fires].length.should == 2 @fires.length.should == 2 end it "detects event names" do @doc[:fires][0].should == "click" @doc[:fires][1].should == "dblclick" @fires[0].should == "click" @fires[1].should == "dblclick" end end describe "multiple @fires tags" do before do @doc = parse_member(<<-EOS) @fires = parse_fires(<<-EOS) /** * @fires click * @fires dblclick Loading @@ -61,12 +61,12 @@ describe JsDuck::Aggregator do end it "detects two events" do @doc[:fires].length.should == 2 @fires.length.should == 2 end it "detects event names" do @doc[:fires][0].should == "click" @doc[:fires][1].should == "dblclick" @fires[0].should == "click" @fires[1].should == "dblclick" end end Loading