Skip to content

Commit 0055dc6

Browse files
committed
introduce Data.Char, add easy ways to promote char to String
1 parent 58de0e0 commit 0055dc6

File tree

3 files changed

+34
-12
lines changed

3 files changed

+34
-12
lines changed

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
# Module Documentation
22

3-
## Module Data.String
3+
## Module Data.Char
44

55
### Types
66

77
newtype Char
88

99

10+
### Values
11+
12+
charString :: Char -> String
13+
14+
15+
## Module Data.String
16+
1017
### Values
1118

1219
charAt :: Number -> String -> String
@@ -21,6 +28,8 @@
2128

2229
fromArray :: [Char] -> String
2330

31+
fromChar :: Char -> String
32+
2433
fromCharCode :: Number -> String
2534

2635
fromCharCode' :: Number -> Char

src/Data/Char/Char.purs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module Data.Char
2+
( Char(),
3+
charString
4+
) where
5+
6+
newtype Char = Char String
7+
8+
charString :: Char -> String
9+
charString (Char s) = s

src/Data/String.purs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
module Data.String
22
(
3-
Char(),
43
charAt,
54
charAt',
65
charCodeAt,
76
charCodeOf,
8-
fromArray,
7+
fromCharArray,
8+
fromChar,
99
fromCharCode,
1010
fromCharCode',
1111
indexOf,
@@ -18,16 +18,17 @@ module Data.String
1818
take,
1919
drop,
2020
split,
21-
toArray,
21+
toCharArray,
2222
toLower,
2323
toUpper,
2424
trim,
2525
joinWith
2626
) where
2727

2828
import Data.Maybe
29+
import Data.Char
2930

30-
newtype Char = Char String
31+
foreign import _unsafeMkChar "function _unsafeMkChar(s){return s;}" :: String -> Char
3132

3233
-- | Deprecated
3334
foreign import charAt
@@ -41,10 +42,13 @@ module Data.String
4142
charAt' n s =
4243
case charAt n s of
4344
"" -> Nothing
44-
c -> Just $ Char c
45+
c -> Just $ _unsafeMkChar c
46+
47+
fromChar :: Char -> String
48+
fromChar = charString
4549

4650
charCodeOf :: Char -> Number
47-
charCodeOf (Char s) = charCodeAt 0 s
51+
charCodeOf c = charCodeAt 0 (charString c)
4852

4953
foreign import charCodeAt
5054
"function charCodeAt(i) {\
@@ -53,8 +57,8 @@ module Data.String
5357
\ };\
5458
\}" :: Number -> String -> Number
5559

56-
foreign import fromArray
57-
"function fromArray(a) {\
60+
foreign import fromCharArray
61+
"function fromCharArray(a) {\
5862
\ return a.join(''); \
5963
\" :: [Char] -> String
6064

@@ -65,7 +69,7 @@ module Data.String
6569
\}" :: Number -> String
6670

6771
fromCharCode' :: Number -> Char
68-
fromCharCode' c = Char $ fromCharCode c
72+
fromCharCode' c = _unsafeMkChar $ fromCharCode c
6973

7074
foreign import indexOf
7175
"function indexOf(x) {\
@@ -141,8 +145,8 @@ module Data.String
141145
\ };\
142146
\}" :: String -> String -> [String]
143147

144-
foreign import toArray
145-
"function toArray(s) {\
148+
foreign import toCharArray
149+
"function toCharArray(s) {\
146150
\ return s.split('');\
147151
\}" :: String -> [Char]
148152

0 commit comments

Comments
 (0)