rb-appscript 0.2.1 → 0.3.0
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/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
|
|