Автоматизатор добавления нежелательных разрывов строк

Я использую Automator для создания HTML-страницы, и все работает отлично, но я столкнулся с одной небольшой проблемой. В начале у пользователя запрашивается информация, которая затем задается в переменных. Страница создается путем захвата некоторого кода с помощью Get Specified Text и копирования его в буфер обмена, получения одной из переменных и последующего помещения их обеих в текстовый документ. Затем этот процесс повторяется несколько раз, в результате чего создается HTML-файл. У меня возникают проблемы, потому что Automator создает разрывы строк (возможно, возврат каретки?) между каждым битом указанного текста и каждой переменной. Итак, что я хочу выглядеть так:

<code grabbed using "Get Specified Text" followed by a Variable. And now some more text and another Variable.>

в итоге выглядит так:

<code grabbed using "Get Specified Text" followed by a
Variable
. And now some more text and another 
Variable
.>

Это разбивает мою страницу на несколько частей. Есть ли способ предотвратить эти разрывы строк?


person Steven Heller    schedule 13.03.2019    source источник
comment
Что вы делаете, чтобы собрать переменную и текст буфера обмена?   -  person red_menace    schedule 13.03.2019
comment
Я открываю новый документ TextEdit, используя Get Specified Text для получения определенного фрагмента кода, используя Copy to Clipboard для помещения этого кода в буфер обмена, используя Get Value of Variable для вызова одной из переменных, которые были определены в начале и Set Contents of TextEdit, чтобы поместить их оба в документ. Просто повторяя это для других экземпляров кода и других переменных, добавляя их в конец документа.   -  person Steven Heller    schedule 13.03.2019
comment
Это не сработает — элементы, возвращаемые различными действиями, передаются в виде списка, который при вставке в документ отделяется новой строкой. Попробуйте добавить действие Выполнить сценарий оболочкиPass Input: to stdin и значением сценария cat) непосредственно перед выводом действия в файл (это приведет к объединению элементов).   -  person red_menace    schedule 13.03.2019
comment
Круто, попробую. Спасибо.   -  person Steven Heller    schedule 14.03.2019
comment
Хм, кажется, это не работает. Я использую Get Specified Text, а затем копирую в буфер обмена. Затем я запускаю сценарий оболочки с кошкой и вводом данных на стандартный ввод, затем я вызываю переменную, а затем устанавливаю содержимое, но ничего не изменилось. Я также пытался запустить сценарий оболочки непосредственно перед Set Contents, но это не имело значения. Я уверен, что делаю что-то не так.   -  person Steven Heller    schedule 14.03.2019
comment
Попробуйте изменить Run Shell Script на Pass input: as arguments с echo "$*" — убедитесь, что в тексте нет лишнего возврата.   -  person red_menace    schedule 14.03.2019


Ответы (1)


Элементы, передаваемые от действия к действию, находятся в списке, поэтому кажется, что установка содержимого TextEdit разделяет отдельные элементы новой строкой, которая является обычным разделителем абзаца.

Многие текстовые действия предполагают TextEdit и/или форматированный текст и не используют переменные (или согласуются с другими действиями с обычным текстом), поэтому действие Запустить AppleScript можно использовать перед действием для преобразования или объединить элементы, например (Мохаве):

введите здесь описание изображения

Automator (или TextEdit, если на то пошло) не очень хороший инструмент для редактирования HTML. Вы можете взглянуть на BBEdit (облегченная версия бесплатна), который также имеет отличные Поддержка AppleScript.

РЕДАКТИРОВАТЬ:

Используйте следующее в действии Запустить AppleScript, чтобы объединить текст с использованием указанного разделителя (в этом примере используется пустая строка):

on run {input, parameters}
  set separator to "" -- text to separate the items with
  set tempTID to AppleScript's text item delimiters
  set AppleScript's text item delimiters to separator
  set output to input as text
  set AppleScript's text item delimiters to tempTID
  return output
end run
person red_menace    schedule 14.03.2019
comment
Это почти там. Это просто вставка пробела между объединенными абзацами. - person Steven Heller; 14.03.2019
comment
И я, очевидно, не хочу, чтобы он удалял ВСЕ пробелы, только пробелы между объединенными строками. - person Steven Heller; 14.03.2019
comment
Вы просто не получите такой контроль, используя обычные действия Automator — они не предназначены для этого. Другими вариантами могут быть предоставление большей части функций в рамках действия Запустить AppleScript или Запустить сценарий оболочки (используя Automator для получения информации для сценария) или использовать сценарий отдельно. . - person red_menace; 14.03.2019
comment
Я отредактировал свой ответ, чтобы использовать действие Запустить AppleScript для объединения текстовых элементов. - person red_menace; 14.03.2019
comment
Вот только об этом. Он идеально объединяет строку и переменную. Единственная загвоздка в том, что когда я затем перехожу к следующей строке и переменной, используя тот же метод, она оказывается на следующей строке, а не объединяется с предыдущими. Может быть, я могу попробовать повозиться с вырезанием только что созданной строки в буфер обмена и объединением ее со следующими или чем-то еще. Похоже на хак, но может сработать. Ты удивительный! - person Steven Heller; 14.03.2019
comment
Я думаю, что это артефакт использования действия TextEdit (если вы помните, оно вставляет туда новые строки). AppleScript также может записывать в текстовые файлы, поэтому он все больше и больше звучит так, как если бы ваш рабочий процесс стал намного сложнее, если бы ваш рабочий процесс стал намного более сложным. - person red_menace; 14.03.2019
comment
Думаю, я понял это. Я создаю все, как было раньше, с каждым элементом в отдельной строке, затем беру все это, используя Get Contents, а затем запускаю ваши команды и вставляю его обратно в документ, используя Replace вместо append, и он правильно объединяется. - person Steven Heller; 14.03.2019