Loading lib/jsduck.rb +4 −19 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ require 'jsduck/lexer' require 'jsduck/parser' require 'jsduck/doc_parser' require 'jsduck/merger' require 'jsduck/aggregator' require 'jsduck/class' require 'jsduck/tree' require 'jsduck/doc_links' Loading @@ -23,25 +24,9 @@ require 'pp' module JsDuck def self.parse(input) doc_parser = DocParser.new merger = Merger.new documentation = [] current_class = nil Parser.new(input).parse.each do |docset| node = merger.merge(doc_parser.parse(docset[:comment]), docset[:code]) # all methods, cfgs, ... following a class will be added to that class if node[:tagname] == :class current_class = node documentation << node elsif current_class current_class[ node[:tagname] ] << node else documentation << node end end documentation agr = Aggregator.new agr.parse(input) agr.result end # Given array of filenames, parses all files and returns array of Loading lib/jsduck/aggregator.rb 0 → 100644 +33 −0 Original line number Diff line number Diff line module JsDuck # Combines JavaScript Parser, DocParser and Merger. # Produces array of classes as result. class Aggregator def initialize @documentation = [] @doc_parser = DocParser.new @merger = Merger.new end def parse(input) current_class = nil Parser.new(input).parse.each do |docset| node = @merger.merge(@doc_parser.parse(docset[:comment]), docset[:code]) # all methods, cfgs, ... following a class will be added to that class if node[:tagname] == :class current_class = node @documentation << node elsif current_class current_class[ node[:tagname] ] << node else @documentation << node end end end def result @documentation end end end Loading
lib/jsduck.rb +4 −19 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ require 'jsduck/lexer' require 'jsduck/parser' require 'jsduck/doc_parser' require 'jsduck/merger' require 'jsduck/aggregator' require 'jsduck/class' require 'jsduck/tree' require 'jsduck/doc_links' Loading @@ -23,25 +24,9 @@ require 'pp' module JsDuck def self.parse(input) doc_parser = DocParser.new merger = Merger.new documentation = [] current_class = nil Parser.new(input).parse.each do |docset| node = merger.merge(doc_parser.parse(docset[:comment]), docset[:code]) # all methods, cfgs, ... following a class will be added to that class if node[:tagname] == :class current_class = node documentation << node elsif current_class current_class[ node[:tagname] ] << node else documentation << node end end documentation agr = Aggregator.new agr.parse(input) agr.result end # Given array of filenames, parses all files and returns array of Loading
lib/jsduck/aggregator.rb 0 → 100644 +33 −0 Original line number Diff line number Diff line module JsDuck # Combines JavaScript Parser, DocParser and Merger. # Produces array of classes as result. class Aggregator def initialize @documentation = [] @doc_parser = DocParser.new @merger = Merger.new end def parse(input) current_class = nil Parser.new(input).parse.each do |docset| node = @merger.merge(@doc_parser.parse(docset[:comment]), docset[:code]) # all methods, cfgs, ... following a class will be added to that class if node[:tagname] == :class current_class = node @documentation << node elsif current_class current_class[ node[:tagname] ] << node else @documentation << node end end end def result @documentation end end end