Loading lib/jsduck/class_doc_grouper.rb→lib/jsduck/class_doc_expander.rb +31 −9 Original line number Diff line number Diff line module JsDuck # Expands class docset into one or more docsets. # # The resulting list can contain the following: # # - the base class docset itself (always present) # - configs detected from comment # - constructor detected from comment # - members detected from code # class ClassDocExpander # Expands class-docset into multiple docsets. def expand(docset) expand_comment(docset) + expand_code(docset) end private # Handles old syntax where configs and constructor are part of class # doc-comment. class ClassDocGrouper # Takes one docset as input, produces array of one or more docsets # as output. # # Gathers all tags until first @cfg or @constructor into the first # bare :class group. We have a special case for @xtype which in Loading @@ -17,7 +31,7 @@ module JsDuck # configs to be marked with @private or whatever else. # # Finally gathers tags after @constructor into its group. def self.group(docset) def expand_comment(docset) groups = { :class => [], :cfg => [], Loading Loading @@ -47,7 +61,11 @@ module JsDuck end end # Turn groups hash into list of docsets groups_to_docsets(groups, docset) end # Turns groups hash into list of docsets def groups_to_docsets(groups, docset) results = [] results << { :tagname => :class, Loading @@ -74,8 +92,13 @@ module JsDuck :linenr => docset[:linenr], } end results end # Turn all auto-detected members into separate docsets # Turns auto-detected class members into docsets in their own # right. def expand_code(docset) results = [] if docset[:code] && docset[:code][:members] docset[:code][:members].each do |m| results << { Loading @@ -87,7 +110,6 @@ module JsDuck } end end results end Loading lib/jsduck/merger.rb +0 −1 Original line number Diff line number Diff line require 'jsduck/logger' require 'jsduck/meta_tag_registry' require 'jsduck/class_doc_grouper' module JsDuck Loading lib/jsduck/source_file.rb +3 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ require 'jsduck/doc_parser' require 'jsduck/merger' require 'jsduck/ast' require 'jsduck/doc_type' require 'jsduck/class_doc_expander' require "cgi" module JsDuck Loading @@ -26,6 +27,7 @@ module JsDuck @links = {} @doc_type = DocType.new @doc_parser = DocParser.new @doc_expander = ClassDocExpander.new merger = Merger.new merger.filename = @filename Loading Loading @@ -99,7 +101,7 @@ module JsDuck docset[:tagname] = @doc_type.detect(docset[:comment], docset[:code]) if docset[:tagname] == :class ClassDocGrouper.group(docset) @doc_expander.expand(docset) else docset end Loading Loading
lib/jsduck/class_doc_grouper.rb→lib/jsduck/class_doc_expander.rb +31 −9 Original line number Diff line number Diff line module JsDuck # Expands class docset into one or more docsets. # # The resulting list can contain the following: # # - the base class docset itself (always present) # - configs detected from comment # - constructor detected from comment # - members detected from code # class ClassDocExpander # Expands class-docset into multiple docsets. def expand(docset) expand_comment(docset) + expand_code(docset) end private # Handles old syntax where configs and constructor are part of class # doc-comment. class ClassDocGrouper # Takes one docset as input, produces array of one or more docsets # as output. # # Gathers all tags until first @cfg or @constructor into the first # bare :class group. We have a special case for @xtype which in Loading @@ -17,7 +31,7 @@ module JsDuck # configs to be marked with @private or whatever else. # # Finally gathers tags after @constructor into its group. def self.group(docset) def expand_comment(docset) groups = { :class => [], :cfg => [], Loading Loading @@ -47,7 +61,11 @@ module JsDuck end end # Turn groups hash into list of docsets groups_to_docsets(groups, docset) end # Turns groups hash into list of docsets def groups_to_docsets(groups, docset) results = [] results << { :tagname => :class, Loading @@ -74,8 +92,13 @@ module JsDuck :linenr => docset[:linenr], } end results end # Turn all auto-detected members into separate docsets # Turns auto-detected class members into docsets in their own # right. def expand_code(docset) results = [] if docset[:code] && docset[:code][:members] docset[:code][:members].each do |m| results << { Loading @@ -87,7 +110,6 @@ module JsDuck } end end results end Loading
lib/jsduck/merger.rb +0 −1 Original line number Diff line number Diff line require 'jsduck/logger' require 'jsduck/meta_tag_registry' require 'jsduck/class_doc_grouper' module JsDuck Loading
lib/jsduck/source_file.rb +3 −1 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ require 'jsduck/doc_parser' require 'jsduck/merger' require 'jsduck/ast' require 'jsduck/doc_type' require 'jsduck/class_doc_expander' require "cgi" module JsDuck Loading @@ -26,6 +27,7 @@ module JsDuck @links = {} @doc_type = DocType.new @doc_parser = DocParser.new @doc_expander = ClassDocExpander.new merger = Merger.new merger.filename = @filename Loading Loading @@ -99,7 +101,7 @@ module JsDuck docset[:tagname] = @doc_type.detect(docset[:comment], docset[:code]) if docset[:tagname] == :class ClassDocGrouper.group(docset) @doc_expander.expand(docset) else docset end Loading