Loading lib/jsduck/aggregator.rb +14 −2 Original line number Diff line number Diff line require 'jsduck/class' require 'jsduck/accessors' require 'jsduck/logger' module JsDuck Loading Loading @@ -38,7 +39,12 @@ module JsDuck # When class exists, merge it with class node. # Otherwise add as new class. def add_class(cls) old_cls = @classes[cls[:name]] || @alt_names[cls[:name]] old_cls = @classes[cls[:name]] if !old_cls && @alt_names[cls[:name]] old_cls = @alt_names[cls[:name]] warn_alt_name(cls[:name]) end if old_cls merge_classes(old_cls, cls) @current_class = old_cls Loading @@ -50,7 +56,8 @@ module JsDuck # Register all alternate names of class for lookup too cls[:alternateClassNames].each do |altname| if cls[:name] == altname # A buggy documentation, ignore. # A buggy documentation, warn. warn_alt_name(altname) else @alt_names[altname] = cls # When an alternate name has been used as a class name before, Loading @@ -60,6 +67,7 @@ module JsDuck merge_classes(cls, @classes[altname]) @documentation.delete(@classes[altname]) @classes.delete(altname) warn_alt_name(altname) end end end Loading @@ -68,6 +76,10 @@ module JsDuck end end def warn_alt_name(name) Logger.instance.warn(:alt_name, "Name #{name} used as both classname and alternate classname") end # Merges new class-doc into old one. def merge_classes(old, new) # Merge booleans Loading lib/jsduck/logger.rb +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ module JsDuck [:extend, "@extend or @mixin referring to unknown class"], [:link, "{@link} to unknown class or member"], [:alt_name, "Name used as both classname and alternate classname"], [:name_missing, "Member or parameter has no name"], [:dup_param, "Method has two parameters with same name"], [:req_after_opt, "Required parameter comes after optional"], Loading spec/aggregator_classes_spec.rb +4 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ require "jsduck/source_file" describe JsDuck::Aggregator do before do JsDuck::Logger.instance.set_warning(:alt_name, false) end def parse(string) agr = JsDuck::Aggregator.new agr.aggregate(JsDuck::SourceFile.new(string)) Loading Loading
lib/jsduck/aggregator.rb +14 −2 Original line number Diff line number Diff line require 'jsduck/class' require 'jsduck/accessors' require 'jsduck/logger' module JsDuck Loading Loading @@ -38,7 +39,12 @@ module JsDuck # When class exists, merge it with class node. # Otherwise add as new class. def add_class(cls) old_cls = @classes[cls[:name]] || @alt_names[cls[:name]] old_cls = @classes[cls[:name]] if !old_cls && @alt_names[cls[:name]] old_cls = @alt_names[cls[:name]] warn_alt_name(cls[:name]) end if old_cls merge_classes(old_cls, cls) @current_class = old_cls Loading @@ -50,7 +56,8 @@ module JsDuck # Register all alternate names of class for lookup too cls[:alternateClassNames].each do |altname| if cls[:name] == altname # A buggy documentation, ignore. # A buggy documentation, warn. warn_alt_name(altname) else @alt_names[altname] = cls # When an alternate name has been used as a class name before, Loading @@ -60,6 +67,7 @@ module JsDuck merge_classes(cls, @classes[altname]) @documentation.delete(@classes[altname]) @classes.delete(altname) warn_alt_name(altname) end end end Loading @@ -68,6 +76,10 @@ module JsDuck end end def warn_alt_name(name) Logger.instance.warn(:alt_name, "Name #{name} used as both classname and alternate classname") end # Merges new class-doc into old one. def merge_classes(old, new) # Merge booleans Loading
lib/jsduck/logger.rb +1 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ module JsDuck [:extend, "@extend or @mixin referring to unknown class"], [:link, "{@link} to unknown class or member"], [:alt_name, "Name used as both classname and alternate classname"], [:name_missing, "Member or parameter has no name"], [:dup_param, "Method has two parameters with same name"], [:req_after_opt, "Required parameter comes after optional"], Loading
spec/aggregator_classes_spec.rb +4 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,10 @@ require "jsduck/source_file" describe JsDuck::Aggregator do before do JsDuck::Logger.instance.set_warning(:alt_name, false) end def parse(string) agr = JsDuck::Aggregator.new agr.aggregate(JsDuck::SourceFile.new(string)) Loading