Как написать текст в определенном месте в файле с AppleScript? - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу создать AppleScript, который:

  • вырезает некоторый текст из латексного файла (я использую TexShop)

  • запрашивает у пользователя новое имя файла

  • заменяет вырезанный текст текстом /subfile{certain_path}

  • создает новый файл вопределенный_путь
  • заполняет новый файл определенным кодом
  • , а затем вставляет вырезанный текст в определенное место в файле.

Я считаю, что могу получитьсодержимое из буфера обмена, позвонив по номеру set theData to (the clipboard as text).Я знаю, как запросить у пользователя имя файла с display dialog и text returned of и т. Д. Теперь я знаю, как создать новый файл в том же каталоге, получив путь от document 1 и затем вызвав container of наЭто.И я знаю, как записать в этот файл.

У меня есть следующие проблемы:

  • В случае, если я хочу, чтобы AppleScript запустил обрезкувместо пользователя я должен использовать команду сценариев GUI tell application "System Events" to keystroke "x" using {command down}, так как в словаре TexShop нет команды «вырезать текст»?

  • Как я могу сказать AppleScriptнапишите subfile{etc.} именно в том месте, где я вырезал текст?Как я могу сказать AppleScript вставить текст именно в ту часть нового файла, которую я хочу?

Основная идея:

  1. Предполагается, что текст уже обрезан (?):

    tell application "Finder"/"TexShop" to set thisWord to get clipboard as text
    
  2. Или как-то "вызвать" CMD-X с помощью AppleScript:

    tell application "System Events" to keystroke "x" using {command down}
    
  3. Получите имя файла:

    set response to display dialog "Filename: " default answer ""
    set fileName to get text of response & ".tex"`
    
  4. Получите путь контейнера

    tell application "TexShop" to set thePath to get path of document 1
    tell application "Finder" to set parentPath to get container of thePath
    
  5. Напишите "\subfile{" & parentPath & fileName & "}" точно в том месте, гдетекст был вырезан из?Как ???

  6. Создать новый файл:

    tell application "Finder" to set newFile to ¬
        make new file at parentPath with properties {name:fileName}
    
  7. Записать в файл:

    set preamble to "
    \documentclass{article}
    
    \begin{document}
    \begin{English}"
    
    & thisWord &
    
    "\end{English}
    
    \begin{Swedish}
    
    \end{Swedish}
    
    \end{document}"
    
    set openFile to open newFile with write permission
    write preamble to openFile
    
  8. Объединение строк, как указано выше, было бы для меня хорошо, но было бы также интересно узнать, как написать слово в это конкретное место после того, как я уже написал выше.

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

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