rb-appscript 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +59 -0
- data/LICENSE +65 -0
- data/README +1 -1
- data/TODO +13 -13
- data/doc/aem-manual/04_references.html +13 -13
- data/doc/aem-manual/05_targettingapplications.html +7 -5
- data/doc/aem-manual/06_buildingandsendingevents.html +1 -1
- data/doc/aem-manual/08_examples.html +6 -6
- data/doc/aem-manual/index.html +3 -4
- data/doc/appscript-manual/02_aboutappscripting.html +2 -10
- data/doc/appscript-manual/04_gettinghelp.html +32 -18
- data/doc/appscript-manual/05_keywordconversion.html +7 -7
- data/doc/appscript-manual/06_classesandenums.html +2 -21
- data/doc/appscript-manual/07_applicationobjects.html +11 -2
- data/doc/appscript-manual/08_realvsgenericreferences.html +1 -1
- data/doc/appscript-manual/09_referenceforms.html +13 -13
- data/doc/appscript-manual/10_referenceexamples.html +7 -7
- data/doc/appscript-manual/11_applicationcommands.html +30 -28
- data/doc/appscript-manual/13_performanceissues.html +3 -3
- data/doc/appscript-manual/{15_notes.html → 14_notes.html} +18 -13
- data/doc/appscript-manual/full.css +1 -2
- data/doc/appscript-manual/index.html +3 -4
- data/doc/index.html +2 -1
- data/doc/mactypes-manual/index.html +23 -13
- data/doc/osax-manual/index.html +27 -5
- data/rb-appscript.gemspec +1 -1
- data/sample/AB_list_people_with_emails.rb +2 -1
- data/sample/Add_iCal_event.rb +18 -0
- data/sample/Export_Address_Book_phone_numbers.rb +56 -0
- data/sample/Hello_world.rb +9 -1
- data/sample/Select_all_HTML_files.rb +4 -2
- data/sample/iTunes_top40_to_html.rb +7 -4
- data/src/lib/_aem/aemreference.rb +50 -51
- data/src/lib/_aem/codecs.rb +148 -178
- data/src/lib/_aem/connect.rb +0 -2
- data/src/lib/_aem/findapp.rb +1 -1
- data/src/lib/_aem/mactypes.rb +2 -9
- data/src/lib/_aem/send.rb +2 -2
- data/src/lib/_appscript/defaultterminology.rb +2 -2
- data/src/lib/_appscript/referencerenderer.rb +119 -14
- data/src/lib/_appscript/reservedkeywords.rb +5 -0
- data/src/lib/_appscript/safeobject.rb +190 -0
- data/src/lib/_appscript/terminology.rb +195 -90
- data/src/lib/aem.rb +8 -9
- data/src/lib/appscript.rb +175 -159
- data/src/lib/osax.rb +65 -29
- data/src/rbae.c +42 -2
- data/test/test_aemreference.rb +3 -3
- data/test/test_appscriptcommands.rb +135 -0
- data/test/test_appscriptreference.rb +10 -8
- data/test/test_mactypes.rb +7 -1
- data/test/test_osax.rb +57 -0
- data/test/testall.sh +2 -1
- metadata +10 -9
- data/doc/aem-manual/09_notes.html +0 -41
- data/doc/appscript-manual/14_problemapps.html +0 -192
- data/misc/adobeunittypes.rb +0 -14
- data/misc/dump.rb +0 -72
- data/rb-appscript-0.2.0.gem +0 -0
data/CHANGES
CHANGED
@@ -1,3 +1,62 @@
|
|
1
|
+
2007-01-18 -- 0.3.0
|
2
|
+
|
3
|
+
- removed 'AS' alias; client scripts should refer to Appscript module, e.g.:
|
4
|
+
|
5
|
+
textedit = AS.app('TextEdit')
|
6
|
+
|
7
|
+
should be changed to:
|
8
|
+
|
9
|
+
textedit = Appscript.app('TextEdit')
|
10
|
+
|
11
|
+
- added 'p' prefixes to 'pcls' and 'ID ' keys in DefaultTerminology::ReferenceByCode (minor bugfix)
|
12
|
+
|
13
|
+
- in AE::AEDesc, renamed #get to #get_item and added #get_param and #get_attr methods
|
14
|
+
|
15
|
+
- improved unpacking of object specifiers and other reference-related AEDescs (10-20% faster)
|
16
|
+
|
17
|
+
- adjusted ordering of case blocks in Codecs#pack, #unpack to improve performance when packing/unpacking more commonly used types
|
18
|
+
|
19
|
+
- added Appscript::Application#AS_new_reference; this takes a generic/aem reference and returns an appscript reference
|
20
|
+
|
21
|
+
- referencerenderer now displays accurate representation of an appscript reference when appscript-style representation is unavailable (previously rendered the appscript reference as an aem-style reference string, which was misleading)
|
22
|
+
|
23
|
+
- tweaked APIs for UnitTypeCodecs' pack/unpack procs
|
24
|
+
|
25
|
+
- moved problem apps chapter to website
|
26
|
+
|
27
|
+
- added information on osadict to getting help chapter
|
28
|
+
|
29
|
+
- renamed aem's #userproperty method to #user_property
|
30
|
+
|
31
|
+
- modified AEM_resolve to dispatch method calls via #send. Client objects should now either implement all aem reference methods OR a send(name, *args) method. Clients should avoid using method_missing as that can cause problems if client code includes methods into Object, as those injected methods may then be called instead of method_missing.
|
32
|
+
|
33
|
+
- appscript now unpacks AEAddressDescs as Appscript::Application instances (note: as with AppleScript, this behaviour is asymmetrical since application objects always pack as null descs, i.e. they're treated as references when packing)
|
34
|
+
|
35
|
+
- added Appscript::Application#by_aem_app method for converting AEM::Application instances to appscript application objects
|
36
|
+
|
37
|
+
- iTunes_top40_to_html.rb sample script now opens resulting HTML file in user's default web browser
|
38
|
+
|
39
|
+
- removed MacTypes::Units.method_missing
|
40
|
+
|
41
|
+
- Appscript::Reference and Appscript::GenericReference now inherit from SafeObject class (based on BasicObject class <http://facets.rubyforge.org>) to prevent any third-party methods added to base classes from showing up in Reference/GenericReference and interfering with method_missing's behaviour. Note that _appscript/safeobject.rb installs traps on Module#method_added and Module#included in order to detect any changes during runtime.
|
42
|
+
|
43
|
+
- added OSAX#osax and OSAX#scripting_addition to allow these methods to be included for convenience
|
44
|
+
|
45
|
+
- FindApp.by_name now always raises ApplicationNotFoundError when application not found (previously sometimes raised RuntimeError
|
46
|
+
|
47
|
+
- added more tests
|
48
|
+
|
49
|
+
- fixed bug in MacTypes::FileBase#== where comparing two Alias/FileURL objects with different paths would return true, not false, and generally improved its behaviour
|
50
|
+
|
51
|
+
- added default value ('StandardAdditions') for OSAX.osax's name argument
|
52
|
+
|
53
|
+
- added Add_iCal_event.rb, Export_Address_Book_phone_numbers.rb examples; updated Hello_World.rb example to also demonstrate OSAX usage; made Select_all_HTML_files.rb example clearer
|
54
|
+
|
55
|
+
- improved handling of synonyms in Terminology, TerminologyParser modules (definitions with same codes but different names are now retained; previously only the last-found definition was retained). Still doesn't mimic AS's behaviour 100%, but it's difficult to get any closer without studying the original AS source code.
|
56
|
+
|
57
|
+
- added Terminology.dump method; removed misc/dump.rb file
|
58
|
+
|
59
|
+
|
1
60
|
2006-11-29 -- 0.2.1
|
2
61
|
|
3
62
|
- renamed AS module to Appscript. An 'AS' alias is temporarily provided for backwards compatibility but this will be removed in a future release. Users should update their scripts accordingly.
|
data/LICENSE
CHANGED
@@ -1 +1,66 @@
|
|
1
|
+
(All modules are released under the MIT License, except safeobject.rb which is a modified version of basicobject <http://facets.rubyforge.org> released under the Ruby License.)
|
2
|
+
|
3
|
+
======================================================================
|
4
|
+
MIT LICENSE
|
5
|
+
|
1
6
|
Copyright (C) 2006 HAS
|
7
|
+
|
8
|
+
======================================================================
|
9
|
+
THE RUBY LICENSE
|
10
|
+
(http://www.ruby-lang.org/en/LICENSE.txt)
|
11
|
+
|
12
|
+
You may redistribute this software and/or modify it under either the terms of
|
13
|
+
the GPL (see below), or the conditions below:
|
14
|
+
|
15
|
+
1. You may make and give away verbatim copies of the source form of the
|
16
|
+
software without restriction, provided that you duplicate all of the
|
17
|
+
original copyright notices and associated disclaimers.
|
18
|
+
|
19
|
+
2. You may modify your copy of the software in any way, provided that
|
20
|
+
you do at least ONE of the following:
|
21
|
+
|
22
|
+
a) place your modifications in the Public Domain or otherwise
|
23
|
+
make them Freely Available, such as by posting said
|
24
|
+
modifications to Usenet or an equivalent medium, or by allowing
|
25
|
+
the author to include your modifications in the software.
|
26
|
+
|
27
|
+
b) use the modified software only within your corporation or
|
28
|
+
organization.
|
29
|
+
|
30
|
+
c) rename any non-standard executables so the names do not conflict
|
31
|
+
with standard executables, which must also be provided.
|
32
|
+
|
33
|
+
d) make other distribution arrangements with the author.
|
34
|
+
|
35
|
+
3. You may distribute the software in object code or executable
|
36
|
+
form, provided that you do at least ONE of the following:
|
37
|
+
|
38
|
+
a) distribute the executables and library files of the software,
|
39
|
+
together with instructions (in the manual page or equivalent)
|
40
|
+
on where to get the original distribution.
|
41
|
+
|
42
|
+
b) accompany the distribution with the machine-readable source of
|
43
|
+
the software.
|
44
|
+
|
45
|
+
c) give non-standard executables non-standard names, with
|
46
|
+
instructions on where to get the original software distribution.
|
47
|
+
|
48
|
+
d) make other distribution arrangements with the author.
|
49
|
+
|
50
|
+
4. You may modify and include the part of the software into any other
|
51
|
+
software (possibly commercial). But some files in the distribution
|
52
|
+
are not written by the author, so that they are not under these terms.
|
53
|
+
|
54
|
+
For the list of those files and their copying conditions, see the
|
55
|
+
file LEGAL.
|
56
|
+
|
57
|
+
5. The scripts and library files supplied as input to or produced as
|
58
|
+
output from the software do not automatically fall under the
|
59
|
+
copyright of the software, but belong to whomever generated them,
|
60
|
+
and may be sold commercially, and may be aggregated with this
|
61
|
+
software.
|
62
|
+
|
63
|
+
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
64
|
+
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
65
|
+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
66
|
+
PURPOSE.
|
data/README
CHANGED
@@ -27,7 +27,7 @@ Please note that the version of Ruby included with Mac OS X 10.4 is missing the
|
|
27
27
|
======================================================================
|
28
28
|
NOTES
|
29
29
|
|
30
|
-
- rb-appscript 0.
|
30
|
+
- rb-appscript 0.3.0 contains a couple of API changes from rb-appscript 0.2.x; see the CHANGES file and documentation for details
|
31
31
|
|
32
32
|
======================================================================
|
33
33
|
AUTHOR
|
data/TODO
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
TO DO
|
2
2
|
|
3
|
-
-
|
3
|
+
- see if there's a way to provide a SafeObject base class for Appscript::Reference and Appscript::GenericReference that doesn't depend on inserting callbacks into Module (or are Rubyists fine with the current approach?)
|
4
4
|
|
5
|
-
-
|
5
|
+
- see if it's possible to work better with irb's autocomplete (autocomplete support is currently limited to start of a reference; not sure why)
|
6
6
|
|
7
|
-
-
|
7
|
+
- ae/aem/appscript-defined exception classes aren't quite idiomatic Ruby
|
8
8
|
|
9
|
-
-
|
9
|
+
- any additional tests
|
10
10
|
|
11
|
-
-
|
11
|
+
- improve/polish documentation
|
12
12
|
|
13
|
-
-
|
13
|
+
- see also TO DO comments in rbae.c
|
14
14
|
|
15
|
-
|
15
|
+
-------
|
16
16
|
|
17
|
-
-
|
17
|
+
- _aem/connect.rb module refers directly to Send::Event instead of going via the AEM::Application::Event hook, which might cause problems when used in an OSA component or other situation where client needs to customise all event creation and/or dispatch.
|
18
18
|
|
19
|
-
-
|
19
|
+
- support sending and receiving events on non-main threads
|
20
20
|
|
21
|
-
-
|
21
|
+
- provide an example project (or source for) that uses ruby2exe to build a standalone 'applet'
|
22
22
|
|
23
|
-
-
|
23
|
+
- any more built-in Ruby class<->AE type converters needed?
|
24
24
|
|
25
|
-
-
|
25
|
+
- in AEM::CommandError, extract and report any kOSA... error parameters, if present
|
26
26
|
|
27
|
-
-
|
27
|
+
- implement built-in help by bridging to osadict
|
@@ -166,24 +166,24 @@ p ref
|
|
166
166
|
after
|
167
167
|
Result : InsertionSpecifier
|
168
168
|
|
169
|
-
property(
|
170
|
-
|
169
|
+
property(code)
|
170
|
+
code : str -- four-char property code, e.g. 'pnam'
|
171
171
|
Result : Property
|
172
172
|
|
173
173
|
user_property(name)
|
174
174
|
name : str
|
175
175
|
Result : UserProperty
|
176
176
|
|
177
|
-
elements(
|
178
|
-
|
177
|
+
elements(ccode)
|
178
|
+
code : str -- four-char class code, e.g. 'docu'
|
179
179
|
Result : AllElements
|
180
180
|
|
181
|
-
previous(
|
182
|
-
|
181
|
+
previous(code)
|
182
|
+
code : str -- four-char class code
|
183
183
|
Result : Element
|
184
184
|
|
185
|
-
next(
|
186
|
-
|
185
|
+
next(code)
|
186
|
+
code : str -- four-char class code
|
187
187
|
Result : Element
|
188
188
|
|
189
189
|
-- Note: following methods are for use on
|
@@ -273,13 +273,13 @@ p ref
|
|
273
273
|
key : anything -- the object's unique id
|
274
274
|
Result : ElementByID
|
275
275
|
|
276
|
-
by_range(
|
277
|
-
|
278
|
-
|
276
|
+
by_range(start, stop)
|
277
|
+
start : Element -- an app- or con-based reference
|
278
|
+
stop : Element -- an app- or con-based reference
|
279
279
|
Result : ElementByRange
|
280
280
|
|
281
|
-
by_filter(
|
282
|
-
|
281
|
+
by_filter(test)
|
282
|
+
test : Test -- an its-based reference
|
283
283
|
Result : ElementsByFilter</code></pre>
|
284
284
|
|
285
285
|
|
@@ -37,7 +37,7 @@
|
|
37
37
|
|
38
38
|
is_running?(path) -- Is an application currently running?
|
39
39
|
path : string -- application's path, e.g. '/Applications/iCal.app'
|
40
|
-
Result :
|
40
|
+
Result : boolean
|
41
41
|
|
42
42
|
Constructors:
|
43
43
|
|
@@ -61,10 +61,12 @@
|
|
61
61
|
|
62
62
|
event(...) -- construct an Apple event (see next chapter for details)
|
63
63
|
|
64
|
-
start_transaction -- start a new transaction;
|
65
|
-
constructed after start_transaction is
|
66
|
-
belong to the same transaction until
|
67
|
-
or abort_transaction is called
|
64
|
+
start_transaction(session=nil) -- start a new transaction;
|
65
|
+
all Events constructed after start_transaction is
|
66
|
+
called will belong to the same transaction until
|
67
|
+
end_transaction or abort_transaction is called
|
68
|
+
session : anything -- optional value identifying the
|
69
|
+
specific session (where supported)
|
68
70
|
|
69
71
|
end_transaction -- end the current transaction
|
70
72
|
|
@@ -30,7 +30,7 @@
|
|
30
30
|
<pre><code>Application -- the target application
|
31
31
|
...
|
32
32
|
|
33
|
-
event(event_code, params={}, atts={}, return_id=KAE
|
33
|
+
event(event_code, params={}, atts={}, return_id=KAE::KAutoGenerateReturnID,
|
34
34
|
codecs=DefaultCodecs) -- construct an Apple event
|
35
35
|
event_code : string -- 8-letter code indicating event's class and id,
|
36
36
|
e.g. 'coregetd'
|
@@ -14,14 +14,14 @@
|
|
14
14
|
|
15
15
|
<!-- top navigation -->
|
16
16
|
<div class="navbar">
|
17
|
-
<a href="07_findapp.html">Previous</a> | <a href="index.html">Up</a>
|
17
|
+
<a href="07_findapp.html">Previous</a> | <a href="index.html">Up</a>
|
18
18
|
</div>
|
19
19
|
|
20
20
|
<!-- content -->
|
21
21
|
<div id="content">
|
22
22
|
|
23
23
|
|
24
|
-
<h2>Identifying
|
24
|
+
<h2>Identifying applications</h2>
|
25
25
|
|
26
26
|
<pre><code># application "Macintosh HD:Applications:TextEdit.app"
|
27
27
|
textedit = AEM::Application.by_path('/Applications/TextEdit.app')
|
@@ -33,7 +33,7 @@ textedit = AEM::Application.by_path(FindApp.by_name('TextEdit'))
|
|
33
33
|
textedit = AEM::Application.by_url('eppc://my-mac.local/TextEdit')</code></pre>
|
34
34
|
|
35
35
|
|
36
|
-
<h2>Building
|
36
|
+
<h2>Building references</h2>
|
37
37
|
|
38
38
|
<pre><code># name (of application)
|
39
39
|
AEM.app.property('pnam')
|
@@ -44,7 +44,7 @@ AEM.app.elements('docu').property('ctxt')
|
|
44
44
|
# end of every paragraph of text of document 1
|
45
45
|
AEM.app.elements('docu').by_index(1).property('ctxt').elements('cpar').end
|
46
46
|
|
47
|
-
|
47
|
+
# paragraphs 2 thru last of first document
|
48
48
|
AEM.app.elements('docu').first.elements('cpar').by_range(
|
49
49
|
AEM.con.elements('cpar').by_index(2),
|
50
50
|
AEM.con.elements('cpar').last)
|
@@ -53,7 +53,7 @@ AEM.app.elements('docu').first.elements('cpar').by_range(
|
|
53
53
|
AEM.app.elements('docu').by_index(1).elements('cpar').by_filter(AEM.its.ne("\n"))</code></pre>
|
54
54
|
|
55
55
|
|
56
|
-
<h2>Sending
|
56
|
+
<h2>Sending events</h2>
|
57
57
|
|
58
58
|
<pre><code># quit TextEdit
|
59
59
|
textedit.event('corequit').send
|
@@ -76,7 +76,7 @@ textedit.event('corecrel', {
|
|
76
76
|
|
77
77
|
<!-- bottom navigation -->
|
78
78
|
<div class="navbar">
|
79
|
-
<a href="07_findapp.html">Previous</a> | <a href="index.html">Up</a>
|
79
|
+
<a href="07_findapp.html">Previous</a> | <a href="index.html">Up</a>
|
80
80
|
</div>
|
81
81
|
|
82
82
|
<!--footer-->
|
data/doc/aem-manual/index.html
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
<!-- top navigation -->
|
16
16
|
<div class="navbar">
|
17
|
-
<a href="01_introduction.html">Next</a>
|
17
|
+
<a href="../index.html">Up</a> | <a href="01_introduction.html">Next</a>
|
18
18
|
|
19
19
|
</div>
|
20
20
|
|
@@ -28,16 +28,15 @@
|
|
28
28
|
<li><a href="06_buildingandsendingevents.html">Building and sending events</a></li>
|
29
29
|
<li><a href="07_findapp.html">Locating applications</a></li>
|
30
30
|
<li><a href="08_examples.html">Examples</a></li>
|
31
|
-
<li><a href="09_notes.html">Notes</a></li>
|
32
31
|
</ol></div>
|
33
32
|
|
34
33
|
<!-- bottom navigation -->
|
35
34
|
<div class="navbar">
|
36
|
-
<a href="01_introduction.html">Next</a>
|
35
|
+
<a href="../index.html">Up</a> | <a href="01_introduction.html">Next</a>
|
37
36
|
|
38
37
|
</div>
|
39
38
|
|
40
39
|
<!--footer-->
|
41
|
-
<p class="footer">©
|
40
|
+
<p class="footer">© 2006 HAS</p>
|
42
41
|
</body>
|
43
42
|
</html>
|
@@ -212,17 +212,9 @@ app('TextEdit').documents[1].text.paragraphs</code></pre>
|
|
212
212
|
|
213
213
|
|
214
214
|
|
215
|
-
<h2>Additional
|
215
|
+
<h2>Additional resources</h2>
|
216
216
|
|
217
|
-
<
|
218
|
-
|
219
|
-
<li><a href="http://www.cs.utexas.edu/users/wcook/papers/AppleScript/AppleScript95.pdf">The Open Scripting Architecture: Automating, Integrating, and Customizing Applications</a> (PDF; Cook & Harris, 1993) -- A very good technical overview of the OSA infrastructure, which includes Apple event-based application scripting. Recommended reading.</li>
|
220
|
-
|
221
|
-
<li><a href="http://developer.apple.com/documentation/AppleScript/Conceptual/AppleEvents/index.html">Apple Events Programming Guide</a> -- Technical introduction to Apple events. See also the <a href="http://developer.apple.com/documentation/AppleScript/index-date.html">AppleScript Documentation List</a>.</li>
|
222
|
-
|
223
|
-
<li><a href="http://developer.apple.com/technotes/tn2002/tn2106.html">Scripting Interface Guidelines</a> -- Intended for developers of scriptable applications, but provides some useful insight for scripters as well.</li>
|
224
|
-
|
225
|
-
</ul>
|
217
|
+
<p>Background information links can be found on the <a href="http://rb-appscript.rubyforge.org">rb-appscript website</a>.</p>
|
226
218
|
|
227
219
|
<hr />
|
228
220
|
|
@@ -20,16 +20,43 @@
|
|
20
20
|
|
21
21
|
<!-- content -->
|
22
22
|
<div id="content">
|
23
|
-
<p>There are
|
23
|
+
<p>There are several ways to get information about applications' scripting interfaces: the <code>osadict</code> command-line tool, the ASDictionary application, and introspection.</p>
|
24
|
+
|
25
|
+
|
26
|
+
<h2>osadict</h2>
|
27
|
+
|
28
|
+
<p>The <code>osadict</code> tool, bundled with the <a href="http://sourceforge.net/projects/appscript">py-appscript package</a>, can be used to export application dictionaries in HTML format, or browse them interactively from the command line.</p>
|
29
|
+
|
30
|
+
<p>To view osadict's full documentation:</p>
|
31
|
+
|
32
|
+
<pre><code>osadict -h</code></pre>
|
33
|
+
|
34
|
+
<p>Use osadict's <code>-s</code> option or <code>default</code> command to set the formatting style for rb-appscript.</p>
|
35
|
+
|
36
|
+
<p>Examples:</p>
|
37
|
+
|
38
|
+
<pre><code># Export TextEdit's dictionary to HTML:
|
39
|
+
osadict -Hs rb TextEdit.app > TextEdit.html
|
40
|
+
|
41
|
+
# Browse iCal's dictionary:
|
42
|
+
osadict -s rb eppc://remote-mac.local/iCal
|
43
|
+
iCal> -u
|
44
|
+
iCal> -t view_calendar
|
45
|
+
iCal> -t calendar -i calendar -r calendar
|
46
|
+
iCal> exit
|
47
|
+
|
48
|
+
# View a Standard Additions command:
|
49
|
+
osadict -Ns rb StandardAdditions -t display dialog</code></pre>
|
24
50
|
|
25
51
|
|
26
52
|
<h2>ASDictionary</h2>
|
27
53
|
|
28
|
-
<p>ASDictionary
|
54
|
+
<p>ASDictionary, available from the <a href="http://sourceforge.net/projects/appscript"> py-appscript website</a>, renders application terminology resources in plain text and HTML formats. It provides a convenient drag-n-drop alternative to using the <code>osadict -H ...</code> command.</p>
|
55
|
+
|
29
56
|
|
30
57
|
<h2>Introspection</h2>
|
31
58
|
|
32
|
-
<p>Appscript Application and Reference
|
59
|
+
<p>Appscript's <code>Application</code> and <code>Reference</code> classes define several methods for obtaining information on the target application: </p>
|
33
60
|
|
34
61
|
<dl>
|
35
62
|
<dt><code>properties</code></dt>
|
@@ -60,30 +87,17 @@ p te.commands
|
|
60
87
|
p te.parameters('make')
|
61
88
|
# ["at", "new", "with_data", "with_properties"]</code></pre>
|
62
89
|
|
63
|
-
<h2>Other sources of help</h2>
|
64
90
|
|
65
|
-
<
|
91
|
+
<h2>Other sources of help</h2>
|
66
92
|
|
67
93
|
<ul>
|
68
|
-
<li>Support forums for rb-appscript are available at <a href="http://rubyforge.org/forum/?group_id=2346"> http://rubyforge.org/forum/?group_id=2346</a></li>
|
69
|
-
|
70
94
|
<li>The <code>sample</code> folder contains example scripts demonstrating a range of common tasks.</li>
|
71
|
-
</ul>
|
72
95
|
|
73
|
-
<p>For information on scripting specific applications:</p>
|
74
|
-
|
75
|
-
<ul>
|
76
96
|
<li>Refer to any scripting documentation and example scripts supplied by the application developer.</li>
|
77
97
|
|
78
|
-
<li>The <a href="http://pythonmac.org/wiki/AppscriptModule">appscript entry at the pythonmac.org wiki</a> links to pages that discuss scripting specific applications.</li>
|
79
|
-
|
80
98
|
<li>Look for third-party scripts that provide examples of use (though many of these scripts will be written in AppleScript rather than Ruby).</li>
|
81
99
|
|
82
|
-
<li>The <a href="http://
|
83
|
-
|
84
|
-
<li><a href="http://www.macscripter.net">MacScripter.net</a> is the main hub for AppleScript-based application scripters, providing file archives, forums and links to other related sites.</li>
|
85
|
-
|
86
|
-
<li>Apple's website provides a <a href="http://www.apple.com/applescript/developers/">developer section</a> and <a href="http://lists.apple.com/index.html">mailing lists</a> relating to application scripting and AppleScript.</li>
|
100
|
+
<li>The <a href="http://rb-appscript.rubyforge.org">rb-appscript website</a> has links to mailing lists and other general resources.</li>
|
87
101
|
</ul>
|
88
102
|
|
89
103
|
|