Código-fonte para string na variável


1

No AppleScript Editor, posso ver que o código-fonte tem conteúdo de script, mas a linha 2 falha por algum motivo.

set source_code to load script (POSIX file "/path/to/script.scpt")
word 2 of source_code

Isso não funciona. Eu tento ler arquivos AppleScript para variável.

Não tento executar esse código carregado, mas preciso obtê-lo como string.


Parece falhar porque source_code é «script» não string. Como isso pode ser corrigido? obrigado

set source_code to load script (POSIX file "/path/to/script.scpt")
word 2 of (source_code as string) -->error "Can’t make «script» into type string." number -1700 from «script» to string
word 2 of source_code -->error "Can’t get word 2." number -1728 from word 2

Então a primeira linha funciona ( set source_code ...), mas a segunda não? O que você espera que a segunda linha faça exatamente?
Nohillside

Espero ver a segunda palavra no código fonte. Graças
PS22

Respostas:


2

O load scriptcomando carrega um script como um objeto a ser executado, em vez de como texto para ler ou manipular.

Se você deseja acessar o texto real do seu script, pode usar o osadecompile:

do shell script "osadecompile ~/Library/Scripts/test.scpt"
word 2 of result

Os scripts compilados salvos com o AppleScript Editor geralmente possuem terminações de linha LF em cadeias, mas terminações de linha CR em outros locais. osadecompile converte todas as terminações de linha em LF. do shell scriptconverte terminações de linha em CR, a menos que você adicione um without altering line endingsespecificador.


Legal, isso funciona! Obrigado Lauri Ranta. Existe alguma maneira de obter texto que esteja em Descrição na parte inferior da janela do AppleScript Editor?

1
Você pode fazer outra pergunta sobre isso. A descrição é armazenada na bifurcação de recursos ( cat Untitled.scpt/..namedfork/rsrc/ xattr -p com.apple.ResourceFork Untitled.scpt | xxd -r -p) e, na verdade, é rich text, mas não sei como convertê-la em rtf ou texto sem formatação.
Lri
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.