AXElements 1.0.0.alpha6 → 1.0.0.alpha7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.yardopts +3 -0
- data/History.markdown +6 -0
- data/README.markdown +2 -2
- data/ext/accessibility/key_coder/extconf.rb +1 -1
- data/lib/accessibility/core.rb +1 -1
- data/lib/accessibility/dsl.rb +1 -18
- data/lib/accessibility/{pp_inspector.rb → pretty_printer.rb} +1 -1
- data/lib/accessibility/qualifier.rb +3 -3
- data/lib/accessibility/translator.rb +17 -8
- data/lib/accessibility/version.rb +1 -1
- data/lib/ax/element.rb +2 -2
- data/lib/mouse.rb +1 -1
- data/test/sanity/accessibility/{test_pp_inspector.rb → test_pretty_printer.rb} +3 -3
- data/test/test_core.rb +2 -2
- metadata +9 -8
    
        data/.yardopts
    CHANGED
    
    
    
        data/History.markdown
    ADDED
    
    
    
        data/README.markdown
    CHANGED
    
    | @@ -127,8 +127,8 @@ as some of the technical the technical underpinnings of AXElements. | |
| 127 127 | 
             
            [](https://codeclimate.com/github/Marketcircle/AXElements)
         | 
| 128 128 |  | 
| 129 129 | 
             
            AXElements has reached a point where the main focus is stability,
         | 
| 130 | 
            -
             | 
| 131 | 
            -
            code naming the next version "Lunatone".
         | 
| 130 | 
            +
            documentation, and additional conveniences. It will be out of this
         | 
| 131 | 
            +
            world, so we're code naming the next version "Lunatone".
         | 
| 132 132 |  | 
| 133 133 | 
             
            
         | 
| 134 134 |  | 
| @@ -10,7 +10,7 @@ else | |
| 10 10 | 
             
                clang = `which clang`.chomp
         | 
| 11 11 | 
             
                if clang.empty?
         | 
| 12 12 | 
             
                  $stdout.puts "Clang not installed. Cannot build C extension"
         | 
| 13 | 
            -
                   | 
| 13 | 
            +
                  raise "Clang not installed. Cannot build C extension"
         | 
| 14 14 | 
             
                else
         | 
| 15 15 | 
             
                  RbConfig::MAKEFILE_CONFIG["CC"]  = clang
         | 
| 16 16 | 
             
                  RbConfig::MAKEFILE_CONFIG["CXX"] = clang
         | 
    
        data/lib/accessibility/core.rb
    CHANGED
    
    
    
        data/lib/accessibility/dsl.rb
    CHANGED
    
    | @@ -550,6 +550,7 @@ module Accessibility::DSL | |
| 550 550 | 
             
                move_mouse_to obj, wait: 0 if obj
         | 
| 551 551 | 
             
                Mouse.click_down
         | 
| 552 552 | 
             
                yield if block_given?
         | 
| 553 | 
            +
              ensure
         | 
| 553 554 | 
             
                Mouse.click_up
         | 
| 554 555 | 
             
                sleep wait
         | 
| 555 556 | 
             
              end
         | 
| @@ -628,24 +629,6 @@ module Accessibility::DSL | |
| 628 629 | 
             
                Accessibility::Highlighter.new obj.bounds, opts
         | 
| 629 630 | 
             
              end
         | 
| 630 631 |  | 
| 631 | 
            -
              ##
         | 
| 632 | 
            -
              # @deprecated Use {AX::Element#inspect_subtree} instead.
         | 
| 633 | 
            -
              #
         | 
| 634 | 
            -
              # Get the dump of the subtree of children and descendants for the given
         | 
| 635 | 
            -
              # element. Each generation down the tree will be indented another level,
         | 
| 636 | 
            -
              # and each element will be inspected.
         | 
| 637 | 
            -
              #
         | 
| 638 | 
            -
              # @example
         | 
| 639 | 
            -
              #
         | 
| 640 | 
            -
              #   puts subtree app
         | 
| 641 | 
            -
              #
         | 
| 642 | 
            -
              # @param element [AX::Element]
         | 
| 643 | 
            -
              # @return [String]
         | 
| 644 | 
            -
              def subtree element
         | 
| 645 | 
            -
                element.inspect_subtree
         | 
| 646 | 
            -
              end
         | 
| 647 | 
            -
              alias_method :subtree_for, :subtree
         | 
| 648 | 
            -
             | 
| 649 632 | 
             
              ##
         | 
| 650 633 | 
             
              # @note You will need to have GraphViz command line tools installed
         | 
| 651 634 | 
             
              #       in order for this to work.
         | 
| @@ -10,7 +10,7 @@ | |
| 10 10 | 
             
            #  - `#attribute` returns the value of a given attribute
         | 
| 11 11 | 
             
            #  - `#size_of` returns the size for an attribute
         | 
| 12 12 | 
             
            #
         | 
| 13 | 
            -
            module Accessibility:: | 
| 13 | 
            +
            module Accessibility::PrettyPrinter
         | 
| 14 14 |  | 
| 15 15 | 
             
              ##
         | 
| 16 16 | 
             
              # Create an identifier for the receiver by using various attributes
         | 
| @@ -29,7 +29,7 @@ class Accessibility::Qualifier | |
| 29 29 | 
             
                @klass    = TRANSLATOR.classify(klass)
         | 
| 30 30 | 
             
                @criteria = criteria
         | 
| 31 31 | 
             
                @block    = Proc.new if block_given?
         | 
| 32 | 
            -
                compile | 
| 32 | 
            +
                compile!
         | 
| 33 33 | 
             
              end
         | 
| 34 34 |  | 
| 35 35 | 
             
              ##
         | 
| @@ -63,8 +63,8 @@ class Accessibility::Qualifier | |
| 63 63 | 
             
              # {#qualifies?}.
         | 
| 64 64 | 
             
              #
         | 
| 65 65 | 
             
              # @param criteria [Hash]
         | 
| 66 | 
            -
              def compile | 
| 67 | 
            -
                @filters = criteria.map do |key, value|
         | 
| 66 | 
            +
              def compile!
         | 
| 67 | 
            +
                @filters = @criteria.map do |key, value|
         | 
| 68 68 | 
             
                  if value.kind_of? Hash
         | 
| 69 69 | 
             
                    [:subsearch, key, value]
         | 
| 70 70 | 
             
                  elsif key.kind_of? Array
         | 
| @@ -72,7 +72,9 @@ class Accessibility::Translator | |
| 72 72 | 
             
              # @param keys [Array<String>]
         | 
| 73 73 | 
             
              # @return [Array<Symbol>]
         | 
| 74 74 | 
             
              def rubyize keys
         | 
| 75 | 
            -
                keys.map { |x| @rubyisms[x] }
         | 
| 75 | 
            +
                keys = keys.map { |x| @rubyisms[x] }
         | 
| 76 | 
            +
                keys.flatten!
         | 
| 77 | 
            +
                keys
         | 
| 76 78 | 
             
              end
         | 
| 77 79 |  | 
| 78 80 | 
             
              ##
         | 
| @@ -133,6 +135,17 @@ class Accessibility::Translator | |
| 133 135 |  | 
| 134 136 | 
             
              private
         | 
| 135 137 |  | 
| 138 | 
            +
              def preloads
         | 
| 139 | 
            +
                {
         | 
| 140 | 
            +
                 # basic preloads
         | 
| 141 | 
            +
                 id:                   KAXIdentifierAttribute,
         | 
| 142 | 
            +
                 placeholder:          KAXPlaceholderValueAttribute,
         | 
| 143 | 
            +
                 # workarounds for known case where AX uses "Is" for a boolean attribute
         | 
| 144 | 
            +
                 application_running:  KAXIsApplicationRunningAttribute,
         | 
| 145 | 
            +
                 application_running?: KAXIsApplicationRunningAttribute
         | 
| 146 | 
            +
                }
         | 
| 147 | 
            +
              end
         | 
| 148 | 
            +
             | 
| 136 149 | 
             
              # @return [Hash{String=>String}]
         | 
| 137 150 | 
             
              def init_unprefixes
         | 
| 138 151 | 
             
                @unprefixes = Hash.new do |hash, key|
         | 
| @@ -143,8 +156,9 @@ class Accessibility::Translator | |
| 143 156 | 
             
              # @return [Hash{String=>Symbol}]
         | 
| 144 157 | 
             
              def init_rubyisms
         | 
| 145 158 | 
             
                @rubyisms = Hash.new do |hash, key|
         | 
| 146 | 
            -
                  hash[key] = Accessibility::Inflector.underscore(@unprefixes[key]).to_sym
         | 
| 159 | 
            +
                  hash[key] = [Accessibility::Inflector.underscore(@unprefixes[key]).to_sym]
         | 
| 147 160 | 
             
                end
         | 
| 161 | 
            +
                preloads.each_pair do |k,v| @rubyisms[v] << k end
         | 
| 148 162 | 
             
              end
         | 
| 149 163 |  | 
| 150 164 | 
             
              # @return [Hash{Symbol=>String}]
         | 
| @@ -152,12 +166,7 @@ class Accessibility::Translator | |
| 152 166 | 
             
                @cocoaifications = Hash.new do |hash, key|
         | 
| 153 167 | 
             
                  hash[key] = "AX#{Accessibility::Inflector.camelize(key.chomp QUESTION_MARK)}"
         | 
| 154 168 | 
             
                end
         | 
| 155 | 
            -
                 | 
| 156 | 
            -
                @cocoaifications[:id]          = KAXIdentifierAttribute
         | 
| 157 | 
            -
                @cocoaifications[:placeholder] = KAXPlaceholderValueAttribute
         | 
| 158 | 
            -
                # workaround the one known case where AX uses "Is" for a boolean attribute
         | 
| 159 | 
            -
                @cocoaifications[:application_running]  = # let the value all fall through
         | 
| 160 | 
            -
                @cocoaifications[:application_running?] = KAXIsApplicationRunningAttribute
         | 
| 169 | 
            +
                preloads.each_pair do |k, v| @cocoaifications[k] = v end
         | 
| 161 170 | 
             
              end
         | 
| 162 171 |  | 
| 163 172 | 
             
              # @return [Hash{String=>String}]
         | 
    
        data/lib/ax/element.rb
    CHANGED
    
    | @@ -6,7 +6,7 @@ require 'accessibility/translator' | |
| 6 6 | 
             
            require 'accessibility/enumerators'
         | 
| 7 7 | 
             
            require 'accessibility/qualifier'
         | 
| 8 8 | 
             
            require 'accessibility/errors'
         | 
| 9 | 
            -
            require 'accessibility/ | 
| 9 | 
            +
            require 'accessibility/pretty_printer'
         | 
| 10 10 |  | 
| 11 11 |  | 
| 12 12 | 
             
            ##
         | 
| @@ -19,7 +19,7 @@ require 'accessibility/pp_inspector' | |
| 19 19 | 
             
            # This abstract base class provides generic functionality that all
         | 
| 20 20 | 
             
            # accessibility objects require.
         | 
| 21 21 | 
             
            class AX::Element
         | 
| 22 | 
            -
              include Accessibility:: | 
| 22 | 
            +
              include Accessibility::PrettyPrinter
         | 
| 23 23 |  | 
| 24 24 | 
             
              # @param ref [AXUIElementRef]
         | 
| 25 25 | 
             
              def initialize ref
         | 
    
        data/lib/mouse.rb
    CHANGED
    
    | @@ -224,7 +224,7 @@ module Mouse | |
| 224 224 | 
             
              # Executes a mouse movement animation. It can be a simple cursor
         | 
| 225 225 | 
             
              # move or a drag depending on what is passed to `type`.
         | 
| 226 226 | 
             
              def animate type, button, from, to, duration
         | 
| 227 | 
            -
                current =  | 
| 227 | 
            +
                current = from
         | 
| 228 228 | 
             
                xstep   = (to.x - current.x) / (FPS * duration)
         | 
| 229 229 | 
             
                ystep   = (to.y - current.y) / (FPS * duration)
         | 
| 230 230 | 
             
                start   = NSDate.date
         | 
| @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            # -*- coding: utf-8 -*-
         | 
| 2 2 |  | 
| 3 | 
            -
            class  | 
| 4 | 
            -
              include Accessibility:: | 
| 3 | 
            +
            class TestAccessibilityPrettyPrinter < MiniTest::Unit::TestCase
         | 
| 4 | 
            +
              include Accessibility::PrettyPrinter
         | 
| 5 5 |  | 
| 6 | 
            -
              # expected API for  | 
| 6 | 
            +
              # expected API for PrettyPrinter module
         | 
| 7 7 | 
             
              attr_reader :attributes
         | 
| 8 8 | 
             
              def attribute attr; @attribute; end
         | 
| 9 9 | 
             
              def size_of   attr; @size_of;   end
         | 
    
        data/test/test_core.rb
    CHANGED
    
    | @@ -63,8 +63,8 @@ class TestAccessibilityElement < MiniTest::Unit::TestCase | |
| 63 63 |  | 
| 64 64 | 
             
                assert_nil window.attribute(KAXGrowAreaAttribute), 'KAXErrorNoValue == nil'
         | 
| 65 65 |  | 
| 66 | 
            -
                assert_nil | 
| 67 | 
            -
                 | 
| 66 | 
            +
                assert_nil invalid_ref.attribute(KAXRoleAttribute), 'Dead element == nil'
         | 
| 67 | 
            +
                assert_nil invalid_ref.attribute(KAXChildrenAttribute)
         | 
| 68 68 |  | 
| 69 69 | 
             
                assert_raises(ArgumentError) { app.attribute('MADE_UP_ATTR') }
         | 
| 70 70 | 
             
              end
         | 
    
        metadata
    CHANGED
    
    | @@ -2,14 +2,14 @@ | |
| 2 2 | 
             
            name: AXElements
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 4 | 
             
              prerelease: 6
         | 
| 5 | 
            -
              version: 1.0.0. | 
| 5 | 
            +
              version: 1.0.0.alpha7
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| 8 8 | 
             
            - Mark Rada
         | 
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012- | 
| 12 | 
            +
            date: 2012-12-05 00:00:00 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: minitest
         | 
| @@ -44,21 +44,21 @@ dependencies: | |
| 44 44 | 
             
                  - !ruby/object:Gem::Version
         | 
| 45 45 | 
             
                    version: 0.8.3
         | 
| 46 46 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 47 | 
            -
              name:  | 
| 47 | 
            +
              name: kramdown
         | 
| 48 48 | 
             
              prerelease: false
         | 
| 49 49 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 50 50 | 
             
                none: false
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - ~>
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version:  | 
| 54 | 
            +
                    version: 0.14.1
         | 
| 55 55 | 
             
              type: :development
         | 
| 56 56 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 57 57 | 
             
                none: false
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 59 | 
             
                - - ~>
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version:  | 
| 61 | 
            +
                    version: 0.14.1
         | 
| 62 62 | 
             
            description: 'AXElements is a UI automation DSL built on top of the Mac OS X Accessibility
         | 
| 63 63 |  | 
| 64 64 | 
             
              Framework that allows code to be written in a very natural and declarative
         | 
| @@ -79,7 +79,7 @@ files: | |
| 79 79 | 
             
            - lib/accessibility/factory.rb
         | 
| 80 80 | 
             
            - lib/accessibility/graph.rb
         | 
| 81 81 | 
             
            - lib/accessibility/highlighter.rb
         | 
| 82 | 
            -
            - lib/accessibility/ | 
| 82 | 
            +
            - lib/accessibility/pretty_printer.rb
         | 
| 83 83 | 
             
            - lib/accessibility/qualifier.rb
         | 
| 84 84 | 
             
            - lib/accessibility/screen_recorder.rb
         | 
| 85 85 | 
             
            - lib/accessibility/statistics.rb
         | 
| @@ -118,6 +118,7 @@ files: | |
| 118 118 | 
             
            - rakelib/test.rake
         | 
| 119 119 | 
             
            - Rakefile
         | 
| 120 120 | 
             
            - README.markdown
         | 
| 121 | 
            +
            - History.markdown
         | 
| 121 122 | 
             
            - .yardopts
         | 
| 122 123 | 
             
            - test/integration/accessibility/test_core.rb
         | 
| 123 124 | 
             
            - test/integration/accessibility/test_dsl.rb
         | 
| @@ -136,7 +137,7 @@ files: | |
| 136 137 | 
             
            - test/sanity/accessibility/test_errors.rb
         | 
| 137 138 | 
             
            - test/sanity/accessibility/test_factory.rb
         | 
| 138 139 | 
             
            - test/sanity/accessibility/test_highlighter.rb
         | 
| 139 | 
            -
            - test/sanity/accessibility/ | 
| 140 | 
            +
            - test/sanity/accessibility/test_pretty_printer.rb
         | 
| 140 141 | 
             
            - test/sanity/accessibility/test_qualifier.rb
         | 
| 141 142 | 
             
            - test/sanity/accessibility/test_statistics.rb
         | 
| 142 143 | 
             
            - test/sanity/accessibility/test_string.rb
         | 
| @@ -196,7 +197,7 @@ test_files: | |
| 196 197 | 
             
            - test/sanity/accessibility/test_errors.rb
         | 
| 197 198 | 
             
            - test/sanity/accessibility/test_factory.rb
         | 
| 198 199 | 
             
            - test/sanity/accessibility/test_highlighter.rb
         | 
| 199 | 
            -
            - test/sanity/accessibility/ | 
| 200 | 
            +
            - test/sanity/accessibility/test_pretty_printer.rb
         | 
| 200 201 | 
             
            - test/sanity/accessibility/test_qualifier.rb
         | 
| 201 202 | 
             
            - test/sanity/accessibility/test_statistics.rb
         | 
| 202 203 | 
             
            - test/sanity/accessibility/test_string.rb
         |