Applescript e JavaScript: Função “Copy Link Text” para o Safari, sem precisar de extensões
Usando Applescript e JavaScript combinados, consigo extrair o texto de um link no navegador Safari e gerar a tag HTML para inserir o mesmo link em outra página, sem precisar recorrer a extensões do navegador. Afinal, sendo em Applescript, se ele quebrar, eu sei consertar.
Na semana passada eu compartilhei com vocês (em “Como ativar a opção "Copy link tag" no Safari e gerar tags HTML na hora de copiar links”) um recurso fundamental do meu fluxo de trabalho: a possibilidade de copiar um link de uma página no navegador de uma forma que já gera o código HTML para incluir o mesmo link (incluindo o texto linkado) em outra página que eu esteja escrevendo.
Em outras palavras, se a descrição não ficou clara, aqui vai um exemplo: estou falando de uma forma de copiar este link do BR-Mac e, ao colá-lo no editor, gerar o código HTML correspondente, assim: <a href="http://br-mac.org">este link do BR-Mac</a>
.
No artigo eu expliquei a forma como comecei a usar essa função com extensões em outros navegadores e como, ao migrar para o Safari recentemente, recorri ao SafariStand (que não é bem uma extensão na forma como hoje usamos essa expressão) para ter o mesmo recurso.
Segurança de continuidade
Coincidentemente, no final da semana o Rafael Fischmann publicou um relato sobre sua recente migração do Chrome para o Safari (que não foi pelas mesmas razões pelas quais eu fiz a mesma migração recentemente), e eu indiquei a ele o mesmo SafariStand para resolver um outro gap de funcionalidade que ele mencionou no seu artigo, e rapidamente tanto ele quanto o Reinaldo Versuri informaram que não funciona (ainda) no Mavericks, cuja versão GM eles já estão usando antecipadamente.
Basta uma olhadinha rápida no github do SafariStand para ver que ele tem sido desenvolvido ativamente nas últimas semanas, o que gera a expectativa de que uma versão suportando o Safari 7 e o Mavericks logo surja, Entretanto, como se trata de um recurso "por fora" do aplicativo, e que depende do SIMBL (que tem a mesma característica), o meu grau de certeza da atualização rápida flutua para menos.
Foi por isso que resolvi dedicar 15 minutinhos à tarefa de desenvolver a mesma funcionalidade de Copy Link Tag que o SafariStand oferece, mas usando Applescript sem depender de nenhuma extensão (interna ou externa) do Safari, assim tendo uma chance maior de continuidade entre versões do aplicativo e do sistema operacional.
Applescript com uma pitada de JavaScript
O que segue é uma descrição técnica que pode ser do interesse de outros usuários de Applescript, mesmo que a funcionalidade que eu implementei não seja útil para eles.
Não encontrei no dicionário de Applescript do Safari nenhuma função ou atributo que retorne o texto e a URL do link atualmente selecionado no texto, e assim resolvi basear minha implementação nos seguintes 2 passos:
- o usuário copia a URL de um link normalmente, pela opção "Copiar Link" do menu de contexto do Safari.
- ao colar o link no BBEdit, o usuário não pressiona ⌘+V como faria normalmente, mas sim Control+V, que eu defini como atalho para o meu script.
Ao ser acionado, o script se encarrega de consultar o Safari para descobrir qual o texto do link cuja URL está na clipboard, e aí insere a tag HTML correspondente à URL e ao texto do link, na posição do cursor do BBEdit1:
O código do script acima está disponível para download, abra no seu editor de texto, copie e cole no Editor Applescript.
Como funciona
Existiriam várias maneiras de, tendo em mãos uma URL obtida da clipboard, encontrar qual o texto do link que a referencia na página ativa do Safari. Eu optei por Applescript porque é a que eu melhor sei usar e, neste caso, aproveitei para experimentar com o comando do javascript
, que permite mesclar no código um trecho de JavaScript que será executado no ambiente do navegador.
No processo, ainda dei um jeito de mesclar uma variável do Applescript no trecho em JavaScript (que, em si, também é uma variável, ao menos do ponto de vista do Applescript)2
Depois é só gravar na pasta de scripts do BBEdit e usar a "scripts palette" (do menu Window) para associar o atalho Control+V ao script, e começar a usar.
Simples, funcional, e atende a uma demanda minha, que talvez ninguém mais no mundo tenha 😃 Mas ser blogueiro tem várias vantagens, incluindo a de decidir compartilhar trechos de código obscuros sem saber se alguém algum dia terá interesse. Se você tiver, me conte!
E fica a sugestão: aprenda Applescript!
- Suporte a outros editores de texto ou navegadores fica como um exercício para o leitor. Suporte a framesets e iframes também. ↩
- Talvez você note que o loop no trecho em JavaScript é ineficiente, mas tenho algo a dizer em minha defesa: no momento ele retorna a primeira referência à URL que estiver na clipboard, mas na prática ainda não sei se – caso a mesma URL apareça mais de uma vez linkada na página – eu vou querer a primeira, a última ou uma concatenação de todas. Quando eu decidir, farei um loop mais eficiente. ↩
Comentar
Comentários arquivados