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 CHANGED
@@ -8,3 +8,6 @@
8
8
  --hide-void-return
9
9
  lib/**/*.rb
10
10
  ext/**/*{.m,.c}
11
+ -
12
+ History.markdown
13
+
data/History.markdown ADDED
@@ -0,0 +1,6 @@
1
+ # 1.0.0
2
+
3
+ * Remove `Accessibility.application_with_bundle_identifier`; use `AX::Application.new` instead
4
+ * Remove `Accessibility.application_with_name; use `AX::Application.new` instead
5
+ * Remove `DSL#subtree_for`; use `Element#inspect_subtree` instead
6
+
data/README.markdown CHANGED
@@ -127,8 +127,8 @@ as some of the technical the technical underpinnings of AXElements.
127
127
  [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/Marketcircle/AXElements)
128
128
 
129
129
  AXElements has reached a point where the main focus is stability,
130
- features, and documentation. It will be out of this world, so we're
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
  ![The Moon](https://github.com/Marketcircle/AXElements/raw/gh-pages/images/next_version.png)
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
- exit 1
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
@@ -112,7 +112,7 @@ module Accessibility::Element
112
112
  when 0
113
113
  ptr.value.to_ruby
114
114
  when KAXErrorNoValue, KAXErrorInvalidUIElement
115
- name == KAXChildrenAttribute ? [] : nil
115
+ nil
116
116
  else
117
117
  handle_error code, name
118
118
  end
@@ -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::PPInspector
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 criteria
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 criteria
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
- # preload the table
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}]
@@ -4,7 +4,7 @@
4
4
  # The main AXElements namespace.
5
5
  module Accessibility
6
6
  # @return [String]
7
- VERSION = '1.0.0.alpha6'
7
+ VERSION = '1.0.0.alpha7'
8
8
 
9
9
  # @return [String]
10
10
  CODE_NAME = 'ルナトーン'
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/pp_inspector'
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::PPInspector
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 = current_position
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 TestAccessibilityPPInspector < MiniTest::Unit::TestCase
4
- include Accessibility::PPInspector
3
+ class TestAccessibilityPrettyPrinter < MiniTest::Unit::TestCase
4
+ include Accessibility::PrettyPrinter
5
5
 
6
- # expected API for PPInspector module
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 invalid_ref.attribute(KAXRoleAttribute), 'Dead element == nil'
67
- assert_empty invalid_ref.attribute(KAXChildrenAttribute)
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.alpha6
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-11-28 00:00:00 Z
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: redcarpet
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: "1.17"
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: "1.17"
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/pp_inspector.rb
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/test_pp_inspector.rb
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/test_pp_inspector.rb
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