bellroy / elm-actor-framework-template / Framework.Template

A Template is a list of Nodes

You can directly use this module to create a Template or you can use one of the packages that build on top of this package to parse a template based on another, friendlier, format.


type Node appActors
    = Text String
    | Element ElementNodeName Attributes (Children appActors)
    | Actor (ActorElement appActors)

A Node represents Text, any Element or an Actor.

Text "some test"

Element "strong" [] [ Text "Hello World" ]

Actor <| ActorElement Counter "comp-counter" "counter-1" [] []


type ActorElement appActors
    = ActorElement appActors ElementNodeName ActorElementId Attributes (Children appActors)

An ActorElement


type alias ElementNodeName =
String

The NodeName of an Element or ActorElement


type alias ActorElementId =
String

The Actor Element Id, this should be unique on your template.


type alias Attributes =
List Attribute

A List of Attribute


type alias Attribute =
( String, String )

A (key, value) representation of a Node attribute

( "class", "Foo" )

( "href", "https://www.example.com" )


type alias Children appActors =
List (Node appActors)

A List of Nodes

getActorElementDescendants : List (Node appActors) -> List (ActorElement appActors)

Returns the descending ActorElement for a given List of Nodes

getActorsToSpawn : List (Node appActors) -> List { actor : appActors, reference : String, actorElement : ActorElement appActors }

Convenience function that returns a list containing records supplying the information usually required to spawn the target Actor

toString : List (Node appActors) -> String

Turn a Template into a single String

This can be handy for search results or meta descriptions

[ Element "strong" [] [ Text "a" ]
, Text "b"]
--> "a b"