Cet outil est en début de développement
Des changements importants et des bugs sont à prévoir
Lisez, analysez et intégrez les variables d'environnement et le contenu des fichiers dans votre code Elm.
Les données sont intégrées avec Embedders . Les intégrateurs vivent dans un dossier spécial, elm-embed-scripts
, et il s'agit de n'importe quelle déclaration Elm avec la signature Embed.Task
. Travailler avec des intégrateurs est similaire à travailler avec des décodeurs JSON, vous pouvez par exemple lire un fichier avec Embed.File.read
, et l'analyser avec Embed.andThen
. Si l'analyse réussit, vous pouvez intégrer la valeur avec Embed.succeed
, et si elle échoue, vous pouvez indiquer pourquoi avec Embed.fail
. Si tous les intégrateurs réussissent, les valeurs résultantes seront générées et placées sous forme de code Elm dans src/generated
où elles pourront être consommées par le reste de la base de code.
Lors du développement, vous souhaiterez peut-être utiliser un serveur local au lieu de celui de production. Pour y parvenir, une variable d'environnement peut être intégrée qui contient l'URL du serveur à utiliser.
elm-embed-scripts/Server.elm
:
import Embed
import Embed.Environment
server : Embed . Task String
server =
Embed . Environment . string " server_url "
L'exécution elm-embed run
lorsque la variable d'environnement server_url
est définie sur localhost:8080
vous donnera ceci dans src/Generated/Server.elm
:
server : String
server =
" localhost:8080 "
Vous souhaiterez peut-être créer une page à partir d'un document markdown au lieu du code Elm. L'approche normale consisterait à inclure le document sous forme de chaîne, puis à l'analyser et à le restituer au moment de l'exécution. Cela présente plusieurs inconvénients. L'analyse prend du temps. Il est également ennuyeux et sujet aux erreurs d'intégrer manuellement une démarque dans une chaîne Elm. Enfin, vous devez gérer le cas où l'analyse échoue et donner à l'utilisateur une sorte de page d'erreur. Avec elm-embed
vous pouvez lire un fichier .md
, l'analyser au moment de la construction, et si l'analyse échoue, vous obtenez l'erreur en tant que développeur au moment de la construction plutôt qu'en tant qu'utilisateur au moment de l'exécution.
Cet exemple analyse un document markdown avec dillonkearns/elm-markdown
-- elm-embed-scripts/Markdown.elm
import Embed
import Embed.File
import Markdown.Block exposing ( Block (..) , HeadingLevel (..) , Inline (..) )
import Markdown.Parser
document : Embed . Task ( List Block )
document =
Embed . andThen
( markdown ->
case Markdown . Parser . parse markdown of
Ok blocks ->
Embed . succeed blocks
Err _ ->
Embed . fail " Parse error "
)
( Embed . File . read " markdown.md " )
Remarque : si cela vous intéresse, cela vaut peut-être également la peine de consulter les pages elm. Il peut effectuer une analyse de démarque au moment de la construction et un tas d'autres choses intéressantes, piles incluses. elm-embed
est un outil pour une chose spécifique tandis que elm-pages
est plutôt un accord de type framework.
elm-embed
place certains modules qui lui sont propres dans elm-embed-scripts
pour être utilisés par vos intégrateurs. Vous pouvez voir l'API complète de ces modules ici.
L'exécution du code ci-dessous téléchargera un binaire pré-construit pour Linux 64 bits, le rendra exécutable et le placera dans /usr/local/bin
. Cela fonctionne pour la plupart des distributions Linux.
curl -L -o elm-embed.gz https://github.com/emmabastas/elm-embed/releases/download/0.1.0/elm-embed-0.1.0-linux-x64.gz
gunzip elm-embed.gz
chmod +x elm-embed
sudo mv elm-embed /usr/local/bin/
Maintenant, elm-embed
devrait être appelable à partir de la ligne de commande.
Désinstaller avec sudo rm /usr/local/bin/elm-embed
Il n'existe actuellement aucun binaire prédéfini pour Windows ou Mac, la seule option est de construire à partir des sources, c'est le même processus que lors de la construction du compilateur Elm.
Initialisez avec elm-embed init
.
Exécutez les intégrateurs avec elm-embed run
.
Obtenez de l'aide avec elm-embed --help
.
La meilleure façon de contribuer dès maintenant est de me proposer des cas d'utilisation en laissant un commentaire ici. Soyez aussi détaillé que possible. Que pourrait faire elm-embed
pour vous et comment ? Que faudrait-il changer/ajouter ?
Ces cas d'utilisation m'aideront vraiment à prendre des décisions de conception plus éclairées à l'avenir, mais je ne peux pas promettre que votre cas d'utilisation spécifique sera mis en œuvre. Je veux que elm-embed
soit le meilleur possible dans son champ d'application, ce qui signifie rejeter les choses qui sortent du champ d'application, et également prendre le temps de réfléchir, au lieu de précipiter les fonctionnalités.