Skip to content

Commit

Permalink
change String.toInt and String.toFloat to return Maybe instead of Result
Browse files Browse the repository at this point in the history
  • Loading branch information
gyzerok committed Apr 13, 2016
1 parent c6606f9 commit 1e2484c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 26 deletions.
18 changes: 9 additions & 9 deletions src/Native/String.js
Original file line number Diff line number Diff line change
Expand Up @@ -205,14 +205,14 @@ function toInt(s)
var len = s.length;
if (len === 0)
{
return _elm_lang$core$Result$Err("could not convert string '" + s + "' to an Int" );
return _elm_lang$core$Maybe$Nothing;
}
var start = 0;
if (s[0] === '-')
{
if (len === 1)
{
return _elm_lang$core$Result$Err("could not convert string '" + s + "' to an Int" );
return _elm_lang$core$Maybe$Nothing;
}
start = 1;
}
Expand All @@ -221,25 +221,25 @@ function toInt(s)
var c = s[i];
if (c < '0' || '9' < c)
{
return _elm_lang$core$Result$Err("could not convert string '" + s + "' to an Int" );
return _elm_lang$core$Maybe$Nothing;
}
}
return _elm_lang$core$Result$Ok(parseInt(s, 10));
return _elm_lang$core$Maybe$Just(parseInt(s, 10));
}

function toFloat(s)
{
var len = s.length;
if (len === 0)
{
return _elm_lang$core$Result$Err("could not convert string '" + s + "' to a Float" );
return _elm_lang$core$Maybe$Nothing;
}
var start = 0;
if (s[0] === '-')
{
if (len === 1)
{
return _elm_lang$core$Result$Err("could not convert string '" + s + "' to a Float" );
return _elm_lang$core$Maybe$Nothing;
}
start = 1;
}
Expand All @@ -259,9 +259,9 @@ function toFloat(s)
continue;
}
}
return _elm_lang$core$Result$Err("could not convert string '" + s + "' to a Float" );
return _elm_lang$core$Maybe$Nothing;
}
return _elm_lang$core$Result$Ok(parseFloat(s));
return _elm_lang$core$Maybe$Just(parseFloat(s));
}

function toList(str)
Expand Down Expand Up @@ -324,4 +324,4 @@ return {
fromList: fromList
};

}();
}();
33 changes: 16 additions & 17 deletions src/String.elm
Original file line number Diff line number Diff line change
Expand Up @@ -409,36 +409,36 @@ indices =

{-| Try to convert a string into an int, failing on improperly formatted strings.
String.toInt "123" == Ok 123
String.toInt "-42" == Ok -42
String.toInt "3.1" == Err "could not convert string '3.1' to an Int"
String.toInt "31a" == Err "could not convert string '31a' to an Int"
String.toInt "123" == Just 123
String.toInt "-42" == Just -42
String.toInt "3.1" == Nothing
String.toInt "31a" == Nothing
If you are extracting a number from some raw user input, you will typically
want to use [`Result.withDefault`](Result#withDefault) to handle bad data:
want to use [`Maybe.withDefault`](Maybe#withDefault) to handle bad data:
Result.withDefault 0 (String.toInt "42") == 42
Result.withDefault 0 (String.toInt "ab") == 0
Maybe.withDefault 0 (String.toInt "42") == 42
Maybe.withDefault 0 (String.toInt "ab") == 0
-}
toInt : String -> Result String Int
toInt : String -> Maybe Int
toInt =
Native.String.toInt


{-| Try to convert a string into a float, failing on improperly formatted strings.
String.toFloat "123" == Ok 123.0
String.toFloat "-42" == Ok -42.0
String.toFloat "3.1" == Ok 3.1
String.toFloat "31a" == Err "could not convert string '31a' to a Float"
String.toFloat "123" == Just 123.0
String.toFloat "-42" == Just -42.0
String.toFloat "3.1" == Just 3.1
String.toFloat "31a" == Nothing
If you are extracting a number from some raw user input, you will typically
want to use [`Result.withDefault`](Result#withDefault) to handle bad data:
want to use [`Maybe.withDefault`](Maybe#withDefault) to handle bad data:
Result.withDefault 0 (String.toFloat "42.5") == 42.5
Result.withDefault 0 (String.toFloat "cats") == 0
Maybe.withDefault 0 (String.toFloat "42.5") == 42.5
Maybe.withDefault 0 (String.toFloat "cats") == 0
-}
toFloat : String -> Result String Float
toFloat : String -> Maybe Float
toFloat =
Native.String.toFloat

Expand All @@ -461,4 +461,3 @@ something.
fromList : List Char -> String
fromList =
Native.String.fromList

0 comments on commit 1e2484c

Please sign in to comment.