rb-appscript 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/CHANGES +19 -0
  2. data/LICENSE +1 -1
  3. data/README +5 -5
  4. data/TODO +3 -1
  5. data/doc/aem-manual/01_introduction.html +2 -2
  6. data/doc/aem-manual/02_apioverview.html +2 -2
  7. data/doc/aem-manual/03_packingandunpackingdata.html +2 -2
  8. data/doc/aem-manual/04_references.html +9 -21
  9. data/doc/aem-manual/05_targettingapplications.html +3 -3
  10. data/doc/aem-manual/06_buildingandsendingevents.html +2 -2
  11. data/doc/aem-manual/07_findapp.html +2 -2
  12. data/doc/aem-manual/08_examples.html +3 -3
  13. data/doc/aem-manual/index.html +2 -2
  14. data/doc/appscript-manual/01_introduction.html +2 -2
  15. data/doc/appscript-manual/02_aboutappscripting.html +2 -2
  16. data/doc/appscript-manual/03_quicktutorial.html +2 -2
  17. data/doc/appscript-manual/04_gettinghelp.html +2 -2
  18. data/doc/appscript-manual/05_keywordconversion.html +2 -2
  19. data/doc/appscript-manual/06_classesandenums.html +2 -2
  20. data/doc/appscript-manual/07_applicationobjects.html +2 -2
  21. data/doc/appscript-manual/08_realvsgenericreferences.html +2 -2
  22. data/doc/appscript-manual/09_referenceforms.html +3 -3
  23. data/doc/appscript-manual/10_referenceexamples.html +2 -2
  24. data/doc/appscript-manual/11_applicationcommands.html +2 -2
  25. data/doc/appscript-manual/12_commandexamples.html +2 -2
  26. data/doc/appscript-manual/13_performanceissues.html +2 -2
  27. data/doc/appscript-manual/14_notes.html +2 -2
  28. data/doc/appscript-manual/index.html +2 -2
  29. data/doc/{appscript-manual/full.css → full.css} +0 -0
  30. data/doc/index.html +2 -2
  31. data/doc/mactypes-manual/index.html +2 -2
  32. data/doc/osax-manual/index.html +6 -6
  33. data/extconf.rb +13 -3
  34. data/rb-appscript.gemspec +2 -1
  35. data/src/lib/_aem/aemreference.rb +22 -31
  36. data/src/lib/_aem/codecs.rb +21 -19
  37. data/src/lib/_aem/connect.rb +7 -3
  38. data/src/lib/_aem/findapp.rb +7 -3
  39. data/src/lib/_aem/mactypes.rb +22 -14
  40. data/src/lib/_aem/send.rb +7 -3
  41. data/src/lib/_aem/typewrappers.rb +7 -3
  42. data/src/lib/_appscript/defaultterminology.rb +7 -3
  43. data/src/lib/_appscript/referencerenderer.rb +7 -3
  44. data/src/lib/_appscript/reservedkeywords.rb +8 -3
  45. data/src/lib/_appscript/safeobject.rb +12 -2
  46. data/src/lib/_appscript/terminology.rb +31 -15
  47. data/src/lib/aem.rb +8 -3
  48. data/src/lib/appscript.rb +74 -46
  49. data/src/lib/osax.rb +7 -6
  50. data/src/rbae.c +46 -77
  51. data/test/test_aemreference.rb +10 -4
  52. data/test/test_appscriptcommands.rb +3 -1
  53. data/test/test_appscriptreference.rb +5 -3
  54. data/test/test_codecs.rb +3 -1
  55. data/test/test_findapp.rb +3 -1
  56. data/test/test_mactypes.rb +12 -6
  57. data/test/test_osax.rb +3 -6
  58. metadata +44 -38
  59. data/doc/aem-manual/full.css +0 -21
data/src/rbae.c CHANGED
@@ -1,5 +1,10 @@
1
1
  /*
2
- * Copyright (C) 2006 HAS
2
+ * rb-appscript
3
+ *
4
+ * ae -- a low-level API providing a basic Ruby wrapper around the various
5
+ * Apple Event Manager, Process Manager and Launch Services APIs used by aem
6
+ *
7
+ * Copyright (C) 2006-2008 HAS. Released under MIT License.
3
8
  *
4
9
  * Thanks to:
5
10
  * - FUJIMOTO Hisakuni, author of RubyAEOSA
@@ -11,8 +16,6 @@
11
16
  #include <CoreFoundation/CoreFoundation.h>
12
17
  #include "SendThreadSafe.h"
13
18
 
14
- VALUE rb_ll2big(LONG_LONG); // keeps gcc happy
15
-
16
19
  // AE module and classes
17
20
  static VALUE mAE;
18
21
  static VALUE cAEDesc;
@@ -38,6 +41,14 @@ AEEventHandlerUPP upp_GenericEventHandler;
38
41
  AECoercionHandlerUPP upp_GenericCoercionHandler;
39
42
 
40
43
 
44
+ // these macros were added in 1.8.6
45
+
46
+ #if !defined(RSTRING_LEN)
47
+ #define RSTRING_LEN(x) (RSTRING(x)->len)
48
+ #define RSTRING_PTR(x) (RSTRING(x)->ptr)
49
+ #endif
50
+
51
+
41
52
  /**********************************************************************/
42
53
  // Raise MacOS error
43
54
 
@@ -79,8 +90,8 @@ rbAE_MacOSError_inspect(VALUE self)
79
90
  static DescType
80
91
  rbStringToDescType(VALUE obj)
81
92
  {
82
- if (rb_obj_is_kind_of(obj, rb_cString) && RSTRING(obj)->len == 4) {
83
- return CFSwapInt32HostToBig(*(DescType *)(RSTRING(obj)->ptr));
93
+ if (rb_obj_is_kind_of(obj, rb_cString) && RSTRING_LEN(obj) == 4) {
94
+ return CFSwapInt32HostToBig(*(DescType *)(RSTRING_PTR(obj)));
84
95
  } else {
85
96
  rb_raise(rb_eArgError, "Not a four-char-code string.");
86
97
  }
@@ -146,7 +157,7 @@ rbAE_AEDesc_new(VALUE class, VALUE type, VALUE data)
146
157
 
147
158
  Check_Type(data, T_STRING);
148
159
  err = AECreateDesc(rbStringToDescType(type),
149
- RSTRING(data)->ptr, RSTRING(data)->len,
160
+ RSTRING_PTR(data), RSTRING_LEN(data),
150
161
  &desc);
151
162
  if (err != noErr) rbAE_raiseMacOSError("Can't create AEDesc.", err);
152
163
  return rbAE_wrapAEDesc(&desc);
@@ -190,7 +201,7 @@ rbAE_AEDesc_newUnflatten(VALUE class, VALUE data)
190
201
  AEDesc desc;
191
202
 
192
203
  Check_Type(data, T_STRING);
193
- err = AEUnflattenDesc(RSTRING(data)->ptr, &desc);
204
+ err = AEUnflattenDesc(RSTRING_PTR(data), &desc);
194
205
  if (err != noErr) rbAE_raiseMacOSError("Can't create AEDesc.", err);
195
206
  return rbAE_wrapAEDesc(&desc);
196
207
  }
@@ -438,8 +449,8 @@ rbAE_findApplication(VALUE self, VALUE creator, VALUE bundleID, VALUE name)
438
449
  inCreator = (creator == Qnil) ? kLSUnknownCreator : rbStringToDescType(creator);
439
450
  if (bundleID != Qnil) {
440
451
  inBundleID = CFStringCreateWithBytes(NULL,
441
- (UInt8 *)(RSTRING(bundleID)->ptr),
442
- (CFIndex)(RSTRING(bundleID)->len),
452
+ (UInt8 *)(RSTRING_PTR(bundleID)),
453
+ (CFIndex)(RSTRING_LEN(bundleID)),
443
454
  kCFStringEncodingUTF8,
444
455
  false);
445
456
  if (inBundleID == NULL) rb_raise(rb_eRuntimeError, "Invalid bundle ID string.");
@@ -448,8 +459,8 @@ rbAE_findApplication(VALUE self, VALUE creator, VALUE bundleID, VALUE name)
448
459
  }
449
460
  if (name != Qnil) {
450
461
  inName = CFStringCreateWithBytes(NULL,
451
- (UInt8 *)(RSTRING(name)->ptr),
452
- (CFIndex)(RSTRING(name)->len),
462
+ (UInt8 *)(RSTRING_PTR(name)),
463
+ (CFIndex)(RSTRING_LEN(name)),
453
464
  kCFStringEncodingUTF8,
454
465
  false);
455
466
  if (inName == NULL) {
@@ -551,69 +562,31 @@ rbAE_launchApplication(VALUE self, VALUE path, VALUE firstEvent, VALUE flags)
551
562
  // HFS/POSIX path conversions
552
563
 
553
564
  static VALUE
554
- rbAE_convertPOSIXPathToURL(VALUE self, VALUE path)
555
- {
556
- CFURLRef url;
557
- UInt8 buffer[PATH_MAX];
558
-
559
- url = CFURLCreateFromFileSystemRepresentation(NULL,
560
- (UInt8 *)(RSTRING(path)->ptr),
561
- (CFIndex)(RSTRING(path)->len),
562
- false);
563
- if (url == NULL) rb_raise(rb_eRuntimeError, "Invalid POSIX path string.");
564
- buffer[CFURLGetBytes(url, buffer, PATH_MAX - 1)] = '\0';
565
- CFRelease(url);
566
- return rb_str_new2((char *)buffer);
567
- }
568
-
569
- static VALUE
570
- rbAE_convertHFSPathToURL(VALUE self, VALUE path)
565
+ rbAE_convertPathToURL(VALUE self, VALUE path, VALUE pathStyle)
571
566
  {
572
567
  CFStringRef str;
573
568
  CFURLRef url;
574
569
  UInt8 buffer[PATH_MAX];
575
570
 
576
571
  str = CFStringCreateWithBytes(NULL,
577
- (UInt8 *)(RSTRING(path)->ptr),
578
- (CFIndex)(RSTRING(path)->len),
572
+ (UInt8 *)(RSTRING_PTR(path)),
573
+ (CFIndex)(RSTRING_LEN(path)),
579
574
  kCFStringEncodingUTF8,
580
575
  false);
581
- if (str == NULL) rb_raise(rb_eRuntimeError, "Invalid HFS path string.");
576
+ if (str == NULL) rb_raise(rb_eRuntimeError, "Bad path string.");
582
577
  url = CFURLCreateWithFileSystemPath(NULL,
583
578
  str,
584
- kCFURLHFSPathStyle,
579
+ NUM2LONG(pathStyle),
585
580
  false);
586
581
  CFRelease(str);
587
- if (url == NULL) rb_raise(rb_eRuntimeError, "Invalid HFS path string.");
582
+ if (url == NULL) rb_raise(rb_eRuntimeError, "Invalid path.");
588
583
  buffer[CFURLGetBytes(url, buffer, PATH_MAX - 1)] = '\0';
589
584
  CFRelease(url);
590
585
  return rb_str_new2((char *)buffer);
591
586
  }
592
587
 
593
588
  static VALUE
594
- rbAE_convertURLToPOSIXPath(VALUE self, VALUE urlStr)
595
- {
596
- Boolean err;
597
- CFURLRef url;
598
- UInt8 buffer[PATH_MAX];
599
-
600
- url = CFURLCreateWithBytes(NULL,
601
- (UInt8 *)(RSTRING(urlStr)->ptr),
602
- (CFIndex)(RSTRING(urlStr)->len),
603
- kCFStringEncodingUTF8,
604
- NULL);
605
- if (url == NULL) rb_raise(rb_eRuntimeError, "Invalid URL string.");
606
- err = CFURLGetFileSystemRepresentation(url,
607
- true,
608
- buffer,
609
- PATH_MAX);
610
- CFRelease(url);
611
- if (!err) rb_raise(rb_eRuntimeError, "Can't get POSIX path.");
612
- return rb_str_new2((char *)buffer);
613
- }
614
-
615
- static VALUE
616
- rbAE_convertURLToHFSPath(VALUE self, VALUE urlStr)
589
+ rbAE_convertURLToPath(VALUE self, VALUE urlStr, VALUE pathStyle)
617
590
  {
618
591
  Boolean err;
619
592
  CFURLRef url;
@@ -621,20 +594,20 @@ rbAE_convertURLToHFSPath(VALUE self, VALUE urlStr)
621
594
  char buffer[PATH_MAX];
622
595
 
623
596
  url = CFURLCreateWithBytes(NULL,
624
- (UInt8 *)(RSTRING(urlStr)->ptr),
625
- (CFIndex)(RSTRING(urlStr)->len),
597
+ (UInt8 *)(RSTRING_PTR(urlStr)),
598
+ (CFIndex)(RSTRING_LEN(urlStr)),
626
599
  kCFStringEncodingUTF8,
627
600
  NULL);
628
- if (url == NULL) rb_raise(rb_eRuntimeError, "Invalid URL string.");
629
- str = CFURLCopyFileSystemPath(url, kCFURLHFSPathStyle);
601
+ if (url == NULL) rb_raise(rb_eRuntimeError, "Bad URL string.");
602
+ str = CFURLCopyFileSystemPath(url, NUM2LONG(pathStyle));
630
603
  CFRelease(url);
631
- if (str == NULL) rb_raise(rb_eRuntimeError, "Can't get HFS path.");
604
+ if (str == NULL) rb_raise(rb_eRuntimeError, "Can't get path.");
632
605
  err = CFStringGetCString(str,
633
606
  buffer,
634
607
  PATH_MAX,
635
608
  kCFStringEncodingUTF8);
636
609
  CFRelease(str);
637
- if (!err) rb_raise(rb_eRuntimeError, "Can't get HFS path.");
610
+ if (!err) rb_raise(rb_eRuntimeError, "Can't get path.");
638
611
  return rb_str_new2(buffer);
639
612
  }
640
613
 
@@ -662,7 +635,7 @@ rbAE_convertUnixSecondsToLongDateTime(VALUE self, VALUE secs)
662
635
 
663
636
  err = UCConvertCFAbsoluteTimeToLongDateTime(NUM2DBL(secs) - kCFAbsoluteTimeIntervalSince1970, &ldt);
664
637
  if (err != noErr) rbAE_raiseMacOSError("Can't convert seconds to LongDateTime.", err);
665
- return rb_ll2big(ldt);
638
+ return LL2NUM(ldt);
666
639
  }
667
640
 
668
641
 
@@ -676,22 +649,22 @@ rbAE_OSAGetAppTerminology(VALUE self, VALUE path)
676
649
  rb_raise(rb_eNotImpError, "AE.get_app_terminology isn't available in 64-bit processes.\n");
677
650
  return Qnil;
678
651
  #else
652
+ static ComponentInstance defaultComponent;
679
653
  FSRef appRef;
680
654
  FSSpec fss;
681
- ComponentInstance defaultComponent;
682
655
  Boolean didLaunch;
683
656
  AEDesc theDesc;
684
657
  OSErr err = noErr;
685
658
 
686
- if (OSAGetAppTerminology == NULL)
687
- rb_raise(rb_eNotImpError, "OSAGetAppTerminology unavailable.\n");
688
659
  err = FSPathMakeRef((UInt8 *)StringValuePtr(path), &appRef, NULL);
689
660
  if (err != 0) rbAE_raiseMacOSError("Couldn't make FSRef.", err);
690
661
  err = FSGetCatalogInfo(&appRef, kFSCatInfoNone, NULL, NULL, &fss, NULL);
691
662
  if (err != 0) rbAE_raiseMacOSError("Couldn't make FSSpec.", err);
692
- defaultComponent = OpenDefaultComponent(kOSAComponentType, 'ascr');
693
- err = GetComponentInstanceError(defaultComponent);
694
- if (err != 0) rbAE_raiseMacOSError("Couldn't make default component instance.", err);
663
+ if (!defaultComponent) {
664
+ defaultComponent = OpenDefaultComponent(kOSAComponentType, 'ascr');
665
+ err = GetComponentInstanceError(defaultComponent);
666
+ if (err != 0) rbAE_raiseMacOSError("Couldn't make default component instance.", err);
667
+ }
695
668
  err = OSAGetAppTerminology(defaultComponent,
696
669
  kOSAModeNull,
697
670
  &fss,
@@ -951,14 +924,10 @@ Init_ae (void)
951
924
  rb_define_module_function(mAE, "psn_for_process_id", rbAE_psnForPID, 1);
952
925
  rb_define_module_function(mAE, "launch_application", rbAE_launchApplication, 3);
953
926
 
954
- rb_define_module_function(mAE, "convert_posix_path_to_url",
955
- rbAE_convertPOSIXPathToURL, 1);
956
- rb_define_module_function(mAE, "convert_hfs_path_to_url",
957
- rbAE_convertHFSPathToURL, 1);
958
- rb_define_module_function(mAE, "convert_url_to_posix_path",
959
- rbAE_convertURLToPOSIXPath, 1);
960
- rb_define_module_function(mAE, "convert_url_to_hfs_path",
961
- rbAE_convertURLToHFSPath, 1);
927
+ rb_define_module_function(mAE, "convert_path_to_url",
928
+ rbAE_convertPathToURL, 2);
929
+ rb_define_module_function(mAE, "convert_url_to_path",
930
+ rbAE_convertURLToPath, 2);
962
931
 
963
932
  rb_define_module_function(mAE, "convert_long_date_time_to_unix_seconds",
964
933
  rbAE_convertLongDateTimeToUnixSeconds, 1);
@@ -1,4 +1,6 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
2
4
 
3
5
  require 'test/unit'
4
6
  require "_aem/aemreference"
@@ -40,6 +42,11 @@ class TC_AEMReferences < Test::Unit::TestCase
40
42
  'AEM.con.elements("docu").by_index(3), ' +
41
43
  'AEM.con.elements("docu").by_name("foo"))', nil],
42
44
 
45
+ [AEMReference::App.elements('docu').by_range(1, 'foo'),
46
+ 'AEM.app.elements("docu").by_range(1, "foo")',
47
+ AEMReference::App.elements("docu").by_range(
48
+ AEMReference::Con.elements("docu").by_index(1),
49
+ AEMReference::Con.elements("docu").by_name("foo"))],
43
50
 
44
51
  [AEMReference::Its.property('name').eq('foo').and(AEMReference::Its.elements('cwor').eq([])),
45
52
  'AEM.its.property("name").eq("foo").and(AEM.its.elements("cwor").eq([]))', nil],
@@ -103,9 +110,8 @@ class TC_AEMReferences < Test::Unit::TestCase
103
110
  assert_not_equal(AEMReference::App.elements('ctxt').property('ctxt'), AEMReference::App.property('ctxt').property('ctxt'))
104
111
  assert_not_equal(AEMReference::App.elements('ctxt').property('ctxt'), 333)
105
112
  assert_not_equal(333, AEMReference::App.property('ctxt').property('ctxt'))
106
- # # by-range and by-filter references do basic type checking to ensure a reference is given
107
- # assert_raises(TypeError) { AEMReference::App.elements('docu').by_range(1, 2) }
108
- # assert_raises(TypeError) { AEMReference::App.elements('docu').by_filter(1) }
113
+ # # by-filter references do basic type checking to ensure an its-based reference is given
114
+ assert_raises(TypeError) { AEMReference::App.elements('docu').by_filter(1) }
109
115
 
110
116
  end
111
117
  end
@@ -1,4 +1,6 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
2
4
 
3
5
  require 'test/unit'
4
6
  require 'appscript'
@@ -1,4 +1,6 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
2
4
 
3
5
  require 'test/unit'
4
6
  require "appscript"
@@ -68,8 +70,8 @@ class TC_AppscriptReferences < Test::Unit::TestCase
68
70
  @s+'.documents[its.size.ge(42)]', nil],
69
71
 
70
72
  [@te.documents[1, 'foo'],
71
- @s+'.documents[con.documents[1], con.documents["foo"]]',
72
- @te.documents[Appscript.con.documents[1], Appscript.con.documents['foo']]],
73
+ @s+'.documents[1, "foo"]',
74
+ @te.documents[Appscript.con.documents[1], Appscript.con.documents["foo"]]],
73
75
 
74
76
  [@te.documents[1].text \
75
77
  .paragraphs.characters[
@@ -1,4 +1,6 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
2
4
 
3
5
  require 'test/unit'
4
6
  require 'aem'
@@ -1,4 +1,6 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
2
4
 
3
5
  require 'test/unit'
4
6
  require "_aem/findapp"
@@ -1,4 +1,6 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
2
4
 
3
5
  require 'test/unit'
4
6
  require "_aem/mactypes"
@@ -13,6 +15,10 @@ class TC_MacTypes < Test::Unit::TestCase
13
15
  # puts "path: #{@path1}" # e.g. /tmp/codecs-test.HWr1EnE3
14
16
  end
15
17
 
18
+ def normalize(path)
19
+ return path.gsub(/\/+/, '/') # quick-n-dirty
20
+ end
21
+
16
22
  def test_alias
17
23
  # make alias
18
24
  f = MacTypes::Alias.path(@path1)
@@ -22,10 +28,10 @@ class TC_MacTypes < Test::Unit::TestCase
22
28
 
23
29
  # get path
24
30
  # note that initial /tmp/codecs-test... path will automatically change to /private/tmp/codecs-test...
25
- p1 = '/private'+@path1
26
- p2 = '/private'+@path2
27
-
28
- assert_equal("MacTypes::Alias.path(#{p1.inspect})", f.inspect)
31
+ p1 = normalize('/private'+@path1)
32
+ p2 = normalize('/private'+@path2)
33
+
34
+ assert_equal(p1, normalize(f.path))
29
35
 
30
36
  #puts "alias path 1: #{f}" # e.g. /private/tmp/codecs-test.HWr1EnE3
31
37
  assert_equal(p1, f.to_s)
@@ -40,7 +46,7 @@ class TC_MacTypes < Test::Unit::TestCase
40
46
  # puts "alias path 2: #{f}" # /private/tmp/moved-codecs-test.HWr1EnE3
41
47
  assert_equal(p2, f.to_s)
42
48
 
43
- assert_equal("MacTypes::Alias.path(#{p2.inspect})", f.inspect)
49
+ assert_equal(p2, normalize(f.path))
44
50
 
45
51
  # check a FileNotFoundError is raised if getting path/FileURL for a filesystem object that no longer exists
46
52
  `rm #{@path2}`
@@ -1,13 +1,10 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
2
4
 
3
5
  require 'test/unit'
4
6
  require 'osax'
5
7
 
6
- class AS_SafeObject
7
- def self.hide(name)
8
- end
9
- end
10
-
11
8
  class TC_OSAX < Test::Unit::TestCase
12
9
 
13
10
  def test_1
metadata CHANGED
@@ -1,33 +1,26 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: rb-appscript
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.5.0
7
- date: 2007-12-20 00:00:00 +00:00
8
- summary: Ruby appscript (rb-appscript) is a high-level, user-friendly Apple event bridge that allows you to control scriptable Mac OS X applications using ordinary Ruby scripts.
9
- require_paths:
10
- - lib
11
- email:
12
- homepage: http://rb-appscript.rubyforge.org/
13
- rubyforge_project: rb-appscript
14
- description:
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: false
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "1.8"
24
- version:
4
+ version: 0.5.1
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - HAS
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-02-18 00:00:00 +00:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email:
18
+ executables: []
19
+
20
+ extensions:
21
+ - extconf.rb
22
+ extra_rdoc_files: []
23
+
31
24
  files:
32
25
  - CHANGES
33
26
  - doc
@@ -41,7 +34,6 @@ files:
41
34
  - doc/aem-manual/07_findapp.html
42
35
  - doc/aem-manual/08_examples.html
43
36
  - doc/aem-manual/aemreferenceinheritance.gif
44
- - doc/aem-manual/full.css
45
37
  - doc/aem-manual/index.html
46
38
  - doc/appscript-manual
47
39
  - doc/appscript-manual/01_introduction.html
@@ -61,10 +53,10 @@ files:
61
53
  - doc/appscript-manual/application_architecture.gif
62
54
  - doc/appscript-manual/application_architecture2.gif
63
55
  - doc/appscript-manual/finder_to_textedit_event.gif
64
- - doc/appscript-manual/full.css
65
56
  - doc/appscript-manual/index.html
66
57
  - doc/appscript-manual/relationships_example.gif
67
58
  - doc/appscript-manual/ruby_to_itunes_event.gif
59
+ - doc/full.css
68
60
  - doc/index.html
69
61
  - doc/mactypes-manual
70
62
  - doc/mactypes-manual/index.html
@@ -126,6 +118,32 @@ files:
126
118
  - test/test_osax.rb
127
119
  - test/testall.sh
128
120
  - TODO
121
+ has_rdoc: false
122
+ homepage: http://rb-appscript.rubyforge.org/
123
+ post_install_message:
124
+ rdoc_options: []
125
+
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: "1.8"
133
+ version:
134
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: "0"
139
+ version:
140
+ requirements: []
141
+
142
+ rubyforge_project: rb-appscript
143
+ rubygems_version: 1.0.1
144
+ signing_key:
145
+ specification_version: 2
146
+ summary: Ruby appscript (rb-appscript) is a high-level, user-friendly Apple event bridge that allows you to control scriptable Mac OS X applications using ordinary Ruby scripts.
129
147
  test_files:
130
148
  - test/test_aemreference.rb
131
149
  - test/test_appscriptcommands.rb
@@ -134,15 +152,3 @@ test_files:
134
152
  - test/test_findapp.rb
135
153
  - test/test_mactypes.rb
136
154
  - test/test_osax.rb
137
- rdoc_options: []
138
-
139
- extra_rdoc_files: []
140
-
141
- executables: []
142
-
143
- extensions:
144
- - extconf.rb
145
- requirements: []
146
-
147
- dependencies: []
148
-