module UnderOs::UI::Traversing

Public Instance Methods

children(css_rule=nil) click to toggle source
# File lib/under_os/ui/utils/traversing.rb, line 32
def children(css_rule=nil)
  result = @_.subviews.map{|v| UnderOs::UI::View.new(v) if v}.compact
  css_rule ? result.select{|v| v.matches(css_rule)} : result
end
empty?() click to toggle source
# File lib/under_os/ui/utils/traversing.rb, line 41
def empty?
  @_.subviews.empty?
end
find(css_rule) click to toggle source
# File lib/under_os/ui/utils/traversing.rb, line 6
def find(css_rule)
  [].tap do |result|
    children.each do |view|
      result << view if view.matches(css_rule)
      view.find(css_rule).each do |sub|
        result << sub
      end
    end
  end
end
first(css_rule) click to toggle source
# File lib/under_os/ui/utils/traversing.rb, line 2
def first(css_rule)
  find(css_rule)[0]
end
matches(css_rule) click to toggle source
# File lib/under_os/ui/utils/traversing.rb, line 17
def matches(css_rule)
  UnderOs::Page::StylesMatcher.new(css_rule).match(self)
end
parent(css_rule=nil) click to toggle source
# File lib/under_os/ui/utils/traversing.rb, line 21
def parent(css_rule=nil)
  if ! css_rule
    UnderOs::UI::View.new(@_.superview) if @_.superview
  else
    parent = self
    while parent.is_a?(UnderOs::UI::View) && (parent = parent.parent)
      return parent if parent.matches(css_rule)
    end
  end
end
siblings(css_rule=nil) click to toggle source
# File lib/under_os/ui/utils/traversing.rb, line 37
def siblings(css_rule=nil)
  parent ? (parent.children(css_rule) - [self]) : []
end