lib/term_utils/ap/result.rb in term_utils-0.3.0 vs lib/term_utils/ap/result.rb in term_utils-0.3.1

- old
+ new

@@ -33,11 +33,33 @@ @value.key = nil else @value = TermUtils::PropertyTreeNode.new end end + # Collects IDs. + # @param id [Symbol, Array<Symbol>] ID path. + # @return [Array<Symbol>] + def collect(id, &block) + node = @value + if id + id = [id] if id.is_a? Symbol + node = @value.find_node(id) + end + res = [] + return res unless node && node.child_nodes + if block + node.child_nodes.each do |n| + res << n.key if block.call(n.key) + end + else + node.child_nodes.each do |n| + res << n.key + end + end + res + end # Tests whether a given level/parameter/article is present in the result value. - # @param id [Symbol, Array<Symbol>] + # @param id [Symbol, Array<Symbol>] ID path. # @return [Boolean] def present?(id) if id.is_a? Symbol !!@value.child_node(id) elsif id.is_a? Array