2009-12-05 4 views
1

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

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

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

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

ответ

3

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

  3. Адрес электронной почты формата Rich Text Format - AFAIK, это единственный способ составить ссылку URL с Mail.app.К сожалению, не существует простого способа прямого создания гиперссылки RTF с помощью команд AppleScript. Основываясь на предложении here, это способ сделать это, создав модифицируемый шаблон 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 
      
    • Append 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.

+0

Я дам вам баллы за усилия. Но это не совсем то, что мне нужно, потому что это просто просто «http: // материал». Вопрос, который я пытаюсь решить, заключается в том, как Mac понимает элемент html и вставляет соответствующий элемент в качестве действительной ссылки. Что должно быть показано после перевода просто «777», но как элемент ссылки html. – rh0dium

+0

Ничего себе !! Ты сделал это. Это действительно мощный Спасибо за то, что нашли время, чтобы решить эту проблему! – rh0dium

1

Не уверен, что именно функция, которую вы ищете, но это займет несколько из буфера обмена и обработать его в ссылку и поставить ссылку в буфер обмена в качестве стандартного HREF URL, который будет работать в простом или богатый текст, например: <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 
+0

Вы уверены, что на самом деле работает в формате Rich Text Format от Apple? Это работает для электронной почты с поддержкой HTML, как я отметил в своем ответе; стандартный RTF напрямую не использует HTML-теги, AFAIK. –

+0

Моя точка зрения заключается не в том, что она может работать или не работать в RTF или HTML-письме; Я сосредотачиваюсь на его первоначальном вопросе: «То, что я ищу, - это простой тип« 777 », выбрать его и запустить на нем аппликатор и заменить его ссылкой, подобной приведенной выше». – markratledge