module Accessibility::ArrayCompatibility
An old hack on arrays that allows you to map a single method across an array of {AX::Element} objects more succinctly than ‘Symbol#to_proc`.
I’ve always been on the fence as to whether this was a good idea or not, but at this point there is too much code written that depends on this and so I will just keep it around for backwards compatability.
Constants
- TRANSLATOR
@private @return [Accessibility::Translator]
Public Instance Methods
method_missing(method, *args)
click to toggle source
@note Debatably bad idea. Maintained for backwards compatibility.
If the array contains {AX::Element} objects and the elements respond to the method name then the method will be mapped across the array. In this case, you can artificially pluralize the attribute name and the lookup will singularize the method name for you.
@example
rows = outline.rows # :rows is already an attribute # edge case fields = rows.text_fields # you want the AX::TextField from each row fields.values # grab the values outline.rows.text_fields.values # all at once
Calls superclass method
# File lib/ax_elements/nsarray_compat.rb, line 31 def method_missing method, *args super unless first.kind_of?(AX::Element) || (empty? && method != :to_hash) # hack for GH-9 smethod = TRANSLATOR.singularize(method.to_s.chomp('?')) map do |x| if x.respond_to? method then x.send method, *args else x.send smethod, *args end end end