Skip to content

Commit 3fc0f06

Browse files
committed
tighter organization & feedback from @garyb
1 parent 0055dc6 commit 3fc0f06

File tree

3 files changed

+30
-43
lines changed

3 files changed

+30
-43
lines changed

README.md

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,24 @@
1111

1212
charString :: Char -> String
1313

14+
fromCharCode :: Number -> Char
15+
16+
toCharCode :: Char -> Number
17+
1418

1519
## Module Data.String
1620

1721
### Values
1822

19-
charAt :: Number -> String -> String
20-
21-
charAt' :: Number -> String -> Maybe Char
23+
charAt :: Number -> String -> Maybe Char
2224

2325
charCodeAt :: Number -> String -> Number
2426

25-
charCodeOf :: Char -> Number
26-
2727
drop :: Number -> String -> String
2828

29-
fromArray :: [Char] -> String
30-
3129
fromChar :: Char -> String
3230

33-
fromCharCode :: Number -> String
34-
35-
fromCharCode' :: Number -> Char
31+
fromCharArray :: [Char] -> String
3632

3733
indexOf :: String -> String -> Number
3834

@@ -54,7 +50,7 @@
5450

5551
take :: Number -> String -> String
5652

57-
toArray :: String -> [Char]
53+
toCharArray :: String -> [Char]
5854

5955
toLower :: String -> String
6056

src/Data/Char/Char.purs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
11
module Data.Char
22
( Char(),
3-
charString
3+
charString,
4+
fromCharCode,
5+
toCharCode
46
) where
57

68
newtype Char = Char String
79

810
charString :: Char -> String
9-
charString (Char s) = s
11+
charString (Char s) = s
12+
13+
foreign import toCharCode
14+
"function toCharCode(c){\
15+
\ return c.charCodeAt(0);\
16+
\}" :: Char -> Number
17+
18+
foreign import fromCharCode
19+
"function fromCharCode(c){\
20+
\ return String.fromCharCode(c);\
21+
\}" :: Number -> Char
22+

src/Data/String.purs

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
module Data.String
22
(
33
charAt,
4-
charAt',
54
charCodeAt,
6-
charCodeOf,
75
fromCharArray,
86
fromChar,
9-
fromCharCode,
10-
fromCharCode',
117
indexOf,
128
indexOf',
139
lastIndexOf,
@@ -27,29 +23,20 @@ module Data.String
2723

2824
import Data.Maybe
2925
import Data.Char
26+
import Data.Function
3027

31-
foreign import _unsafeMkChar "function _unsafeMkChar(s){return s;}" :: String -> Char
28+
foreign import _charAt
29+
"function _charAt(i, s, Just, Nothing) {\
30+
\ if (i < 0 || i >= s.length) return Nothing;\
31+
\ else return Just(s.charAt(i));\
32+
\}" :: forall a. Fn4 Number String (a -> Maybe a) (Maybe a) (Maybe Char)
3233

33-
-- | Deprecated
34-
foreign import charAt
35-
"function charAt(i) {\
36-
\ return function(s) {\
37-
\ return s.charAt(i); \
38-
\ };\
39-
\}" :: Number -> String -> String
40-
41-
charAt' :: Number -> String -> Maybe Char
42-
charAt' n s =
43-
case charAt n s of
44-
"" -> Nothing
45-
c -> Just $ _unsafeMkChar c
34+
charAt :: Number -> String -> Maybe Char
35+
charAt n s = runFn4 _charAt n s Just Nothing
4636

4737
fromChar :: Char -> String
4838
fromChar = charString
4939

50-
charCodeOf :: Char -> Number
51-
charCodeOf c = charCodeAt 0 (charString c)
52-
5340
foreign import charCodeAt
5441
"function charCodeAt(i) {\
5542
\ return function(s) {\
@@ -62,15 +49,6 @@ module Data.String
6249
\ return a.join(''); \
6350
\" :: [Char] -> String
6451

65-
-- | Deprecated
66-
foreign import fromCharCode
67-
"function fromCharCode(n) {\
68-
\ return String.fromCharCode(n);\
69-
\}" :: Number -> String
70-
71-
fromCharCode' :: Number -> Char
72-
fromCharCode' c = _unsafeMkChar $ fromCharCode c
73-
7452
foreign import indexOf
7553
"function indexOf(x) {\
7654
\ return function(s) {\

0 commit comments

Comments
 (0)