Loading lib/jsduck/ast.rb +3 −3 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ module JsDuck # { :tagname => :method, :name => "foo", ... } # def detect(node) ast = AstNode.new(node) ast = AstNode.create(node) exp = ast.expression_statement? ? ast["expression"] : nil var = ast.variable_declaration? ? ast["declarations"][0] : nil Loading Loading @@ -142,11 +142,11 @@ module JsDuck private def function?(ast) AstNode.new(ast).function? AstNode.create(ast).function? end def empty_fn?(ast) AstNode.new(ast).ext_empty_fn? AstNode.create(ast).ext_empty_fn? end def object?(ast) Loading lib/jsduck/ast_node.rb +12 −3 Original line number Diff line number Diff line require "jsduck/serializer" require "jsduck/evaluator" require "jsduck/ext_patterns" require "jsduck/ast_node_array" module JsDuck # Wraps around AST node returned from Esprima, providing methods for # investigating it. class AstNode # Factor method that creates either AstNode or AstNodeArray. def self.create(node) if node.is_a? Array AstNodeArray.new(node) else AstNode.new(node) end end # Initialized with a AST Hash from Esprima. def initialize(node) @node = node || {} Loading @@ -14,7 +24,7 @@ module JsDuck # Returns a child AST node as AstNode class. def child(name) AstNode.new(@node[name]) AstNode.create(@node[name]) end # Shorthand for #child method def [](name) Loading Loading @@ -75,8 +85,7 @@ module JsDuck def each_property return unless object_expression? @node["properties"].each do |p| ast = AstNode.new(p) child("properties").each do |ast| yield(ast["key"].key_value, ast["value"], ast) end end Loading lib/jsduck/ast_node_array.rb 0 → 100644 +29 −0 Original line number Diff line number Diff line require "jsduck/ast_node" module JsDuck # Wraps around array of AST nodes. class AstNodeArray # Initialized with array of AST Hashes from Esprima. def initialize(nodes) @nodes = nodes || [] end # Returns a child AST node as AstNode class. def [](i) AstNode.create(@nodes[i]) end # The length of array def length @nodes.length end # Iterates over all the AstNodes in array. def each @nodes.each {|p| yield(AstNode.create(p)) } end end end Loading
lib/jsduck/ast.rb +3 −3 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ module JsDuck # { :tagname => :method, :name => "foo", ... } # def detect(node) ast = AstNode.new(node) ast = AstNode.create(node) exp = ast.expression_statement? ? ast["expression"] : nil var = ast.variable_declaration? ? ast["declarations"][0] : nil Loading Loading @@ -142,11 +142,11 @@ module JsDuck private def function?(ast) AstNode.new(ast).function? AstNode.create(ast).function? end def empty_fn?(ast) AstNode.new(ast).ext_empty_fn? AstNode.create(ast).ext_empty_fn? end def object?(ast) Loading
lib/jsduck/ast_node.rb +12 −3 Original line number Diff line number Diff line require "jsduck/serializer" require "jsduck/evaluator" require "jsduck/ext_patterns" require "jsduck/ast_node_array" module JsDuck # Wraps around AST node returned from Esprima, providing methods for # investigating it. class AstNode # Factor method that creates either AstNode or AstNodeArray. def self.create(node) if node.is_a? Array AstNodeArray.new(node) else AstNode.new(node) end end # Initialized with a AST Hash from Esprima. def initialize(node) @node = node || {} Loading @@ -14,7 +24,7 @@ module JsDuck # Returns a child AST node as AstNode class. def child(name) AstNode.new(@node[name]) AstNode.create(@node[name]) end # Shorthand for #child method def [](name) Loading Loading @@ -75,8 +85,7 @@ module JsDuck def each_property return unless object_expression? @node["properties"].each do |p| ast = AstNode.new(p) child("properties").each do |ast| yield(ast["key"].key_value, ast["value"], ast) end end Loading
lib/jsduck/ast_node_array.rb 0 → 100644 +29 −0 Original line number Diff line number Diff line require "jsduck/ast_node" module JsDuck # Wraps around array of AST nodes. class AstNodeArray # Initialized with array of AST Hashes from Esprima. def initialize(nodes) @nodes = nodes || [] end # Returns a child AST node as AstNode class. def [](i) AstNode.create(@nodes[i]) end # The length of array def length @nodes.length end # Iterates over all the AstNodes in array. def each @nodes.each {|p| yield(AstNode.create(p)) } end end end