Loading lib/jsduck/merger.rb +5 −3 Original line number Diff line number Diff line require 'jsduck/class' require 'jsduck/tag_registry' module JsDuck Loading Loading @@ -40,9 +41,6 @@ module JsDuck :singleton => false, }) # Ignore extending of the Object class h[:extends] = nil if h[:extends] == "Object" h[:aliases] = build_aliases_hash(h[:aliases] || []) # Used by Aggregator to determine if we're dealing with Ext4 code Loading @@ -52,6 +50,10 @@ module JsDuck h[:members] = [] TagRegistry.mergers(:class).each do |tag| tag.merge(h, docs, code) end h end Loading lib/jsduck/tag/extends.rb +7 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ module JsDuck::Tag @key = :extends @ext_define_pattern = "extend" @ext_define_default = {:extends => "Ext.Base"} @merge_context = :class end # @extends classname Loading @@ -25,5 +26,11 @@ module JsDuck::Tag def parse_ext_define(cls, ast) cls[:extends] = JsDuck::Js::Utils.make_string(ast) end # Ignore extending of the Object class def merge(h, docs, code) h[:extends] = docs[:extends] || code[:extends] h[:extends] = nil if h[:extends] == "Object" end end end lib/jsduck/tag/tag.rb +12 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,18 @@ module JsDuck::Tag def parse_ext_define(cls, ast) end # In the context of which members or classes invoke the #merge # method. Possible values are: # # - :class # - :member # attr_reader :merge_context # Merges documentation and code hashes into the result hash. def merge(hash, docs, code) end # Whether to render the tag before other content (:top) or after # it (:bottom). Must be defined together with #to_html method. attr_accessor :html_position Loading lib/jsduck/tag_registry.rb +10 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ module JsDuck @ext_define_patterns = {} @ext_define_defaults = {} @keys = {} @mergers = {:class => [], :member => []} @signatures = [] @html_renderers = {:top => [], :bottom => []} @member_types = [] Loading Loading @@ -41,6 +42,9 @@ module JsDuck if tag.key @keys[tag.key] = tag end if tag.merge_context @mergers[tag.merge_context] << tag end if tag.member_type @member_types << tag.member_type end Loading Loading @@ -78,6 +82,12 @@ module JsDuck @member_type_regex = Regexp.new("(?:(" + TagRegistry.member_types.join("|") + ")-)") end # Returns tags for doing the merging in a particular context. # See Tag::Tag#merge_context for details. def mergers(context) @mergers[context] || [] end # Returns tags for rendering HTML. One can ask for tags for # rendering either :top or :bottom section. By default renderers # for both sections are returned. Loading Loading
lib/jsduck/merger.rb +5 −3 Original line number Diff line number Diff line require 'jsduck/class' require 'jsduck/tag_registry' module JsDuck Loading Loading @@ -40,9 +41,6 @@ module JsDuck :singleton => false, }) # Ignore extending of the Object class h[:extends] = nil if h[:extends] == "Object" h[:aliases] = build_aliases_hash(h[:aliases] || []) # Used by Aggregator to determine if we're dealing with Ext4 code Loading @@ -52,6 +50,10 @@ module JsDuck h[:members] = [] TagRegistry.mergers(:class).each do |tag| tag.merge(h, docs, code) end h end Loading
lib/jsduck/tag/extends.rb +7 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ module JsDuck::Tag @key = :extends @ext_define_pattern = "extend" @ext_define_default = {:extends => "Ext.Base"} @merge_context = :class end # @extends classname Loading @@ -25,5 +26,11 @@ module JsDuck::Tag def parse_ext_define(cls, ast) cls[:extends] = JsDuck::Js::Utils.make_string(ast) end # Ignore extending of the Object class def merge(h, docs, code) h[:extends] = docs[:extends] || code[:extends] h[:extends] = nil if h[:extends] == "Object" end end end
lib/jsduck/tag/tag.rb +12 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,18 @@ module JsDuck::Tag def parse_ext_define(cls, ast) end # In the context of which members or classes invoke the #merge # method. Possible values are: # # - :class # - :member # attr_reader :merge_context # Merges documentation and code hashes into the result hash. def merge(hash, docs, code) end # Whether to render the tag before other content (:top) or after # it (:bottom). Must be defined together with #to_html method. attr_accessor :html_position Loading
lib/jsduck/tag_registry.rb +10 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ module JsDuck @ext_define_patterns = {} @ext_define_defaults = {} @keys = {} @mergers = {:class => [], :member => []} @signatures = [] @html_renderers = {:top => [], :bottom => []} @member_types = [] Loading Loading @@ -41,6 +42,9 @@ module JsDuck if tag.key @keys[tag.key] = tag end if tag.merge_context @mergers[tag.merge_context] << tag end if tag.member_type @member_types << tag.member_type end Loading Loading @@ -78,6 +82,12 @@ module JsDuck @member_type_regex = Regexp.new("(?:(" + TagRegistry.member_types.join("|") + ")-)") end # Returns tags for doing the merging in a particular context. # See Tag::Tag#merge_context for details. def mergers(context) @mergers[context] || [] end # Returns tags for rendering HTML. One can ask for tags for # rendering either :top or :bottom section. By default renderers # for both sections are returned. Loading