Convertir le code d'hyperlien HTML en Markdown (MD) en pur AppleScript?

Oct 24 2020

J'ai un fichier texte ou du texte à traiter via le presse-papiers. Il contient quelques lignes de code HTML et j'aimerais le convertir en pur Markdown.

Par exemple de:

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

à:

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

Existe-t-il du code AppleScript pur (utilisant la substitution regex) qui peut faire cela?

Alternativement, je suis heureux que AppleScript appelle n'importe quel outil CLI pour traiter le texte via do shell scripts'il s'agit d'un texte intégré qui ne nécessite pas l' homebrewinstallation d'un outil tiers.

Réponses

1 user3439894 Oct 23 2020 at 23:33

Voici un exemple :

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

Résultat:

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

Cela peut également être en panne sans l'utilisation de la do shell script commande , comme dans cet exemple :

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

Résultat:

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

S'il se This is a link: <a href="https://duck.com">link</a>trouve dans un fichier ou dans le presse - papiers , l' échappement se fait automatiquement lors de son affectation à une variable . Il vous suffit ensuite d'échapper "à la sed commande comme indiqué dans l' exemple ci-dessus.


Autres exemples :

Si This is a link: <a href="https://duck.com">link</a>dans un fichier:

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, en traitant directement le fichier :

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

Si se This is a link: <a href="https://duck.com">link</a>trouve dans le presse - papiers :

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

Remarque: l'utilisation du findAndReplaceInText() gestionnaire peut également être utilisée à la place de la do shell script commande dans ces autres exemples .

  • Voir également, Manipuler du texte dans le Guide de scripting Mac Automation .