Module: Accessibility::PrettyPrinter
- Included in:
- AX::Element
- Defined in:
- lib/accessibility/pretty_printer.rb
Overview
Convenience methods to use when building an #inspect
method for
AX::Element and its descendants.
The module only expects three methods in order to operate:
#attributes
returns a list of available attributes#attribute
returns the value of a given attribute#size_of
returns the size for an attribute
Instance Method Summary collapse
-
#pp_checkbox(attr) ⇒ String
Create a string that looks like a labeled check box.
-
#pp_children ⇒ String
Create a string that nicely presents the number of children that the receiver has.
-
#pp_enabled ⇒ String
Safely create a #pp_checkbox for the
KAXEnabledAttribute
. -
#pp_focused ⇒ String
Safely create a #pp_checkbox for the
KAXFocusedAttribute
. -
#pp_identifier ⇒ String, #to_s
Create an identifier for the receiver by using various attributes that should make it very easy to identify the element.
-
#pp_position ⇒ String
Create a string that succinctly encodes the screen coordinates of the receiver.
Instance Method Details
#pp_checkbox(attr) ⇒ String
Create a string that looks like a labeled check box. The label is the given attribute, and the check box value will be determined by the value of the attribute.
90 91 92 |
# File 'lib/accessibility/pretty_printer.rb', line 90 def pp_checkbox attr " #{attr}[#{attribute(attr) ? CHECKMARK : CROSS }]" end |
#pp_children ⇒ String
Create a string that nicely presents the number of children that the receiver has.
73 74 75 76 77 78 79 80 81 |
# File 'lib/accessibility/pretty_printer.rb', line 73 def pp_children if attributes.include? :children child_count = size_of :children return " #{child_count} children" if child_count > 1 return ONE_CHILD if child_count == 1 # there are some odd edge cases where 0 children are reported end EMPTY_STRING end |
#pp_enabled ⇒ String
Safely create a #pp_checkbox for the KAXEnabledAttribute
If the receiver does not have the attribute then an empty string will be returned.
101 102 103 104 105 106 107 |
# File 'lib/accessibility/pretty_printer.rb', line 101 def pp_enabled if attributes.include? :enabled pp_checkbox(:enabled) else EMPTY_STRING end end |
#pp_focused ⇒ String
Safely create a #pp_checkbox for the KAXFocusedAttribute
If the receiver does not have the attribute then an empty string will be returned.
116 117 118 119 120 121 122 |
# File 'lib/accessibility/pretty_printer.rb', line 116 def pp_focused if attributes.include? :focused pp_checkbox(:focused) else EMPTY_STRING end end |
#pp_identifier ⇒ String, #to_s
Create an identifier for the receiver by using various attributes that should make it very easy to identify the element.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/accessibility/pretty_printer.rb', line 20 def pp_identifier # @note use, or lack of use, of #inspect is intentional for visual effect if attributes.include? :value val = attribute :value if val.kind_of? NSString return " #{val.inspect}" unless val.empty? else # we assume that nil is not a legitimate value return " value=#{val.inspect}" unless val.nil? end end if attributes.include? :title val = attribute(:title) return " #{val.inspect}" if val && !val.empty? end if attributes.include? :title_ui_element val = attribute :title_ui_element return " #{val.inspect}" if val end if attributes.include? :description val = attribute(:description).to_s return " #{val}" unless val.empty? end if attributes.include? :identifier return " id=#{attribute(:identifier)}" end rescue NoMethodError end |
#pp_position ⇒ String
Create a string that succinctly encodes the screen coordinates of the receiver.
60 61 62 63 64 65 66 |
# File 'lib/accessibility/pretty_printer.rb', line 60 def pp_position if attributes.include? :position position = attribute :position return " (#{position.x}, #{position.y})" if position end EMPTY_STRING end |