Module: PSD::Node::Search

Included in:
Base
Defined in:
lib/psd/nodes/search.rb

Instance Method Summary collapse

Instance Method Details

#children_at_path(path, opts = {}) ⇒ Object Also known as: children_with_path

Searches the tree structure for a node at the given path. The path is defined by the layer/folder names. Because the PSD format does not require unique layer/folder names, we always return an array of all found nodes.


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/psd/nodes/search.rb', line 12

def children_at_path(path, opts={})
  path = path.split('/').delete_if { |p| p == "" } unless path.is_a?(Array)

  path = path.dup
  query = path.shift
  matches = children.select do |c|
    if opts[:case_sensitive]
      c.name == query
    else
      c.name.downcase == query.downcase
    end
  end

  if path.length == 0
    return matches
  else
    return matches.map { |m| m.children_at_path(path.dup, opts) }.flatten
  end
end

#find_by_id(id) ⇒ Object


4
5
6
# File 'lib/psd/nodes/search.rb', line 4

def find_by_id(id)
  subtree.select { |n| n.id == id }.first
end