Converter código de hiperlink HTML em Markdown (MD) em puro AppleScript?

Oct 24 2020

Tenho um arquivo de texto ou algum texto para processar por meio da área de transferência. Ele contém algumas linhas de código HTML e gostaria de convertê-lo em puro Markdown.

Por exemplo, de:

This is a link: <a href="https://duck.com">link</a>

para:

This is a link: [link](https://duck.com)

Existe código AppleScript puro (usando substituição regex) que pode fazer isso?

Como alternativa, fico feliz com o AppleScript chamando qualquer ferramenta CLI para processar o texto do shell scriptse for um texto embutido que não requer a instalação de homebrewuma ferramenta de terceiros.

Respostas

1 user3439894 Oct 23 2020 at 23:33

Aqui está um exemplo :

set htmlString to "This is a link: <a href=\"https://duck.com\">link</a>"

set mdString to do shell script "/usr/bin/sed -E -e 's|<a href=\"|[link](|g' -e 's|\">link</a>|)|g' <<< " & htmlString's quoted form

Resultado:

"This is a link: [link](https://duck.com)"

Isso também pode ser desativado sem o uso do do shell script comando , como neste exemplo :

set htmlString to "This is a link: <a href=\"https://duck.com\">link</a>"

set htmlString to findAndReplaceInText(htmlString, "<a href=\"", "[link](")
set htmlString to findAndReplaceInText(htmlString, "\">link</a>", ")")

on findAndReplaceInText(theText, theSearchString, theReplacementString)
    set AppleScript's text item delimiters to theSearchString
    set theTextItems to every text item of theText
    set AppleScript's text item delimiters to theReplacementString
    set theText to theTextItems as string
    set AppleScript's text item delimiters to ""
    return theText
end findAndReplaceInText

Resultado:

"This is a link: [link](https://duck.com)"

Se This is a link: <a href="https://duck.com">link</a>estiver em um arquivo ou na área de transferência , o escape é feito automaticamente ao atribuí-lo a uma variável . Em seguida, você só precisa escapar de "no sed comando, conforme mostrado no exemplo acima.


Outros exemplos :

Se estiver This is a link: <a href="https://duck.com">link</a>em um arquivo:

set htmlFile to "/path/to/filename/ext"
set htmlString to read htmlFile
set mdString to do shell script "/usr/bin/sed -E -e 's|<a href=\"|[link](|g' -e 's|\">link</a>|)|g' <<< " & htmlString's quoted form

Ou processando o arquivo diretamente:

set htmlFile to "/path/to/filename.ext"
set mdString to do shell script "/usr/bin/sed -E -e 's|<a href=\"|[link](|g' -e 's|\">link</a>|)|g'" & space & htmlFile's quoted form

Se This is a link: <a href="https://duck.com">link</a>estiver na área de transferência :

set htmlString to (the clipboard as text)
set mdString to do shell script "/usr/bin/sed -E -e 's|<a href=\"|[link](|g' -e 's|\">link</a>|)|g' <<< " & htmlString's quoted form

Nota: O uso do findAndReplaceInText() manipulador também pode ser usado no lugar do do shell script comando nesses outros exemplos .

  • Consulte também Manipulação de texto no Guia de scripts de automação do Mac .