Module: PSD::Node::Search
- Included in:
- Base
- Defined in:
- lib/psd/nodes/search.rb
Instance Method Summary collapse
-
#children_at_path(path, opts = {}) ⇒ Object
(also: #children_with_path)
Searches the tree structure for a node at the given path.
- #find_by_id(id) ⇒ Object
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 |