Я пытаюсь понять скрипт, представленный на этом сайте :
#!/usr/bin/env ruby
require ENV['TM_SUPPORT_PATH'] + '/lib/escape.rb'
def terminal_script_filepath
%|tell application "Terminal"
activate
do script "jsc -i #{e_as(e_sh(ENV['TM_FILEPATH']))}"
end tell|
end
open("|osascript", "w") { |io| io << terminal_script_filepath }
Самое главное, та часть, где функция terminal_script_filepath
начинается с:
%| …
… |
… и где он «разбирается» в:
{ |io| io << terminal_script_filepath }
Какие концепции Ruby здесь используются?
Я знаю, что open ()
с конвейером помогает мне передавать ввод в STDIN процесса, но как входные данные попадают из terminal_script_filepath
в io
? Я также знаю базовые %
операции со строками , например % w
, но что здесь делает труба?