elm/exercises/phone-number/PhoneNumber.example.elm

45 lines
870 B
Elm
Raw Permalink Normal View History

module PhoneNumber exposing (..)
2015-10-13 23:05:05 +00:00
import String
2016-03-17 01:33:59 +00:00
nums =
[ '1', '2', '3', '4', '5', '6', '7', '8', '9', '0' ]
2016-03-17 01:33:59 +00:00
getNumber : String -> Maybe String
getNumber text =
getValidNum (String.filter isDigit text)
2016-03-17 01:33:59 +00:00
2015-10-13 23:05:05 +00:00
isDigit : Char -> Bool
2016-03-17 01:33:59 +00:00
isDigit char =
List.any (\n -> n == char) nums
2015-10-13 23:05:05 +00:00
2016-03-17 01:33:59 +00:00
getValidNum : String -> Maybe String
2015-10-13 23:05:05 +00:00
getValidNum num =
if String.length num == 10 then
Just num
else if (String.length num == 11) && (String.left 1 num == "1") then
Just (String.dropLeft 1 num)
else
Nothing
2016-03-17 01:33:59 +00:00
2015-10-13 23:05:05 +00:00
2016-03-17 01:33:59 +00:00
prettyPrint : String -> Maybe String
prettyPrint input =
Maybe.map formatNumber (getNumber input)
2015-10-13 23:05:05 +00:00
formatNumber : String -> String
2016-03-17 01:33:59 +00:00
formatNumber input =
String.concat
[ "("
, (String.slice 0 3 input)
, ") "
, (String.slice 3 6 input)
, "-"
, (String.slice 6 10 input)
]