копипаста

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].

 


  1. там же написано, как использовать PopClip с помощью клавиатуры.  ↩

  2. BOR, милый BOR, знает обо мне все.  ↩

  3. лучше, впрочем, посмотреть сюда.  ↩

  

One Response to “копипаста”

  1. […] активно изпользовать PopClip, то в одним момент с удивлением обнаруживаешь, что […]

Leave a Reply to .log : банки с вареньем