@@ -6,11 +6,11 @@ module Halogen.VDom.StringRenderer
6
6
import Prelude
7
7
8
8
import Data.Array as A
9
- import Data.Maybe (maybe )
9
+ import Data.Maybe (Maybe , maybe )
10
10
import Data.String as S
11
11
import Data.Tuple (snd )
12
12
13
- import Halogen.VDom (VDom (..), ElemSpec (..), ElemName (..), Namespace (..), runGraft )
13
+ import Halogen.VDom (VDom (..), ElemName (..), Namespace (..), runGraft )
14
14
import Halogen.VDom.StringRenderer.Util (escape )
15
15
16
16
-- | Type used to determine whether an element can be rendered as self-closing
@@ -25,29 +25,29 @@ derive instance ordTagType ∷ Ord TagType
25
25
-- | Renders a `VDom` tree to a string using the specified tag type scheme,
26
26
-- | attribute renderer, and widget renderer.
27
27
render
28
- ∷ ∀ a w
28
+ ∷ ∀ attrs widget
29
29
. (ElemName → TagType )
30
- → (a → String )
31
- → (w → String )
32
- → VDom a w
30
+ → (attrs → String )
31
+ → (widget → String )
32
+ → VDom attrs widget
33
33
→ String
34
34
render getTagType renderAttrs renderWidget = go
35
35
where
36
- go ∷ VDom a w → String
36
+ go ∷ VDom attrs widget → String
37
37
go = case _ of
38
38
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
42
42
Grafted g → go (runGraft g)
43
43
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 =
46
46
let
47
47
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
49
49
in
50
50
" <" <> name <> (if S .null as then " " else " " ) <> as <>
51
51
if A .null children
52
- then if getTagType en == SelfClosingTag then " />" else " ></" <> name <> " >"
52
+ then if getTagType elemName == SelfClosingTag then " />" else " ></" <> name <> " >"
53
53
else " >" <> S .joinWith " " (map go children) <> " </" <> name <> " >"
0 commit comments