[MacRuby] #111: macruby not working with unicode from ScriptingBridge
#111: macruby not working with unicode from ScriptingBridge -------------------------------------+-------------------------------------- Reporter: jordan.breeding@mac.com | Owner: lsansonetti@apple.com Type: defect | Status: new Priority: blocker | Milestone: Component: MacRuby | Keywords: -------------------------------------+-------------------------------------- I am having trouble using unicode strings passed in from ScriptingBridge, RubyCocoa works just fine with the same strings. macruby: {{{ 5 jordan@thetourist ~/Desktop/Scripts > macirb
framework("Cocoa") => true framework("ScriptingBridge") => true itunes = SBApplication.applicationWithBundleIdentifier("com.apple.itunes") macruby: unknown type name "tdta". => #<ITunesApplication:0x1dfd270> unicodeTracks = itunes.sources.objectWithName("Library").userPlaylists.objectWithName("Music").fileTracks.select { |track| track.albumArtist == "Wire" } => [#<ITunesFileTrack:0x1450560>, #<ITunesFileTrack:0x1450930>, #<ITunesFileTrack:0x144ccd0>, #<ITunesFileTrack:0x144d080>, #<ITunesFileTrack:0x144d430>, #<ITunesFileTrack:0x144d7e0>, #<ITunesFileTrack:0x144dbe0>, #<ITunesFileTrack:0x144ba70>, #<ITunesFileTrack:0x144be20>, #<ITunesFileTrack:0x144c1d0>, #<ITunesFileTrack:0x144c580>, #<ITunesFileTrack:0x144c930>, #<ITunesFileTrack:0x144b2c0>, #<ITunesFileTrack:0x144b670>, #<ITunesFileTrack:0x144b060>, #<ITunesFileTrack:0x144a920>, #<ITunesFileTrack:0x144a3d0>, #<ITunesFileTrack:0x14497d0>, #<ITunesFileTrack:0x14481c0>, #<ITunesFileTrack:0x1448570>, #<ITunesFileTrack:0x1448920>, #<ITunesFileTrack:0x1448cd0>, #<ITunesFileTrack:0x14463d0>, #<ITunesFileTrack:0x10e5360>, #<ITunesFileTrack:0x10e3320>, #<ITunesFileTrack:0x10e36d0>, #<ITunesFileTrack:0x10e3a80>, #<ITunesFileTrack:0x10e3e30>, #<ITunesFileTrack:0x10e2c90>, #<ITunesFileTrack:0x10e3040>, #<ITunesFileTrack:0x10e2810>, #<ITunesFileTrack:0x10e0b90>, #<ITunesFileTrack:0x10e0f40>, #<ITunesFileTrack:0x10e12f0>, #<ITunesFileTrack:0x22a8860>, #<ITunesFileTrack:0x22a8c10>, #<ITunesFileTrack:0x22a8fc0>, #<ITunesFileTrack:0x22a9370>, #<ITunesFileTrack:0x22a9720>, #<ITunesFileTrack:0x22a9ad0>, #<ITunesFileTrack:0x22a9e80>, #<ITunesFileTrack:0x22aa230>, #<ITunesFileTrack:0x22aa5e0>] trackTitles = unicodeTracks.arrayByApplyingSelector("name") => ["One Of Us", "Circumspect", "Mekon Headman", "Perspex Icon", "Four Long Years", "Hard Currency", "Patient Flees", "Are You Ready?", "All Fours", "99.9", "Germ Ship", "Mr. Marx\xE2\x80\x99s Table", "1st Fast", "Read And Burn", "The Agfers Of Kodack", "Comet", "In The Art Of Stopping", "Spent", "I Don\xE2\x80\x99t Understand", "Strange", "106 Beats That", "Surgeon\xE2\x80\x99s Girl", "Pink Flag", "In The Art Of Stopping", "Mr. Marx's Table", "Being Watched", "Comet", "The Agfers Of Kodack", "Nice Streets Above", "Spent", "Read And Burn", "You Can't Leave Now", "Half Eaten", "99.9", "In Every City?", "What's Your Desire?", "Arriving/Staying/Going?", "(A Berlin) Drill", "Do You Drive? (Turn Your Coat)", "Jumping Mint?", "Did You Dugga?", "Where Are You Now?", "(A Chicago) Drill (Live)"]
}}}
RubyCocoa: {{{ 1 jordan@thetourist ~ > irb
require("osx/cocoa") => true include OSX => Object require_framework("ScriptingBridge") => true itunes = SBApplication.applicationWithBundleIdentifier("com.apple.itunes") : unknown type name "tdta". => #<OSX::ITunesApplication:0x36743c class='ITunesApplication' id=0x57a230> unicodeTracks = itunes.sources.objectWithName("Library").userPlaylists.objectWithName("Music").fileTracks.select { |track| track.albumArtist == "Wire" } => #<NSCFArray [#<OSX::ITunesFileTrack:0x3544e0 class='ITunesFileTrack' id=0x1ecca40>, #<OSX::ITunesFileTrack:0x3543d2 class='ITunesFileTrack' id=0x1ecdb50>, #<OSX::ITunesFileTrack:0x35436e class='ITunesFileTrack' id=0x1eccf70>, #<OSX::ITunesFileTrack:0x35430a class='ITunesFileTrack' id=0x1ecdac0>, #<OSX::ITunesFileTrack:0x3542a6 class='ITunesFileTrack' id=0x1ece020>, #<OSX::ITunesFileTrack:0x354242 class='ITunesFileTrack' id=0x1ecea40>, #<OSX::ITunesFileTrack:0x3541de class='ITunesFileTrack' id=0x1ecdff0>, #<OSX::ITunesFileTrack:0x35417a class='ITunesFileTrack' id=0x1ecf460>, #<OSX::ITunesFileTrack:0x354116 class='ITunesFileTrack' id=0x1ecfb30>, #<OSX::ITunesFileTrack:0x3540b2 class='ITunesFileTrack' id=0x1ecfea0>, #<OSX::ITunesFileTrack:0x35404e class='ITunesFileTrack' id=0x1ed03b0>, #<OSX::ITunesFileTrack:0x353fea class='ITunesFileTrack' id=0x1ed02c0>, #<OSX::ITunesFileTrack:0x353f86 class='ITunesFileTrack' id=0x1ed0830>, #<OSX::ITunesFileTrack:0x353f22 class='ITunesFileTrack' id=0x1ed0d90>, #<OSX::ITunesFileTrack:0x353ebe class='ITunesFileTrack' id=0x1ed0350>, #<OSX::ITunesFileTrack:0x353e5a class='ITunesFileTrack' id=0x1ecf980>, #<OSX::ITunesFileTrack:0x353df6 class='ITunesFileTrack' id=0x1ed1e20>, #<OSX::ITunesFileTrack:0x353d92 class='ITunesFileTrack' id=0x1ed1820>, #<OSX::ITunesFileTrack:0x353d2e class='ITunesFileTrack' id=0x1ed1d30>, #<OSX::ITunesFileTrack:0x353cca class='ITunesFileTrack' id=0x1ed2c70>, #<OSX::ITunesFileTrack:0x353c66 class='ITunesFileTrack' id=0x1ed3680>, #<OSX::ITunesFileTrack:0x353c02 class='ITunesFileTrack' id=0x1ed3190>, #<OSX::ITunesFileTrack:0x353b9e class='ITunesFileTrack' id=0x1ed3ff0>, #<OSX::ITunesFileTrack:0x350872 class='ITunesFileTrack' id=0x1f03760>, #<OSX::ITunesFileTrack:0x3507dc class='ITunesFileTrack' id=0x1f03280>, #<OSX::ITunesFileTrack:0x350778 class='ITunesFileTrack' id=0x1f04200>, #<OSX::ITunesFileTrack:0x350714 class='ITunesFileTrack' id=0x1f046b0>, #<OSX::ITunesFileTrack:0x3506b0 class='ITunesFileTrack' id=0x1f04b50>, #<OSX::ITunesFileTrack:0x35064c class='ITunesFileTrack' id=0x1f04160>, #<OSX::ITunesFileTrack:0x3505e8 class='ITunesFileTrack' id=0x1f05590>, #<OSX::ITunesFileTrack:0x350584 class='ITunesFileTrack' id=0x1f05a30>, #<OSX::ITunesFileTrack:0x350520 class='ITunesFileTrack' id=0x1ed1290>, #<OSX::ITunesFileTrack:0x3504bc class='ITunesFileTrack' id=0x1f06d60>, #<OSX::ITunesFileTrack:0x350458 class='ITunesFileTrack' id=0x1f066f0>, #<OSX::ITunesFileTrack:0x348320 class='ITunesFileTrack' id=0x1f754b0>, #<OSX::ITunesFileTrack:0x34828a class='ITunesFileTrack' id=0x1f757a0>, #<OSX::ITunesFileTrack:0x348226 class='ITunesFileTrack' id=0x1f764e0>, #<OSX::ITunesFileTrack:0x3481c2 class='ITunesFileTrack' id=0x1f76e10>, #<OSX::ITunesFileTrack:0x34815e class='ITunesFileTrack' id=0x1f772c0>, #<OSX::ITunesFileTrack:0x3480fa class='ITunesFileTrack' id=0x1f777e0>, #<OSX::ITunesFileTrack:0x348096 class='ITunesFileTrack' id=0x1f76d70>, #<OSX::ITunesFileTrack:0x348032 class='ITunesFileTrack' id=0x1f781f0>, #<OSX::ITunesFileTrack:0x347fce class='ITunesFileTrack' id=0x1f78710>]> trackTitles = unicodeTracks.arrayByApplyingSelector("name") => #<NSCFArray [#<NSCFString "One Of Us">, #<NSCFString "Circumspect">, #<NSCFString "Mekon Headman">, #<NSCFString "Perspex Icon">, #<NSCFString "Four Long Years">, #<NSCFString "Hard Currency">, #<NSCFString "Patient Flees">, #<NSCFString "Are You Ready?">, #<NSCFString "All Fours">, #<NSCFString "99.9">, #<NSCFString "Germ Ship">, #<NSCFString "Mr. Marx’s Table">, #<NSCFString "1st Fast">, #<NSCFString "Read And Burn">, #<NSCFString "The Agfers Of Kodack">, #<NSCFString "Comet">, #<NSCFString "In The Art Of Stopping">, #<NSCFString "Spent">, #<NSCFString "I Don’t Understand">, #<NSCFString "Strange">, #<NSCFString "106 Beats That">, #<NSCFString "Surgeon’s Girl">, #<NSCFString "Pink Flag">, #<NSCFString "In The Art Of Stopping">, #<NSCFString "Mr. Marx's Table">, #<NSCFString "Being Watched">, #<NSCFString "Comet">, #<NSCFString "The Agfers Of Kodack">, #<NSCFString "Nice Streets Above">, #<NSCFString "Spent">, #<NSCFString "Read And Burn">, #<NSCFString "You Can't Leave Now">, #<NSCFString "Half Eaten">, #<NSCFString "99.9">, #<NSCFString "In Every City?">, #<NSCFString "What's Your Desire?">, #<NSCFString "Arriving/Staying/Going?">, #<NSCFString "(A Berlin) Drill">, #<NSCFString "Do You Drive? (Turn Your Coat)">, #<NSCFString "Jumping Mint?">, #<NSCFString "Did You Dugga?">, #<NSCFString "Where Are You Now?">, #<NSCFString "(A Chicago) Drill (Live)">]>
}}}
-- Ticket URL: <http://www.macruby.org/trac/ticket/111> MacRuby <http://macruby.org/>
#111: macruby not working with unicode from ScriptingBridge -------------------------------------+-------------------------------------- Reporter: jordan.breeding@mac.com | Owner: lsansonetti@apple.com Type: defect | Status: closed Priority: blocker | Milestone: Component: MacRuby | Resolution: wontfix Keywords: | -------------------------------------+-------------------------------------- Changes (by lsansonetti@apple.com): * status: new => closed * resolution: => wontfix Comment: After a quick investigation this looks like an expected behavior. String#inspect in 1.9 does show unicode bytes instead of characters, which is why you're getting this output. However, printing the string will show the whole unicode character sequence. {{{ $ macirb
"ooo".transform('latin-hiragana') => "\xE3\x81\x8A\xE3\x81\x8A\xE3\x81\x8A" puts "ooo".transform('latin-hiragana') おおお => nil
}}}
I verified that by selecting some songs in my iTunes playlist and calling #puts on the current track name. {{{ $ macruby -e "framework 'ScriptingBridge'; puts SBApplication.applicationWithBundleIdentifier('com.apple.itunes').currentTrack.name" Protège-moi $ macruby -e "framework 'ScriptingBridge'; puts SBApplication.applicationWithBundleIdentifier('com.apple.itunes').currentTrack.name" そぎい! }}} -- Ticket URL: <http://www.macruby.org/trac/ticket/111#comment:1> MacRuby <http://macruby.org/>
#111: macruby not working with unicode from ScriptingBridge -------------------------------------+-------------------------------------- Reporter: jordan.breeding@mac.com | Owner: lsansonetti@apple.com Type: defect | Status: closed Priority: blocker | Milestone: Component: MacRuby | Resolution: wontfix Keywords: | -------------------------------------+-------------------------------------- Comment(by jordan.breeding@mac.com): I still can't seem to get it to work for some reason, a quick example from my shell: {{{ 7 jordan@thetourist ~ > macruby -e "puts 'Jördan'" J√∂rdan 8 jordan@thetourist ~ > macruby -e "puts 'Jördan'.inspect" "J\xE2\x88\x9A\xE2\x88\x82rdan" 9 jordan@thetourist ~ > ruby -e "puts 'Jördan'" Jördan 10 jordan@thetourist ~ > ruby -e "puts 'Jördan'.inspect" "J\303\266rdan" }}} That was on macruby from the trunk, and ruby on Leopard 10.5.4. The special character was entered by hand directly into the Terminal. -- Ticket URL: <http://www.macruby.org/trac/ticket/111#comment:2> MacRuby <http://macruby.org/>
#111: macruby not working with unicode from ScriptingBridge -------------------------------------+-------------------------------------- Reporter: jordan.breeding@mac.com | Owner: lsansonetti@apple.com Type: defect | Status: closed Priority: blocker | Milestone: Component: MacRuby | Resolution: wontfix Keywords: | -------------------------------------+-------------------------------------- Comment(by lsansonetti@apple.com): Yes, the "-e" problem is well known. Also, entering unicode in IRB is not going to work because of a limitation in readline. On the other side, you can write a .rb file with unicode in it, and it should work. -- Ticket URL: <http://www.macruby.org/trac/ticket/111#comment:3> MacRuby <http://macruby.org/>
participants (1)
-
MacRuby