@@ -6,11 +6,11 @@ module Halogen.VDom.StringRenderer
66import Prelude
77
88import Data.Array as A
9- import Data.Maybe (maybe )
9+ import Data.Maybe (Maybe , maybe )
1010import Data.String as S
1111import Data.Tuple (snd )
1212
13- import Halogen.VDom (VDom (..), ElemSpec (..), ElemName (..), Namespace (..), runGraft )
13+ import Halogen.VDom (VDom (..), ElemName (..), Namespace (..), runGraft )
1414import Halogen.VDom.StringRenderer.Util (escape )
1515
1616-- | Type used to determine whether an element can be rendered as self-closing
@@ -25,29 +25,29 @@ derive instance ordTagType ∷ Ord TagType
2525-- | Renders a `VDom` tree to a string using the specified tag type scheme,
2626-- | attribute renderer, and widget renderer.
2727render
28- ∷ ∀ a w
28+ ∷ ∀ attrs widget
2929 . (ElemName → TagType )
30- → (a → String )
31- → (w → String )
32- → VDom a w
30+ → (attrs → String )
31+ → (widget → String )
32+ → VDom attrs widget
3333 → String
3434render getTagType renderAttrs renderWidget = go
3535 where
36- go ∷ VDom a w → String
36+ go ∷ VDom attrs widget → String
3737 go = case _ of
3838 Text s → escape s
39- Elem elem children → renderElement elem children
40- Keyed elem kchildren → renderElement elem (map snd kchildren)
41- Widget w → renderWidget w
39+ Elem namespace elementName attrs children → renderElement namespace elementName attrs children
40+ Keyed namespace elementName attrs kchildren → renderElement namespace elementName attrs (map snd kchildren)
41+ Widget widget → renderWidget widget
4242 Grafted g → go (runGraft g)
4343
44- renderElement ∷ ElemSpec a → Array (VDom a w ) → String
45- renderElement ( ElemSpec mns en @(ElemName name) attrs) children =
44+ renderElement ∷ ( Maybe Namespace ) -> ElemName -> attrs → Array (VDom attrs widget ) → String
45+ renderElement maybeNamespace elemName @(ElemName name) attrs children =
4646 let
4747 as = renderAttrs attrs
48- as' = maybe as (\(Namespace ns) -> " xmlns=\" " <> escape ns <> " \" " <> if S .null as then " " else " " <> as) mns
48+ as' = maybe as (\(Namespace ns) -> " xmlns=\" " <> escape ns <> " \" " <> if S .null as then " " else " " <> as) maybeNamespace
4949 in
5050 " <" <> name <> (if S .null as then " " else " " ) <> as <>
5151 if A .null children
52- then if getTagType en == SelfClosingTag then " />" else " ></" <> name <> " >"
52+ then if getTagType elemName == SelfClosingTag then " />" else " ></" <> name <> " >"
5353 else " >" <> S .joinWith " " (map go children) <> " </" <> name <> " >"
0 commit comments