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.
- data/CHANGES +19 -0
- data/LICENSE +1 -1
- data/README +5 -5
- data/TODO +3 -1
- data/doc/aem-manual/01_introduction.html +2 -2
- data/doc/aem-manual/02_apioverview.html +2 -2
- data/doc/aem-manual/03_packingandunpackingdata.html +2 -2
- data/doc/aem-manual/04_references.html +9 -21
- data/doc/aem-manual/05_targettingapplications.html +3 -3
- data/doc/aem-manual/06_buildingandsendingevents.html +2 -2
- data/doc/aem-manual/07_findapp.html +2 -2
- data/doc/aem-manual/08_examples.html +3 -3
- data/doc/aem-manual/index.html +2 -2
- data/doc/appscript-manual/01_introduction.html +2 -2
- data/doc/appscript-manual/02_aboutappscripting.html +2 -2
- data/doc/appscript-manual/03_quicktutorial.html +2 -2
- data/doc/appscript-manual/04_gettinghelp.html +2 -2
- data/doc/appscript-manual/05_keywordconversion.html +2 -2
- data/doc/appscript-manual/06_classesandenums.html +2 -2
- data/doc/appscript-manual/07_applicationobjects.html +2 -2
- data/doc/appscript-manual/08_realvsgenericreferences.html +2 -2
- data/doc/appscript-manual/09_referenceforms.html +3 -3
- data/doc/appscript-manual/10_referenceexamples.html +2 -2
- data/doc/appscript-manual/11_applicationcommands.html +2 -2
- data/doc/appscript-manual/12_commandexamples.html +2 -2
- data/doc/appscript-manual/13_performanceissues.html +2 -2
- data/doc/appscript-manual/14_notes.html +2 -2
- data/doc/appscript-manual/index.html +2 -2
- data/doc/{appscript-manual/full.css → full.css} +0 -0
- data/doc/index.html +2 -2
- data/doc/mactypes-manual/index.html +2 -2
- data/doc/osax-manual/index.html +6 -6
- data/extconf.rb +13 -3
- data/rb-appscript.gemspec +2 -1
- data/src/lib/_aem/aemreference.rb +22 -31
- data/src/lib/_aem/codecs.rb +21 -19
- data/src/lib/_aem/connect.rb +7 -3
- data/src/lib/_aem/findapp.rb +7 -3
- data/src/lib/_aem/mactypes.rb +22 -14
- data/src/lib/_aem/send.rb +7 -3
- data/src/lib/_aem/typewrappers.rb +7 -3
- data/src/lib/_appscript/defaultterminology.rb +7 -3
- data/src/lib/_appscript/referencerenderer.rb +7 -3
- data/src/lib/_appscript/reservedkeywords.rb +8 -3
- data/src/lib/_appscript/safeobject.rb +12 -2
- data/src/lib/_appscript/terminology.rb +31 -15
- data/src/lib/aem.rb +8 -3
- data/src/lib/appscript.rb +74 -46
- data/src/lib/osax.rb +7 -6
- data/src/rbae.c +46 -77
- data/test/test_aemreference.rb +10 -4
- data/test/test_appscriptcommands.rb +3 -1
- data/test/test_appscriptreference.rb +5 -3
- data/test/test_codecs.rb +3 -1
- data/test/test_findapp.rb +3 -1
- data/test/test_mactypes.rb +12 -6
- data/test/test_osax.rb +3 -6
- metadata +44 -38
- data/doc/aem-manual/full.css +0 -21
data/src/rbae.c
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
/*
|
2
|
-
*
|
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) &&
|
83
|
-
return CFSwapInt32HostToBig(*(DescType *)(
|
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
|
-
|
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(
|
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 *)(
|
442
|
-
(CFIndex)(
|
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 *)(
|
452
|
-
(CFIndex)(
|
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
|
-
|
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 *)(
|
578
|
-
(CFIndex)(
|
572
|
+
(UInt8 *)(RSTRING_PTR(path)),
|
573
|
+
(CFIndex)(RSTRING_LEN(path)),
|
579
574
|
kCFStringEncodingUTF8,
|
580
575
|
false);
|
581
|
-
if (str == NULL) rb_raise(rb_eRuntimeError, "
|
576
|
+
if (str == NULL) rb_raise(rb_eRuntimeError, "Bad path string.");
|
582
577
|
url = CFURLCreateWithFileSystemPath(NULL,
|
583
578
|
str,
|
584
|
-
|
579
|
+
NUM2LONG(pathStyle),
|
585
580
|
false);
|
586
581
|
CFRelease(str);
|
587
|
-
if (url == NULL) rb_raise(rb_eRuntimeError, "Invalid
|
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
|
-
|
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 *)(
|
625
|
-
(CFIndex)(
|
597
|
+
(UInt8 *)(RSTRING_PTR(urlStr)),
|
598
|
+
(CFIndex)(RSTRING_LEN(urlStr)),
|
626
599
|
kCFStringEncodingUTF8,
|
627
600
|
NULL);
|
628
|
-
if (url == NULL) rb_raise(rb_eRuntimeError, "
|
629
|
-
str = CFURLCopyFileSystemPath(url,
|
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
|
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
|
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
|
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
|
-
|
693
|
-
|
694
|
-
|
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, "
|
955
|
-
|
956
|
-
rb_define_module_function(mAE, "
|
957
|
-
|
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);
|
data/test/test_aemreference.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
#!/usr/
|
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-
|
107
|
-
|
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/
|
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[
|
72
|
-
@te.documents[Appscript.con.documents[1], Appscript.con.documents[
|
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[
|
data/test/test_codecs.rb
CHANGED
data/test/test_findapp.rb
CHANGED
data/test/test_mactypes.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
#!/usr/
|
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(
|
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(
|
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}`
|
data/test/test_osax.rb
CHANGED
@@ -1,13 +1,10 @@
|
|
1
|
-
#!/usr/
|
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.
|
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
|
-
|