Skip to content

Commit 1f49396

Browse files
committed
Make charCodeAt safe
1 parent 5037b3e commit 1f49396

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
charAt :: Number -> String -> Maybe Char
3333

34-
charCodeAt :: Number -> String -> Number
34+
charCodeAt :: Number -> String -> Maybe Number
3535

3636
drop :: Number -> String -> String
3737

src/Data/String.purs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,14 @@ module Data.String
3737
fromChar :: Char -> String
3838
fromChar = charString
3939

40-
foreign import charCodeAt
41-
"function charCodeAt(i) {\
42-
\ return function(s) {\
43-
\ return s.charCodeAt(i); \
44-
\ };\
45-
\}" :: Number -> String -> Number
40+
foreign import _charCodeAt
41+
"function _charCodeAt(i, s, Just, Nothing) {\
42+
\ if (i < 0 || i >= s.length) return Nothing;\
43+
\ else return Just(s.charCodeAt(i));\
44+
\}" :: forall a. Fn4 Number String (a -> Maybe a) (Maybe a) (Maybe Number)
45+
46+
charCodeAt :: Number -> String -> Maybe Number
47+
charCodeAt n s = runFn4 _charCodeAt n s Just Nothing
4648

4749
foreign import fromCharArray
4850
"function fromCharArray(a) {\
@@ -123,7 +125,7 @@ module Data.String
123125
\ };\
124126
\}" :: String -> String -> [String]
125127

126-
foreign import toCharArray
128+
foreign import toCharArray
127129
"function toCharArray(s) {\
128130
\ return s.split('');\
129131
\}" :: String -> [Char]

0 commit comments

Comments
 (0)