копипаста
12:18 | 10-11-2013 | HOWTO, Software | 1 Comment
интересная утилита PopClip кроме всего прочего[1] умеет так же использовать всевозможные сторонние расширения — а это и трансформации выделенного текста, и его поиск, и обмен другими приложениями. кроме того, доступна исчерпывающая документация для разработчиков.
вот только из представленных на сайте примеров некоторые все же до конца не отлажены. так, например, расширения для смены регистра (написанные на PHP, sic!) не работают с Юникодом — для того, чтобы это исправить, надо сменить используемые функции на их аналоги для работы с многобайтными строками, mb_strtolower
и mb_strtoupper
, а так же написать коротенькую mb_ucwords
:
function mb_ucwords($str) { return mb_convert_case($str, MB_CASE_TITLE, 'UTF-8'); }
ну, и раз уж речь о PHP, то вот, скажем, каркас для восстановления (punto-style) текста, набранного в перепутанной раскладке[2]
// Transliteration service // By dsjkvf (2013) dsjkvf@gmail.com function transliterate_en_ru( $str ) { $unwanted_array = array('Q'=>'Я', 'q'=>'я', 'W'=>'Ж', 'w'=>'ж' <...> // Put your ENG-RUS transliteration array here ); $str = strtr( $str, $unwanted_array ); return $str; } function transliterate_ru_en( $str ) { $unwanted_array = array('Я'=>'Q', 'я'=>'q', 'Ж'=>'W', 'ж'=>'w' <...> // Put your RUS-ENG transliteration array here ); $str = strtr( $str, $unwanted_array ); $str = ereg_replace( 'Ĭ', 'J', $str ); // mysterious bug converting Й -> J and $str = ereg_replace( 'ĭ', 'j', $str ); // й -> j return $str; } $input = getenv('POPCLIP_TEXT'); // In order to use that snippet as an OS X service, comment the above line // and uncomment the ones below // for ($i = 1; $i <= $argc; $i++) { // $input = $input . $argv[$i] . " "; // } // $input = rtrim($input," "); $lang = preg_match('/^[\w\d\s.,-]*$/',$input); switch ($lang) { case 0: echo transliterate_ru_en($input);; break; case 1: echo transliterate_en_ru($input);; break; }
ну, или если PopClip все же не мил, то из означенного можно сделать и обычный сервис, используя библиотеку Run AppleScript
с включенной опцией Output replaces selected text
:
on run {input, parameters} do shell script "php -q " & "/POSIX/path/to/your/PHP/script" & " " & input end run
исправленные расширения можно взять здесь. плюс, надеюсь, в будущем появятся и другие — а пока добавил еще несколько для работы с Markdown[3].
[…] активно изпользовать PopClip, то в одним момент с удивлением обнаруживаешь, что […]