rb-scpt 1.0.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.
Files changed (94) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +497 -0
  3. data/doc/aem-manual/01_introduction.html +60 -0
  4. data/doc/aem-manual/02_apioverview.html +107 -0
  5. data/doc/aem-manual/03_packingandunpackingdata.html +135 -0
  6. data/doc/aem-manual/04_references.html +409 -0
  7. data/doc/aem-manual/05_targetingapplications.html +164 -0
  8. data/doc/aem-manual/06_buildingandsendingevents.html +229 -0
  9. data/doc/aem-manual/07_findapp.html +63 -0
  10. data/doc/aem-manual/08_examples.html +94 -0
  11. data/doc/aem-manual/aemreferenceinheritance.gif +0 -0
  12. data/doc/aem-manual/index.html +56 -0
  13. data/doc/appscript-manual/01_introduction.html +94 -0
  14. data/doc/appscript-manual/02_aboutappscripting.html +247 -0
  15. data/doc/appscript-manual/03_quicktutorial.html +167 -0
  16. data/doc/appscript-manual/04_gettinghelp.html +188 -0
  17. data/doc/appscript-manual/05_keywordconversion.html +106 -0
  18. data/doc/appscript-manual/06_classesandenums.html +192 -0
  19. data/doc/appscript-manual/07_applicationobjects.html +211 -0
  20. data/doc/appscript-manual/08_realvsgenericreferences.html +96 -0
  21. data/doc/appscript-manual/09_referenceforms.html +241 -0
  22. data/doc/appscript-manual/10_referenceexamples.html +154 -0
  23. data/doc/appscript-manual/11_applicationcommands.html +245 -0
  24. data/doc/appscript-manual/12_commandexamples.html +138 -0
  25. data/doc/appscript-manual/13_performanceissues.html +142 -0
  26. data/doc/appscript-manual/14_notes.html +80 -0
  27. data/doc/appscript-manual/application_architecture.gif +0 -0
  28. data/doc/appscript-manual/application_architecture2.gif +0 -0
  29. data/doc/appscript-manual/finder_to_textedit_event.gif +0 -0
  30. data/doc/appscript-manual/index.html +62 -0
  31. data/doc/appscript-manual/relationships_example.gif +0 -0
  32. data/doc/appscript-manual/ruby_to_itunes_event.gif +0 -0
  33. data/doc/full.css +106 -0
  34. data/doc/index.html +45 -0
  35. data/doc/mactypes-manual/01_introduction.html +54 -0
  36. data/doc/mactypes-manual/02_aliasclass.html +124 -0
  37. data/doc/mactypes-manual/03_fileurlclass.html +126 -0
  38. data/doc/mactypes-manual/04_unitsclass.html +100 -0
  39. data/doc/mactypes-manual/index.html +53 -0
  40. data/doc/osax-manual/01_introduction.html +67 -0
  41. data/doc/osax-manual/02_interface.html +147 -0
  42. data/doc/osax-manual/03_examples.html +73 -0
  43. data/doc/osax-manual/04_notes.html +61 -0
  44. data/doc/osax-manual/index.html +53 -0
  45. data/doc/rb-appscript-logo.png +0 -0
  46. data/extconf.rb +65 -0
  47. data/rb-scpt.gemspec +14 -0
  48. data/sample/AB_export_vcard.rb +31 -0
  49. data/sample/AB_list_people_with_emails.rb +13 -0
  50. data/sample/Add_iCal_event.rb +21 -0
  51. data/sample/Create_daily_iCal_todos.rb +75 -0
  52. data/sample/Export_Address_Book_phone_numbers.rb +59 -0
  53. data/sample/Hello_world.rb +21 -0
  54. data/sample/List_iTunes_playlist_names.rb +11 -0
  55. data/sample/Make_Mail_message.rb +33 -0
  56. data/sample/Open_file_in_TextEdit.rb +13 -0
  57. data/sample/Organize_Mail_messages.rb +61 -0
  58. data/sample/Print_folder_tree.rb +16 -0
  59. data/sample/Select_all_HTML_files.rb +14 -0
  60. data/sample/Set_iChat_status.rb +24 -0
  61. data/sample/Simple_Finder_GUI_Scripting.rb +18 -0
  62. data/sample/Stagger_Finder_windows.rb +25 -0
  63. data/sample/TextEdit_demo.rb +130 -0
  64. data/sample/iTunes_top40_to_html.rb +71 -0
  65. data/src/SendThreadSafe.c +380 -0
  66. data/src/SendThreadSafe.h +139 -0
  67. data/src/lib/_aem/aemreference.rb +1022 -0
  68. data/src/lib/_aem/codecs.rb +662 -0
  69. data/src/lib/_aem/connect.rb +205 -0
  70. data/src/lib/_aem/encodingsupport.rb +77 -0
  71. data/src/lib/_aem/findapp.rb +85 -0
  72. data/src/lib/_aem/mactypes.rb +251 -0
  73. data/src/lib/_aem/send.rb +279 -0
  74. data/src/lib/_aem/typewrappers.rb +59 -0
  75. data/src/lib/_appscript/defaultterminology.rb +277 -0
  76. data/src/lib/_appscript/referencerenderer.rb +245 -0
  77. data/src/lib/_appscript/reservedkeywords.rb +116 -0
  78. data/src/lib/_appscript/safeobject.rb +249 -0
  79. data/src/lib/_appscript/terminology.rb +471 -0
  80. data/src/lib/aem.rb +253 -0
  81. data/src/lib/appscript.rb +1075 -0
  82. data/src/lib/kae.rb +1489 -0
  83. data/src/lib/osax.rb +659 -0
  84. data/src/rbae.c +979 -0
  85. data/test/README +3 -0
  86. data/test/test_aemreference.rb +118 -0
  87. data/test/test_appscriptcommands.rb +152 -0
  88. data/test/test_appscriptreference.rb +106 -0
  89. data/test/test_codecs.rb +186 -0
  90. data/test/test_findapp.rb +26 -0
  91. data/test/test_mactypes.rb +79 -0
  92. data/test/test_osax.rb +54 -0
  93. data/test/testall.sh +10 -0
  94. metadata +145 -0
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
4
+
5
+ require 'test/unit'
6
+ require "_aem/findapp"
7
+
8
+
9
+ class TC_FindApp < Test::Unit::TestCase
10
+
11
+ def test_find
12
+ [
13
+ ['/Applications/iCal.app', '/Applications/iCal.app'],
14
+ ['ical.app', '/Applications/iCal.app'],
15
+ ['ICAL', '/Applications/iCal.app'],
16
+ ].each do |val, res|
17
+ assert_equal(res, FindApp.by_name(val))
18
+ end
19
+ assert_equal('/Applications/TextEdit.app', FindApp.by_creator('ttxt'))
20
+ assert_equal('/System/Library/CoreServices/Finder.app', FindApp.by_id('com.apple.finder'))
21
+ assert_raises(FindApp::ApplicationNotFoundError) { FindApp.by_name('NON-EXISTENT-APP') }
22
+
23
+ # assert_equal("/Users/has/\306\222\303\270u\314\210.app", FindApp.by_name("\306\222\303\270u\314\210.app")) # utf8 paths work ok
24
+ end
25
+ end
26
+
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
4
+
5
+ require 'test/unit'
6
+ require "_aem/mactypes"
7
+
8
+
9
+ class TC_MacTypes < Test::Unit::TestCase
10
+
11
+ def setup
12
+ @path1 = `mktemp -t codecs-test`.chomp
13
+ dir, fname = File.split(@path1)
14
+ @path2 = File.join(dir, 'moved-' + fname)
15
+ # puts "path: #{@path1}" # e.g. /tmp/codecs-test.HWr1EnE3
16
+ end
17
+
18
+ def normalize(path)
19
+ return path.gsub(/\/+/, '/') # quick-n-dirty
20
+ end
21
+
22
+ def test_alias
23
+ # make alias
24
+ f = MacTypes::Alias.path(@path1)
25
+
26
+
27
+ assert_equal(MacTypes::Alias.path(@path1), f)
28
+
29
+ # get path
30
+ # note that initial /tmp/codecs-test... path will automatically change to /private/tmp/codecs-test...
31
+ p1 = normalize('/private'+@path1)
32
+ p2 = normalize('/private'+@path2)
33
+
34
+ assert_equal(p1, normalize(f.path))
35
+
36
+ #puts "alias path 1: #{f}" # e.g. /private/tmp/codecs-test.HWr1EnE3
37
+ assert_equal(p1, f.to_s)
38
+
39
+ # get desc
40
+ #puts f.desc.type, f.desc.data # alis, [binary data]
41
+ assert_equal('alis', f.desc.type)
42
+
43
+
44
+ # check alias keeps track of moved file
45
+ `mv #{@path1} #{@path2}`
46
+ # puts "alias path 2: #{f}" # /private/tmp/moved-codecs-test.HWr1EnE3
47
+ assert_equal(p2, f.to_s)
48
+
49
+ assert_equal(p2, normalize(f.path))
50
+
51
+ # check a FileNotFoundError is raised if getting path/FileURL for a filesystem object that no longer exists
52
+ `rm #{@path2}`
53
+ assert_raises(MacTypes::FileNotFoundError) { f.to_s } # File not found.
54
+ assert_raises(MacTypes::FileNotFoundError) { f.to_file_url } # File not found.
55
+
56
+ assert_equal(MacTypes::Alias.path("/Library/Scripts/"), MacTypes::Alias.path("/Library/Scripts/"))
57
+ assert_not_equal(MacTypes::Alias.path("/Library/Scripts/"), MacTypes::Alias.path("/Applications/"))
58
+ end
59
+
60
+
61
+ def test_file_url
62
+
63
+ g = MacTypes::FileURL.path('/non/existent path')
64
+
65
+ assert_equal('/non/existent path', g.to_s)
66
+
67
+ assert_equal('furl', g.desc.type)
68
+ assert_equal('file://localhost/non/existent%20path', g.desc.data)
69
+
70
+ assert_equal('MacTypes::FileURL.path("/non/existent path")', g.to_file_url.inspect)
71
+
72
+ # check a not-found error is raised if getting Alias for a filesystem object that doesn't exist
73
+ assert_raises(MacTypes::FileNotFoundError) { g.to_alias } # File "/non/existent path" not found.
74
+
75
+ assert_equal(MacTypes::FileURL.path("/Library/Scripts/"), MacTypes::FileURL.path("/Library/Scripts/"))
76
+ assert_not_equal(MacTypes::FileURL.path("/Library/Scripts/"), MacTypes::FileURL.path("/Applications/"))
77
+ assert_not_equal(MacTypes::FileURL.path("/Library/Scripts/"), MacTypes::Alias.path("/Library/Scripts/"))
78
+ end
79
+ end
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/ruby -w
2
+
3
+ begin; require 'rubygems'; rescue LoadError; end
4
+
5
+ require 'test/unit'
6
+ require 'osax'
7
+
8
+ class TC_OSAX < Test::Unit::TestCase
9
+
10
+ def test_1
11
+ sa = OSAX.osax('Standardadditions')
12
+
13
+ assert_equal(65, sa.ASCII_number('A'))
14
+
15
+ assert_equal(MacTypes::Alias.path("/Applications/"), sa.path_to(:applications_folder))
16
+
17
+ assert_equal(MacTypes::Alias.path("/Library/Scripts/"),
18
+ sa.path_to(:scripts_folder, :from=>:local_domain))
19
+
20
+ assert_raises(RuntimeError) { sa.non_existent_command }
21
+ end
22
+
23
+ def test_2
24
+ sa = OSAX.osax('Standardadditions').by_name('Finder')
25
+ assert_equal(65, sa.ASCII_number('A'))
26
+ assert_equal(MacTypes::Alias.path("/System/Library/CoreServices/Finder.app/"), sa.path_to(nil))
27
+ end
28
+
29
+ def test_3
30
+ sa = OSAX.osax('Standardadditions').by_creator('MACS')
31
+ assert_equal(65, sa.ASCII_number('A'))
32
+ assert_equal(MacTypes::Alias.path("/System/Library/CoreServices/Finder.app/"), sa.path_to(nil))
33
+ end
34
+
35
+ def test_4
36
+ sa = OSAX.osax('Standardadditions').by_id('com.apple.finder')
37
+ assert_equal(65, sa.ASCII_number('A'))
38
+ assert_equal(MacTypes::Alias.path("/System/Library/CoreServices/Finder.app/"), sa.path_to(nil))
39
+ end
40
+
41
+ def test_5
42
+ sa = OSAX.osax('Standardadditions').by_pid(`top -l1 | grep Finder | awk '{ print $1 }'`.to_i)
43
+ assert_equal(MacTypes::Alias.path("/System/Library/CoreServices/Finder.app/"), sa.path_to(nil))
44
+ assert_equal(65, sa.ASCII_number('A'))
45
+ end
46
+
47
+ def test_6
48
+ sa = OSAX.osax('Standardadditions').by_aem_app(AEM::Application.by_path("/System/Library/CoreServices/Finder.app/"))
49
+ assert_equal(65, sa.ASCII_number('A'))
50
+ assert_equal(MacTypes::Alias.path("/System/Library/CoreServices/Finder.app/"), sa.path_to(nil))
51
+ end
52
+
53
+
54
+ end
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+
3
+ for f in `ls | grep '^test_'`;
4
+ do
5
+ echo $f
6
+ /usr/bin/ruby -w $f
7
+ echo
8
+ echo
9
+ done
10
+
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rb-scpt
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - hhas
8
+ - Brendan Thompson
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2015-07-14 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description:
15
+ email: brendan@btsystems.com.au
16
+ executables: []
17
+ extensions:
18
+ - extconf.rb
19
+ extra_rdoc_files: []
20
+ files:
21
+ - CHANGES
22
+ - doc/aem-manual/01_introduction.html
23
+ - doc/aem-manual/02_apioverview.html
24
+ - doc/aem-manual/03_packingandunpackingdata.html
25
+ - doc/aem-manual/04_references.html
26
+ - doc/aem-manual/05_targetingapplications.html
27
+ - doc/aem-manual/06_buildingandsendingevents.html
28
+ - doc/aem-manual/07_findapp.html
29
+ - doc/aem-manual/08_examples.html
30
+ - doc/aem-manual/aemreferenceinheritance.gif
31
+ - doc/aem-manual/index.html
32
+ - doc/appscript-manual/01_introduction.html
33
+ - doc/appscript-manual/02_aboutappscripting.html
34
+ - doc/appscript-manual/03_quicktutorial.html
35
+ - doc/appscript-manual/04_gettinghelp.html
36
+ - doc/appscript-manual/05_keywordconversion.html
37
+ - doc/appscript-manual/06_classesandenums.html
38
+ - doc/appscript-manual/07_applicationobjects.html
39
+ - doc/appscript-manual/08_realvsgenericreferences.html
40
+ - doc/appscript-manual/09_referenceforms.html
41
+ - doc/appscript-manual/10_referenceexamples.html
42
+ - doc/appscript-manual/11_applicationcommands.html
43
+ - doc/appscript-manual/12_commandexamples.html
44
+ - doc/appscript-manual/13_performanceissues.html
45
+ - doc/appscript-manual/14_notes.html
46
+ - doc/appscript-manual/application_architecture.gif
47
+ - doc/appscript-manual/application_architecture2.gif
48
+ - doc/appscript-manual/finder_to_textedit_event.gif
49
+ - doc/appscript-manual/index.html
50
+ - doc/appscript-manual/relationships_example.gif
51
+ - doc/appscript-manual/ruby_to_itunes_event.gif
52
+ - doc/full.css
53
+ - doc/index.html
54
+ - doc/mactypes-manual/01_introduction.html
55
+ - doc/mactypes-manual/02_aliasclass.html
56
+ - doc/mactypes-manual/03_fileurlclass.html
57
+ - doc/mactypes-manual/04_unitsclass.html
58
+ - doc/mactypes-manual/index.html
59
+ - doc/osax-manual/01_introduction.html
60
+ - doc/osax-manual/02_interface.html
61
+ - doc/osax-manual/03_examples.html
62
+ - doc/osax-manual/04_notes.html
63
+ - doc/osax-manual/index.html
64
+ - doc/rb-appscript-logo.png
65
+ - extconf.rb
66
+ - rb-scpt.gemspec
67
+ - sample/AB_export_vcard.rb
68
+ - sample/AB_list_people_with_emails.rb
69
+ - sample/Add_iCal_event.rb
70
+ - sample/Create_daily_iCal_todos.rb
71
+ - sample/Export_Address_Book_phone_numbers.rb
72
+ - sample/Hello_world.rb
73
+ - sample/List_iTunes_playlist_names.rb
74
+ - sample/Make_Mail_message.rb
75
+ - sample/Open_file_in_TextEdit.rb
76
+ - sample/Organize_Mail_messages.rb
77
+ - sample/Print_folder_tree.rb
78
+ - sample/Select_all_HTML_files.rb
79
+ - sample/Set_iChat_status.rb
80
+ - sample/Simple_Finder_GUI_Scripting.rb
81
+ - sample/Stagger_Finder_windows.rb
82
+ - sample/TextEdit_demo.rb
83
+ - sample/iTunes_top40_to_html.rb
84
+ - src/SendThreadSafe.c
85
+ - src/SendThreadSafe.h
86
+ - src/lib/_aem/aemreference.rb
87
+ - src/lib/_aem/codecs.rb
88
+ - src/lib/_aem/connect.rb
89
+ - src/lib/_aem/encodingsupport.rb
90
+ - src/lib/_aem/findapp.rb
91
+ - src/lib/_aem/mactypes.rb
92
+ - src/lib/_aem/send.rb
93
+ - src/lib/_aem/typewrappers.rb
94
+ - src/lib/_appscript/defaultterminology.rb
95
+ - src/lib/_appscript/referencerenderer.rb
96
+ - src/lib/_appscript/reservedkeywords.rb
97
+ - src/lib/_appscript/safeobject.rb
98
+ - src/lib/_appscript/terminology.rb
99
+ - src/lib/aem.rb
100
+ - src/lib/appscript.rb
101
+ - src/lib/kae.rb
102
+ - src/lib/osax.rb
103
+ - src/rbae.c
104
+ - test/README
105
+ - test/test_aemreference.rb
106
+ - test/test_appscriptcommands.rb
107
+ - test/test_appscriptreference.rb
108
+ - test/test_codecs.rb
109
+ - test/test_findapp.rb
110
+ - test/test_mactypes.rb
111
+ - test/test_osax.rb
112
+ - test/testall.sh
113
+ homepage: https://github.com/BrendanThompson/rb-scpt
114
+ licenses: []
115
+ metadata: {}
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '1.8'
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project:
132
+ rubygems_version: 2.4.5
133
+ signing_key:
134
+ specification_version: 4
135
+ summary: This is a fork of the original rb-appscript. Ruby AppleScript (rb-scpt) is
136
+ a high-level, user-friendly Apple event bridge that allows you to control scriptable
137
+ Mac OS X applications using ordinary Ruby scripts.
138
+ test_files:
139
+ - test/test_aemreference.rb
140
+ - test/test_appscriptcommands.rb
141
+ - test/test_appscriptreference.rb
142
+ - test/test_codecs.rb
143
+ - test/test_findapp.rb
144
+ - test/test_mactypes.rb
145
+ - test/test_osax.rb