Skip to content

Commit f98d267

Browse files
authored
Add common PropName, AttrName, ClassName (#30)
1 parent ed00360 commit f98d267

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

src/Web/HTML.purs

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ module Web.HTML
55

66
import Effect (Effect)
77
import Web.HTML.Window (Window)
8+
import Web.HTML.Common (PropName, AttrName, ClassName) as Exports
89
import Web.HTML.History (History) as Exports
910
import Web.HTML.HTMLAnchorElement (HTMLAnchorElement) as Exports
1011
import Web.HTML.HTMLAreaElement (HTMLAreaElement) as Exports

src/Web/HTML/Common.purs

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module Web.HTML.Common where
2+
3+
import Prelude
4+
5+
import Data.Newtype (class Newtype)
6+
7+
-- | A wrapper for property names.
8+
-- |
9+
-- | The phantom type `value` describes the type of value which this property
10+
-- | requires.
11+
newtype PropName :: Type -> Type
12+
newtype PropName value = PropName String
13+
14+
derive instance newtypePropName :: Newtype (PropName value) _
15+
derive newtype instance eqPropName :: Eq (PropName value)
16+
derive newtype instance ordPropName :: Ord (PropName value)
17+
18+
-- | A wrapper for attribute names.
19+
newtype AttrName = AttrName String
20+
21+
derive instance newtypeAttrName :: Newtype AttrName _
22+
derive newtype instance eqAttrName :: Eq AttrName
23+
derive newtype instance ordAttrName :: Ord AttrName
24+
25+
-- | A wrapper for strings which are used as CSS classes.
26+
newtype ClassName = ClassName String
27+
28+
derive instance newtypeClassName :: Newtype ClassName _
29+
derive newtype instance eqClassName :: Eq ClassName
30+
derive newtype instance ordClassName :: Ord ClassName

0 commit comments

Comments
 (0)