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