Hello again, Macruby community! I'm trying to rewrite a program that drives Excel with appscript, and running into the problem of translating back and forth between HFS and POSIX pathnames. The old Appscript module included a MacTypes module, and these two translations were provided. 1. to go from POSIX to HFS: hfs_pathname = MacTypes::FileURL.path(posix_pathname).hfs_path 2. to make the round trip back to POSIX: posix_pathname = DefaultCodecs.unpack(DefaultCodecs.pack(hfs_pathname).coerce(KAE::TypeFileURL)).path Do I need to go to the scripting bridge for this? This is Core Foundation stuff, and I'm totally at sea. Any help would be greatly appreciated. Bob Schaaf
Hi Bob, If at all possible I'd try and avoid the conversion. If this is not feasible, this could help: def posix_from_hfs(hfs) url = CFURLCreateWithFileSystemPath(nil, hfs, KCFURLHFSPathStyle, false) # final argument is whether the path is a directory or not url.path end def hfs_from_posix(posix) url = NSURL.fileURLWithPath posix CFURLCopyFileSystemPath(url, KCFURLHFSPathStyle) end The first method needs reworking, as it assumes that the HFS path is not a directory. I've only did a very brief test of the above code, but it seems to do the job. Al On 18 Apr 2012, at 12:48, Robert Schaaf wrote:
Hello again, Macruby community!
I'm trying to rewrite a program that drives Excel with appscript, and running into the problem of translating back and forth between HFS and POSIX pathnames. The old Appscript module included a MacTypes module, and these two translations were provided.
1. to go from POSIX to HFS:
hfs_pathname = MacTypes::FileURL.path(posix_pathname).hfs_path
2. to make the round trip back to POSIX:
posix_pathname = DefaultCodecs.unpack(DefaultCodecs.pack(hfs_pathname).coerce(KAE::TypeFileURL)).path
Do I need to go to the scripting bridge for this? This is Core Foundation stuff, and I'm totally at sea.
Any help would be greatly appreciated.
Bob Schaaf
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
Thanks Al, This works like a charm. I can guarantee that no directories will get through, but as to avoiding HFS, I'm afraid Excel wants it. Now if only there was a way to speed up Macruby's load time. It would be nice if someone forked the project to make Macruby a system service launched at boot, with a persistent heap, ala Maglev. Cheers, Bob Schaaf On Apr 18, 2012, at 10:02 AM, Alan Skipp wrote:
Hi Bob, If at all possible I'd try and avoid the conversion. If this is not feasible, this could help:
def posix_from_hfs(hfs) url = CFURLCreateWithFileSystemPath(nil, hfs, KCFURLHFSPathStyle, false) # final argument is whether the path is a directory or not url.path end
def hfs_from_posix(posix) url = NSURL.fileURLWithPath posix CFURLCopyFileSystemPath(url, KCFURLHFSPathStyle) end
The first method needs reworking, as it assumes that the HFS path is not a directory. I've only did a very brief test of the above code, but it seems to do the job.
Al
On 18 Apr 2012, at 12:48, Robert Schaaf wrote:
Hello again, Macruby community!
I'm trying to rewrite a program that drives Excel with appscript, and running into the problem of translating back and forth between HFS and POSIX pathnames. The old Appscript module included a MacTypes module, and these two translations were provided.
1. to go from POSIX to HFS:
hfs_pathname = MacTypes::FileURL.path(posix_pathname).hfs_path
2. to make the round trip back to POSIX:
posix_pathname = DefaultCodecs.unpack(DefaultCodecs.pack(hfs_pathname).coerce(KAE::TypeFileURL)).path
Do I need to go to the scripting bridge for this? This is Core Foundation stuff, and I'm totally at sea.
Any help would be greatly appreciated.
Bob Schaaf
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
participants (2)
-
Alan Skipp
-
Robert Schaaf