accessibility_core 0.3.4 → 0.3.5

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/History.markdown CHANGED
@@ -1,3 +1,10 @@
1
+ # 0.3.5 - Add some missing bits for MRI
2
+
3
+ * Add `Range#relative_to` to convert ranges to positive indicies
4
+ * Wrap all strings from Cocoa as UTF8
5
+ * Unwrap all ruby strings to Cocoa as UTF8
6
+
7
+
1
8
  # 0.3.4 - More adjustments for AXElements
2
9
 
3
10
  * Add `NSContainsRect()` for MRI
data/README.markdown CHANGED
@@ -24,6 +24,7 @@ runtimes.
24
24
 
25
25
  * bridging for `NSAttributedString`
26
26
  * more descriptive error handling for the C extension
27
+ * handle string encodings that are not UTF8 (or a subset of UTF8)
27
28
 
28
29
 
29
30
  ## Tests
@@ -255,56 +255,32 @@ VALUE wrap_array_refs(CFArrayRef array) { WRAP_ARRAY(wrap_ref) }
255
255
  VALUE
256
256
  wrap_string(CFStringRef string)
257
257
  {
258
- // flying by the seat of our pants here, this hasn't failed yet
259
- // but probably will one day when I'm not looking
260
- VALUE ruby_string;
261
- CFIndex length = CFStringGetLength(string);
262
- char* name = (char*)CFStringGetCStringPtr(string, kCFStringEncodingMacRoman);
263
-
264
- if (name) {
265
- ruby_string = rb_usascii_str_new(name, length);
266
- }
267
- else {
268
- // currently we will always assume UTF-8
269
- // perhaps we could use CFStringGetSystemEncoding in the future?
270
- name = malloc(length+1);
271
- CFStringGetCString(
272
- string,
273
- name,
274
- length+1,
275
- kCFStringEncodingUTF8
276
- );
277
- ruby_string = rb_enc_str_new(name, length, rb_utf8_encoding());
278
- free(name);
279
- }
280
-
281
- return ruby_string;
258
+ return wrap_nsstring((NSString*)string);
282
259
  }
283
260
 
284
261
  VALUE
285
262
  wrap_nsstring(NSString* string)
286
263
  {
287
- return rb_enc_str_new(
288
- [string UTF8String],
289
- [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding],
290
- rb_utf8_encoding()
291
- );
264
+ // TODO: find a larger scope to apply this autoreleasepool
265
+ @autoreleasepool{
266
+ return rb_enc_str_new(
267
+ [string UTF8String],
268
+ [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding],
269
+ rb_utf8_encoding()
270
+ );
271
+ }
292
272
  }
293
273
 
294
274
  CFStringRef
295
275
  unwrap_string(VALUE string)
296
276
  {
297
- return CFStringCreateWithCStringNoCopy(
298
- NULL,
299
- StringValueCStr(string),
300
- 0,
301
- kCFAllocatorNull
302
- );
303
- /* return CFStringCreateWithCString( */
304
- /* NULL, */
305
- /* StringValuePtr(string), */
306
- /* kCFStringEncodingUTF8 */
307
- /* ); */
277
+ return CFStringCreateWithBytes(
278
+ NULL,
279
+ (UInt8*)StringValueCStr(string),
280
+ RSTRING_LEN(string),
281
+ kCFStringEncodingUTF8,
282
+ false
283
+ );
308
284
  }
309
285
 
310
286
  NSString*
@@ -149,5 +149,43 @@ class Array
149
149
  end
150
150
 
151
151
 
152
+ ##
153
+ # `accessibility-core` extensions to the `Range` class
154
+ class Range
155
+
156
+ ##
157
+ # Returns a new Range instance which has negative values in
158
+ # the receiver expanded relative to `max`
159
+ #
160
+ # @example
161
+ #
162
+ # (1..10).relative_to(10) # => (1..10)
163
+ # (-3..-1).relative_to(10) # => (7..9)
164
+ #
165
+ # @param max [Fixnum]
166
+ # @return [Range]
167
+ def relative_to max
168
+ beg = adjust_index self.begin, max
169
+ len = adjust_index self.end, max
170
+ len -= 1 if exclude_end?
171
+ beg..len
172
+ end
173
+
174
+
175
+ private
176
+
177
+ def adjust_index val, max
178
+ if val >= max
179
+ exclude_end? ? max : max - 1
180
+ elsif val < 0
181
+ max + val
182
+ else
183
+ val
184
+ end
185
+ end
186
+
187
+ end
188
+
189
+
152
190
  require 'accessibility/bridge/common'
153
191
  require 'accessibility/bridge/bridge.bundle'
@@ -6,6 +6,6 @@ module Accessibility
6
6
  # Namespace for `accessibility_core` specific classes
7
7
  module Core
8
8
  # return [String]
9
- VERSION = '0.3.4'
9
+ VERSION = '0.3.5'
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: accessibility_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-26 00:00:00.000000000 Z
12
+ date: 2012-12-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: yard
@@ -107,7 +107,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  segments:
109
109
  - 0
110
- hash: -3361611520076368904
110
+ hash: 865923332438012461
111
111
  required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  none: false
113
113
  requirements:
@@ -116,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
116
  version: '0'
117
117
  segments:
118
118
  - 0
119
- hash: -3361611520076368904
119
+ hash: 865923332438012461
120
120
  requirements: []
121
121
  rubyforge_project:
122
122
  rubygems_version: 1.8.24