rb-appscript 0.2.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 +243 -0
- data/LICENSE +1 -0
- data/README +42 -0
- data/TODO +31 -0
- data/doc/aem-manual/01_introduction.html +48 -0
- data/doc/aem-manual/02_apioverview.html +89 -0
- data/doc/aem-manual/03_packingandunpackingdata.html +98 -0
- data/doc/aem-manual/04_references.html +401 -0
- data/doc/aem-manual/05_targettingapplications.html +133 -0
- data/doc/aem-manual/06_buildingandsendingevents.html +175 -0
- data/doc/aem-manual/07_findapp.html +54 -0
- data/doc/aem-manual/08_examples.html +85 -0
- data/doc/aem-manual/09_notes.html +41 -0
- data/doc/aem-manual/aemreferenceinheritance.gif +0 -0
- data/doc/aem-manual/full.css +21 -0
- data/doc/aem-manual/index.html +43 -0
- data/doc/appscript-manual/01_introduction.html +82 -0
- data/doc/appscript-manual/02_aboutappscripting.html +244 -0
- data/doc/appscript-manual/03_quicktutorial.html +154 -0
- data/doc/appscript-manual/04_gettinghelp.html +101 -0
- data/doc/appscript-manual/05_keywordconversion.html +91 -0
- data/doc/appscript-manual/06_classesandenums.html +174 -0
- data/doc/appscript-manual/07_applicationobjects.html +181 -0
- data/doc/appscript-manual/08_realvsgenericreferences.html +86 -0
- data/doc/appscript-manual/09_referenceforms.html +232 -0
- data/doc/appscript-manual/10_referenceexamples.html +142 -0
- data/doc/appscript-manual/11_applicationcommands.html +204 -0
- data/doc/appscript-manual/12_commandexamples.html +129 -0
- data/doc/appscript-manual/13_performanceissues.html +115 -0
- data/doc/appscript-manual/14_problemapps.html +193 -0
- data/doc/appscript-manual/15_notes.html +84 -0
- data/doc/appscript-manual/application_architecture.gif +0 -0
- data/doc/appscript-manual/application_architecture2.gif +0 -0
- data/doc/appscript-manual/finder_to_textedit_event.gif +0 -0
- data/doc/appscript-manual/full.css +21 -0
- data/doc/appscript-manual/index.html +49 -0
- data/doc/appscript-manual/relationships_example.gif +0 -0
- data/doc/appscript-manual/ruby_to_itunes_event.gif +0 -0
- data/doc/index.html +30 -0
- data/doc/mactypes-manual/index.html +216 -0
- data/doc/osax-manual/index.html +169 -0
- data/extconf.rb +54 -0
- data/misc/adobeunittypes.rb +14 -0
- data/misc/dump.rb +72 -0
- data/rb-appscript.gemspec +20 -0
- data/sample/AB_list_people_with_emails.rb +8 -0
- data/sample/Create_daily_iCal_todos.rb +72 -0
- data/sample/Hello_world.rb +9 -0
- data/sample/List_iTunes_playlist_names.rb +7 -0
- data/sample/Make_Mail_message.rb +29 -0
- data/sample/Open_file_in_TextEdit.rb +9 -0
- data/sample/Organize_Mail_messages.rb +57 -0
- data/sample/Print_folder_tree.rb +12 -0
- data/sample/Select_all_HTML_files.rb +8 -0
- data/sample/Set_iChat_status.rb +20 -0
- data/sample/Simple_Finder_GUI_Scripting.rb +14 -0
- data/sample/Stagger_Finder_windows.rb +21 -0
- data/sample/TextEdit_demo.rb +126 -0
- data/sample/iTunes_top40_to_html.rb +64 -0
- data/src/lib/_aem/aemreference.rb +1006 -0
- data/src/lib/_aem/codecs.rb +617 -0
- data/src/lib/_aem/connect.rb +100 -0
- data/src/lib/_aem/findapp.rb +83 -0
- data/src/lib/_aem/mactypes.rb +228 -0
- data/src/lib/_aem/send.rb +257 -0
- data/src/lib/_aem/typewrappers.rb +57 -0
- data/src/lib/_appscript/defaultterminology.rb +245 -0
- data/src/lib/_appscript/referencerenderer.rb +132 -0
- data/src/lib/_appscript/reservedkeywords.rb +107 -0
- data/src/lib/_appscript/terminology.rb +314 -0
- data/src/lib/aem.rb +216 -0
- data/src/lib/appscript.rb +830 -0
- data/src/lib/kae.rb +1484 -0
- data/src/lib/osax.rb +171 -0
- data/src/rbae.c +766 -0
- data/test/README +1 -0
- data/test/test_aemreference.rb +112 -0
- data/test/test_appscriptreference.rb +102 -0
- data/test/test_codecs.rb +159 -0
- data/test/test_findapp.rb +24 -0
- data/test/test_mactypes.rb +67 -0
- data/test/testall.sh +9 -0
- metadata +143 -0
@@ -0,0 +1,245 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
# Copyright (C) 2006 HAS.
|
3
|
+
# Released under MIT License.
|
4
|
+
|
5
|
+
module DefaultTerminology
|
6
|
+
# Defines built-in terminology available for any application. When constructing the terminology tables for a particular application, the Terminology module will duplicate these tables and then add application-specific terms to create the finished lookup tables.
|
7
|
+
|
8
|
+
require "aem"
|
9
|
+
|
10
|
+
Enums = {
|
11
|
+
'yes ' => :yes,
|
12
|
+
'no ' => :no,
|
13
|
+
'ask ' => :ask,
|
14
|
+
|
15
|
+
'case' => :case,
|
16
|
+
'diac' => :diacriticals,
|
17
|
+
'expa' => :expansion,
|
18
|
+
'hyph' => :hyphens,
|
19
|
+
'punc' => :punctuation,
|
20
|
+
'whit' => :whitespace,
|
21
|
+
'nume' => :numeric_strings,
|
22
|
+
'rmte' => :application_responses,
|
23
|
+
}
|
24
|
+
|
25
|
+
Types = {
|
26
|
+
'****' => :anything,
|
27
|
+
|
28
|
+
'bool' => :boolean,
|
29
|
+
|
30
|
+
'shor' => :short_integer,
|
31
|
+
'long' => :integer,
|
32
|
+
'magn' => :unsigned_integer,
|
33
|
+
'comp' => :double_integer,
|
34
|
+
|
35
|
+
'fixd' => :fixed,
|
36
|
+
'lfxd' => :long_fixed,
|
37
|
+
'decm' => :decimal_struct,
|
38
|
+
|
39
|
+
'sing' => :short_float,
|
40
|
+
'doub' => :float,
|
41
|
+
'exte' => :extended_float,
|
42
|
+
'ldbl' => :float_128bit,
|
43
|
+
|
44
|
+
'TEXT' => :string,
|
45
|
+
'cstr' => :c_string,
|
46
|
+
'pstr' => :pascal_string,
|
47
|
+
'STXT' => :styled_text,
|
48
|
+
'tsty' => :text_style_info,
|
49
|
+
'styl' => :styled_clipboard_text,
|
50
|
+
'encs' => :encoded_string,
|
51
|
+
'psct' => :writing_code,
|
52
|
+
'intl' => :international_writing_code,
|
53
|
+
'itxt' => :international_text,
|
54
|
+
'sutx' => :styled_unicode_text,
|
55
|
+
'utxt' => :unicode_text,
|
56
|
+
'utf8' => :utf8_text, # typeUTF8Text
|
57
|
+
'ut16' => :utf16_text, # typeUTF16ExternalRepresentation
|
58
|
+
|
59
|
+
'vers' => :version,
|
60
|
+
'ldt ' => :date,
|
61
|
+
'list' => :list,
|
62
|
+
'reco' => :record,
|
63
|
+
'rdat' => :data,
|
64
|
+
'scpt' => :script,
|
65
|
+
|
66
|
+
'insl' => :location_reference,
|
67
|
+
'obj ' => :reference,
|
68
|
+
|
69
|
+
'alis' => :alias,
|
70
|
+
'fsrf' => :file_ref,
|
71
|
+
'fss ' => :file_specification,
|
72
|
+
'furl' => :file_url,
|
73
|
+
|
74
|
+
'QDpt' => :point,
|
75
|
+
'qdrt' => :bounding_rectangle,
|
76
|
+
'fpnt' => :fixed_point,
|
77
|
+
'frct' => :fixed_rectangle,
|
78
|
+
'lpnt' => :long_point,
|
79
|
+
'lrct' => :long_rectangle,
|
80
|
+
'lfpt' => :long_fixed_point,
|
81
|
+
'lfrc' => :long_fixed_rectangle,
|
82
|
+
|
83
|
+
'EPS ' => :EPS_picture,
|
84
|
+
'GIFf' => :GIF_picture,
|
85
|
+
'JPEG' => :JPEG_picture,
|
86
|
+
'PICT' => :PICT_picture,
|
87
|
+
'TIFF' => :TIFF_picture,
|
88
|
+
'cRGB' => :RGB_color,
|
89
|
+
'tr16' => :RGB16_color,
|
90
|
+
'tr96' => :RGB96_color,
|
91
|
+
'cgtx' => :graphic_text,
|
92
|
+
'clrt' => :color_table,
|
93
|
+
'tpmm' => :pixel_map_record,
|
94
|
+
|
95
|
+
'best' => :best,
|
96
|
+
'type' => :type_class,
|
97
|
+
'enum' => :enumerator,
|
98
|
+
'prop' => :property,
|
99
|
+
|
100
|
+
# AEAddressDesc types
|
101
|
+
|
102
|
+
'port' => :mach_port,
|
103
|
+
'kpid' => :kernel_process_id,
|
104
|
+
'bund' => :application_bundle_id,
|
105
|
+
'psn ' => :process_serial_number,
|
106
|
+
'sign' => :application_signature,
|
107
|
+
'aprl' => :application_url,
|
108
|
+
|
109
|
+
# misc.
|
110
|
+
|
111
|
+
'msng' => :missing_value,
|
112
|
+
|
113
|
+
'pcls' => :class_,
|
114
|
+
|
115
|
+
'null' => :null,
|
116
|
+
|
117
|
+
'mLoc' => :machine_location,
|
118
|
+
'mach' => :machine,
|
119
|
+
|
120
|
+
'tdas' => :dash_style,
|
121
|
+
'trot' => :rotation,
|
122
|
+
|
123
|
+
'suin' => :suite_info,
|
124
|
+
'gcli' => :class_info,
|
125
|
+
'pinf' => :property_info,
|
126
|
+
'elin' => :element_info,
|
127
|
+
'evin' => :event_info,
|
128
|
+
'pmin' => :parameter_info,
|
129
|
+
|
130
|
+
# unit types
|
131
|
+
|
132
|
+
'cmtr' => :centimeters,
|
133
|
+
'metr' => :meters,
|
134
|
+
'kmtr' => :kilometers,
|
135
|
+
'inch' => :inches,
|
136
|
+
'feet' => :feet,
|
137
|
+
'yard' => :yards,
|
138
|
+
'mile' => :miles,
|
139
|
+
|
140
|
+
'sqrm' => :square_meters,
|
141
|
+
'sqkm' => :square_kilometers,
|
142
|
+
'sqft' => :square_feet,
|
143
|
+
'sqyd' => :square_yards,
|
144
|
+
'sqmi' => :square_miles,
|
145
|
+
|
146
|
+
'ccmt' => :cubic_centimeters,
|
147
|
+
'cmet' => :cubic_meters,
|
148
|
+
'cuin' => :cubic_inches,
|
149
|
+
'cfet' => :cubic_feet,
|
150
|
+
'cyrd' => :cubic_yards,
|
151
|
+
|
152
|
+
'litr' => :liters,
|
153
|
+
'qrts' => :quarts,
|
154
|
+
'galn' => :gallons,
|
155
|
+
|
156
|
+
'gram' => :grams,
|
157
|
+
'kgrm' => :kilograms,
|
158
|
+
'ozs ' => :ounces,
|
159
|
+
'lbs ' => :pounds,
|
160
|
+
|
161
|
+
'degc' => :degrees_Celsius,
|
162
|
+
'degf' => :degrees_Fahrenheit,
|
163
|
+
'degk' => :degrees_Kelvin,
|
164
|
+
|
165
|
+
# month and weekday
|
166
|
+
|
167
|
+
'jan ' => :January,
|
168
|
+
'feb ' => :February,
|
169
|
+
'mar ' => :March,
|
170
|
+
'apr ' => :April,
|
171
|
+
'may ' => :May,
|
172
|
+
'jun ' => :June,
|
173
|
+
'jul ' => :July,
|
174
|
+
'aug ' => :August,
|
175
|
+
'sep ' => :September,
|
176
|
+
'oct ' => :October,
|
177
|
+
'nov ' => :November,
|
178
|
+
'dec ' => :December,
|
179
|
+
|
180
|
+
'sun ' => :Sunday,
|
181
|
+
'mon ' => :Monday,
|
182
|
+
'tue ' => :Tuesday,
|
183
|
+
'wed ' => :Wednesday,
|
184
|
+
'thu ' => :Thursday,
|
185
|
+
'fri ' => :Friday,
|
186
|
+
'sat ' => :Saturday,
|
187
|
+
}
|
188
|
+
|
189
|
+
#######
|
190
|
+
# TypeByCode and TypeByName tables are used to convert Ruby Symbols to and from AEDescs of typeType, typeEnum and typeProperty.
|
191
|
+
|
192
|
+
TypeByCode = Types.clone.update(Enums)
|
193
|
+
|
194
|
+
TypeByName = {}
|
195
|
+
Types.each { |code, name| TypeByName[name] = AEM::AEType.new(code) }
|
196
|
+
Enums.each { |code, name| TypeByName[name] = AEM::AEEnum.new(code) }
|
197
|
+
|
198
|
+
#######
|
199
|
+
# ReferenceByCode tables is used by ReferenceRenderer module to convert property and element four-char codes to human readable names
|
200
|
+
#
|
201
|
+
# ReferenceByName table is used to convert appscript-style references and commands to their aem equivalents
|
202
|
+
|
203
|
+
ReferenceByCode = {
|
204
|
+
'pcls' => 'class_',
|
205
|
+
'ID ' => 'id_',
|
206
|
+
}
|
207
|
+
|
208
|
+
ReferenceByName = {
|
209
|
+
:quit => [:command, ['aevtquit', {
|
210
|
+
:saving => 'savo',
|
211
|
+
}]],
|
212
|
+
:activate => [:command, ['miscactv', {
|
213
|
+
}]],
|
214
|
+
:run => [:command, ['aevtoapp', {
|
215
|
+
}]],
|
216
|
+
:launch => [:command, ['ascrnoop', {
|
217
|
+
}]],
|
218
|
+
:open => [:command, ['aevtodoc', {
|
219
|
+
}]],
|
220
|
+
:get => [:command, ['coregetd', {
|
221
|
+
}]],
|
222
|
+
:print => [:command, ['aevtpdoc', {
|
223
|
+
}]],
|
224
|
+
:class_ => [:property, 'pcls'],
|
225
|
+
:set => [:command, ['coresetd', {
|
226
|
+
:to => 'data',
|
227
|
+
}]],
|
228
|
+
:reopen => [:command, ['aevtrapp', {
|
229
|
+
}]],
|
230
|
+
:id_ => [:property, 'ID '],
|
231
|
+
:open_location => [:command, ['GURLGURL', {
|
232
|
+
:window => 'WIND',
|
233
|
+
}]],
|
234
|
+
}
|
235
|
+
|
236
|
+
#######
|
237
|
+
# DefaultCommands; used by Terminology._make_reference_table to check for any collisions between standard and application-defined commands where the command names are the same but the codes are different
|
238
|
+
|
239
|
+
DefaultCommands = {} # {'quit' => 'aevtquit', 'activate' => 'miscactv',...}
|
240
|
+
ReferenceByName.each do |name, info|
|
241
|
+
if info[0] == :command
|
242
|
+
DefaultCommands[name.to_s] = info[1][0]
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
@@ -0,0 +1,132 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
# Copyright (C) 2006 HAS.
|
3
|
+
# Released under MIT License.
|
4
|
+
|
5
|
+
require "_aem/aemreference"
|
6
|
+
|
7
|
+
|
8
|
+
class ReferenceRenderer
|
9
|
+
# Generates string representations of appscript references from aem object specifiers.
|
10
|
+
|
11
|
+
private_class_method :new
|
12
|
+
attr_reader :result
|
13
|
+
|
14
|
+
def initialize(app_data)
|
15
|
+
@_app_data = app_data
|
16
|
+
@result = "AS"
|
17
|
+
end
|
18
|
+
|
19
|
+
def _format(val)
|
20
|
+
if val.is_a?(AEMReference::Base)
|
21
|
+
return ReferenceRenderer.render(@_app_data, val)
|
22
|
+
else
|
23
|
+
return val.inspect
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def property(code)
|
28
|
+
name = @_app_data.reference_by_code.fetch('p'+code) { @_app_data.reference_by_code.fetch('e'+code) }
|
29
|
+
@result += ".#{name}"
|
30
|
+
return self
|
31
|
+
end
|
32
|
+
|
33
|
+
def elements(code)
|
34
|
+
name = @_app_data.reference_by_code.fetch('e'+code) { @_app_data.reference_by_code.fetch('p'+code) }
|
35
|
+
@result += ".#{name}"
|
36
|
+
return self
|
37
|
+
end
|
38
|
+
|
39
|
+
def by_name(name)
|
40
|
+
@result += "[#{_format(name)}]"
|
41
|
+
return self
|
42
|
+
end
|
43
|
+
|
44
|
+
def by_index(index)
|
45
|
+
@result += "[#{_format(index)}]"
|
46
|
+
return self
|
47
|
+
end
|
48
|
+
|
49
|
+
def by_id(id)
|
50
|
+
@result += ".ID(#{_format(id)})"
|
51
|
+
return self
|
52
|
+
end
|
53
|
+
|
54
|
+
def by_range(sel1, sel2)
|
55
|
+
@result += "[#{_format(sel1)}, #{_format(sel2)}]"
|
56
|
+
return self
|
57
|
+
end
|
58
|
+
|
59
|
+
def by_filter(sel)
|
60
|
+
@result += "[#{_format(sel)}]"
|
61
|
+
return self
|
62
|
+
end
|
63
|
+
|
64
|
+
def previous(sel)
|
65
|
+
@result += ".previous(#{_format(@_app_data.type_by_code[sel])})"
|
66
|
+
return self
|
67
|
+
end
|
68
|
+
|
69
|
+
def next(sel)
|
70
|
+
@result += ".next(#{_format(@_app_data.type_by_code[sel])})"
|
71
|
+
return self
|
72
|
+
end
|
73
|
+
|
74
|
+
def app
|
75
|
+
if @_app_data.path
|
76
|
+
@result += ".app(#{@_app_data.path.inspect})"
|
77
|
+
elsif @_app_data.pid
|
78
|
+
@result += ".app.by_pid(#{@_app_data.pid.inspect})"
|
79
|
+
elsif @_app_data.url
|
80
|
+
@result += ".app.by_url(#{@_app_data.url.inspect})"
|
81
|
+
else
|
82
|
+
@result += ".app.current"
|
83
|
+
end
|
84
|
+
return self
|
85
|
+
end
|
86
|
+
|
87
|
+
def con
|
88
|
+
@result += ".con"
|
89
|
+
return self
|
90
|
+
end
|
91
|
+
|
92
|
+
def its
|
93
|
+
@result += ".its"
|
94
|
+
return self
|
95
|
+
end
|
96
|
+
|
97
|
+
def method_missing(name, *args)
|
98
|
+
if args.length > 0
|
99
|
+
@result += ".#{name.to_s}(#{(args.map { |arg| arg.inspect }).join(', ')})"
|
100
|
+
else
|
101
|
+
@result += ".#{name.to_s}"
|
102
|
+
end
|
103
|
+
return self
|
104
|
+
end
|
105
|
+
|
106
|
+
# public
|
107
|
+
|
108
|
+
def ReferenceRenderer.render(app_data, aem_reference)
|
109
|
+
# Take an aem reference, e.g.:
|
110
|
+
#
|
111
|
+
# app.elements('docu').by_index(1).property('ctxt')
|
112
|
+
#
|
113
|
+
# and an AppData instance containing application's location and terminology,
|
114
|
+
# and render an appscript-style reference string, e.g.:
|
115
|
+
#
|
116
|
+
# "AS.app('/Applications/TextEdit.app').documents[1].text"
|
117
|
+
#
|
118
|
+
# Used by AS::Reference#to_s
|
119
|
+
#
|
120
|
+
f = new(app_data)
|
121
|
+
begin
|
122
|
+
aem_reference.AEM_resolve(f)
|
123
|
+
return f.result
|
124
|
+
rescue
|
125
|
+
return aem_reference.inspect
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
|
132
|
+
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#!/usr/local/bin/ruby
|
2
|
+
# Copyright (C) 2006 HAS.
|
3
|
+
# Released under MIT License.
|
4
|
+
|
5
|
+
# This list is mirrored in ch.6 of the appscript manual and in py-appscript's osaterminology.makeidentifier module
|
6
|
+
|
7
|
+
ReservedKeywords = [
|
8
|
+
"==",
|
9
|
+
"===",
|
10
|
+
"=~",
|
11
|
+
"AS_aem_reference",
|
12
|
+
"AS_aem_reference=",
|
13
|
+
"AS_app_data",
|
14
|
+
"AS_app_data=",
|
15
|
+
"AS_resolve",
|
16
|
+
"ID",
|
17
|
+
"[]",
|
18
|
+
"__id__",
|
19
|
+
"__send__",
|
20
|
+
"_aem_application_class",
|
21
|
+
"_call",
|
22
|
+
"_resolve_range_boundary",
|
23
|
+
"_send_command",
|
24
|
+
"abort_transaction",
|
25
|
+
"after",
|
26
|
+
"and",
|
27
|
+
"any",
|
28
|
+
"before",
|
29
|
+
"by_creator",
|
30
|
+
"by_id",
|
31
|
+
"by_name",
|
32
|
+
"by_pid",
|
33
|
+
"by_url",
|
34
|
+
"class",
|
35
|
+
"clone",
|
36
|
+
"commands",
|
37
|
+
"contains",
|
38
|
+
"current",
|
39
|
+
"display",
|
40
|
+
"does_not_contain",
|
41
|
+
"does_not_end_with",
|
42
|
+
"does_not_start_with",
|
43
|
+
"dup",
|
44
|
+
"elements",
|
45
|
+
"end",
|
46
|
+
"end_transaction",
|
47
|
+
"ends_with",
|
48
|
+
"eq",
|
49
|
+
"eql?",
|
50
|
+
"equal?",
|
51
|
+
"extend",
|
52
|
+
"first",
|
53
|
+
"freeze",
|
54
|
+
"frozen?",
|
55
|
+
"ge",
|
56
|
+
"gt",
|
57
|
+
"hash",
|
58
|
+
"help",
|
59
|
+
"id",
|
60
|
+
"ignore",
|
61
|
+
"inspect",
|
62
|
+
"instance_eval",
|
63
|
+
"instance_of?",
|
64
|
+
"instance_variable_get",
|
65
|
+
"instance_variable_set",
|
66
|
+
"instance_variables",
|
67
|
+
"is_a?",
|
68
|
+
"is_in",
|
69
|
+
"is_not_in",
|
70
|
+
"keywords",
|
71
|
+
"kind_of?",
|
72
|
+
"last",
|
73
|
+
"launch",
|
74
|
+
"le",
|
75
|
+
"lt",
|
76
|
+
"method",
|
77
|
+
"method_missing",
|
78
|
+
"methods",
|
79
|
+
"middle",
|
80
|
+
"ne",
|
81
|
+
"next",
|
82
|
+
"nil?",
|
83
|
+
"not",
|
84
|
+
"object_id",
|
85
|
+
"or",
|
86
|
+
"parameters",
|
87
|
+
"previous",
|
88
|
+
"private_methods",
|
89
|
+
"properties",
|
90
|
+
"protected_methods",
|
91
|
+
"public_methods",
|
92
|
+
"respond_to?",
|
93
|
+
"result_type",
|
94
|
+
"send",
|
95
|
+
"singleton_methods",
|
96
|
+
"start",
|
97
|
+
"start_transaction",
|
98
|
+
"starts_with",
|
99
|
+
"taint",
|
100
|
+
"tainted?",
|
101
|
+
"timeout",
|
102
|
+
"to_a",
|
103
|
+
"to_s",
|
104
|
+
"type",
|
105
|
+
"untaint",
|
106
|
+
"wait_reply",
|
107
|
+
]
|