AppleScript, чтобы взять текст и превратить его в вставляемый HTML - PullRequest
1 голос
/ 05 декабря 2009

Мы работаем с bugzilla. Всякий раз, когда вам нужно запросить билет, вам просто нужно знать идентификатор ошибки (целое число), и вы просто добавляете его к нему.

http://<bugzilla_server>/bugzilla/show_bug.cgi?id=<bug_id>

Предположим, у меня есть ссылка на ошибку, которая выглядит следующим образом 777 . Если я выберу и скопирую это, оно будет сохранено на монтажном столе, поэтому, когда я вставлю это в письмо, оно будет правильно сохранять ссылку и ее атрибуты.

То, что я ищу, - это просто наберите '777', выберите его, запустите на нем яблочный скрипт и замените его ссылкой, подобной приведенной выше. Кто-нибудь может мне помочь ??

Ответы [ 2 ]

3 голосов
/ 05 декабря 2009

Следующий AppleScript возьмет содержимое буфера обмена и заменит его префиксом URL:

set the clipboard to "http://bugzilla_server/bugzilla/show_bug.cgi?id=" & (the clipboard)

Вы можете скомпилировать это в AppleScript scpt и сделать его доступным в папке Scripts или скомпилировать его в запускаемую app:

osacompile -e 'set the clipboard to "http://bugzilla_server/bugzilla/show_bug.cgi?id=" & (the clipboard)' -o replacebug.scpt  # or -o replacebug.app

Если ваш основной вариант использования для этого - при составлении почты в Mail.app, это может быть не самый удобный подход. Если вы используете Snow Leopard (10.6), более простым решением будет воспользоваться новой функцией Text Substitution. Откройте панель настроек System Preferences -> Language & Text, выберите вкладку Text и нажмите +, чтобы добавить новую замену, например:

Replace   With

  (b)     http://bugzilla_server/bugzilla/show_bug.cgi?id=

Затем, в Mail.app, запустите New Message и, удерживая курсор в текстовом теле, сделайте управляющий щелчок мыши, чтобы вызвать контекстное меню. Из него выберите Substitutions -> Text Replacement. С этого момента, когда вы вводите текст сообщения электронной почты при вводе:

(b)777

(b) автоматически изменится на сохраненный вами текст URL:

http://bugzilla_server/bugzilla/show_bug.cgi?id=777

Это также будет работать в других текстовых приложениях Cocoa, таких как Safari.

EDIT:

Когда речь идет о создании URL-ссылок в электронной почте, существует как минимум три разных формата электронной почты, каждый из которых имеет свое решение. Поскольку вы не говорите, какой тип вы используете, я расскажу обо всех трех:

  1. Простой текстовый формат. Невозможно «спрятать» URL-адрес в составленном электронном письме, хотя некоторые читатели электронной почты могут предоставить кликабельную ссылку для простого текстового URL-адреса.

  2. Электронная почта в формате HTML - Apple Mail.app не поддерживает создание электронной почты в этом формате, хотя она будет отображаться. Используя какой-либо другой почтовый клиент или вашу собственную программу, достаточно просто создать ссылку с помощью стандартного HTML-тега привязки <a href=...>.

  3. Электронная почта в формате Rich Text Format - AFAIK, это единственный способ создать URL-ссылку с Mail.app. К сожалению, нет простого способа создать гиперссылку RTF с помощью команд AppleScript. Исходя из предложения здесь , это способ сделать это путем создания изменяемого шаблона RTF через буфер обмена.

    • В TextEdit.app создайте новое окно документа.
    • Вставьте текст, который вы хотите отобразить в электронном письме, т.е. 777.
    • Выберите текст (⌘A), затем добавьте ссылку (⌘K). Введите полный URL-адрес также с помощью 777 в поле «Ссылка назначения»; нажмите ОК.
    • Измените текстовый формат по желанию с помощью команд меню Формат.
    • Сохранить файл (⇧⌘S) как temp.rtf с File Format -> Rich Text Format.
    • Закройте окно документа.
    • Откройте окно документа (⌘O), выбрав файл temp.rtf и выбрав Ignore rich text commands.
    • Вставьте следующее перед первой строкой в ​​файле:

      #!/bin/sh
      sed -e "s/777/$(pbpaste -Prefer txt)/g" <<EOF | pbcopy -Prefer rtf
      
    • Добавить EOF отдельной строкой в ​​конец файла.

      Теперь оно должно выглядеть примерно так:

      #!/bin/sh
      sed -e "s/777/$(pbpaste -Prefer txt)/g" <<EOF | pbcopy -Prefer rtf
      {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf250
      {\fonttbl\f0\fswiss\fcharset0 Helvetica;}
      {\colortbl;\red255\green255\blue255;}
      \margl1440\margr1440\vieww9000\viewh8400\viewkind0
      \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
      {\field{\*\fldinst{HYPERLINK "http://bugzilla_server/bugzilla/show_bug.cgi?id=777"}}{\fldrslt 
      \f0\fs24 \cf0 777}}}
      EOF
      
    • Сохраните это как Plain Text файл и выполните непосредственно как сценарий оболочки или вызовите его с помощью команды AppleScript do shell script.

    Такое решение будет работать с большинством других приложений, поддерживающих формат Rich Text.

1 голос
/ 05 декабря 2009

Не уверен, что именно функция, которую вы ищете, но она возьмет число из вашего буфера обмена и обработает его в ссылку и поместит ссылку в буфер обмена в качестве стандартного URL-адреса href, который будет работать в виде обычного или форматированного текста, лайк: <a href="http://<bugzilla_server>/bugzilla/show_bug.cgi?id=777" title="777">Bug number 777 link</a>

Измените <bugzilla_server> на ваш рабочий URL.

set bug_number to the clipboard

set the_text to "<a href=\"http://<bugzilla_server>/bugzilla/show_bug.cgi?id=" & bug_number & "\" title=\"" & bug_number & "\">Bug number " & bug_number & " link</a>"

set the clipboard to the_text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...