AppleScript для створення інтервалу інтервалу типу "SPACING"?


2

Щоб форматувати текстові документи більш читабельним чином, було б непогано відформатувати вибрані тексти за допомогою яблучного сценарію, виконаного за допомогою служб контекстного меню, таким чином:

  1. виберіть "текст" курсором
  2. виберіть контекстне меню / послуги Пробіл (створити)
  3. вибраний текст буде форматований у "TEX T"

Хтось має ноу-хау для програмування такого сценарію?


Ви також можете просто збільшити міжрядкові букви.
праворуч

Відповіді:


3

AppleScript для розширення тексту

Наступний фрагмент AppleScript додає пробіл між кожним символом рядка. Скопіюйте та вставте цей код у Програми> Утиліти> Редактор сценаріїв, щоб випробувати його:

set myText to "hello world"
set myResult to ""

repeat with c in every character in myText
    set myResult to myResult & " " & c
end repeat

display dialog myResult

Сервіс автоматизації

Використовуючи цей скрипт, ви можете використовувати Програми> Автоматизатор для створення послуги контекстного меню.

Робочий процес автоматизації для розширення вибраного тексту

Нова послуга розширення тексту в TextEdit

  1. Запустіть Automator.app
  2. Створіть новий робочий процес, виберіть Сервіс
  3. Додати дію запустити AppleScript
  4. Скопіюйте та вставте в сценарій:

    on run {input, parameters}
    
        set myText to input as string
        set myResult to ""
    
        repeat with c in every character in myText
            set myResult to ((myResult & " " & c) as string)
        end repeat
    
        -- Convert to upper case using `tr`
        set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"
    
        return myResult
    end run
  5. Виберіть " Вихід" замінює вибраний текст

  6. Збережіть і протестуйте нову послугу

Ви це тестували? Я запитую, оскільки це не працює для мене в TextEdit під ОС X 10.8.5 та TextEdit під OSX 10.10.4. Або з або TextWrangler в ОС X 10.8.5 сервіс взагалі не відображається. Для мене це не велика справа, оскільки я не маю причин дублювати пробіл тексту, проте те, що ви подали, не працює в моїх системах.
користувач3439894

Дуже дякую за вашу швидку і пристойну відповідь! Я спробував це, але проблема полягає в тому, що вибраний текст не береться. Якщо я встановив myText на "asdkfsafg", він працює ідеально. Якщо я використовую його для встановлення myText для введення, я отримав повідомлення про помилки або вибраний текст видаляється. Вхідним параметром в Automator є Текст і кожна програма. Що відбувається не так?
user139574

@ user3439894, здається, у нас однакова поведінка
user139574

@ user139574 Я протестував AppleScript на OS X 10.10.4, але не сервіс. Яке повідомлення про помилку ви бачите? Ви намагалися створити інші сервіси за допомогою Automator? Що станеться, якщо служба поверне статичну рядок, наприклад return "test"замість return myResult?
Грем Мілн

1
@Graham Miln, Зараз це працює для мене у трьох різних програмах, які я б використовував, якщо б у мене була потреба. Хоча в цьому конкретному сценарії у мене немає потреби, я все-таки забрав щось корисне, тому +1 тут.
користувач3439894

1

Щоб обраний текст був перетворений у верхній регістр, а також пробіл між кожним символом, додайте наступний рядок до сценарію, опублікованого Грем Мілном.

set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"

Отже, в Automator це було б:

on run {input, parameters}

    set myText to input as string
    set myResult to ""

    repeat with c in every character in myText
        set myResult to ((myResult & " " & c) as string)
    end repeat

    set myResult to do shell script "echo " & quoted form of (myResult) & " | tr [:lower:] [:upper:]"

    return myResult

end run

Дякую за цю пропозицію. Я включив ваш trрядок у сценарій.
Грем Мілн

@Graham Miln, немає проблем. Я б відредагував вашу відповідь безпосередньо, тому що це можна зробити декількома способами, і я вирішив опублікувати її як окрему відповідь, оскільки ви лише звернулися до верхньої частини ОП у своєму запиті як посилання в коментарі до вашої відповіді.
користувач3439894
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.