mirror of
https://github.com/correl/elm.git
synced 2024-12-24 11:50:50 +00:00
25 lines
490 B
Text
25 lines
490 B
Text
|
module WordCount (..) where
|
||
|
|
||
|
import String
|
||
|
import Dict exposing (Dict)
|
||
|
import Regex
|
||
|
|
||
|
|
||
|
wordCount : String -> Dict String Int
|
||
|
wordCount sentence =
|
||
|
sentence
|
||
|
|> String.toLower
|
||
|
|> depunctuate
|
||
|
|> String.words
|
||
|
|> List.foldl (\w d -> Dict.update w incrMaybe d) Dict.empty
|
||
|
|
||
|
|
||
|
depunctuate : String -> String
|
||
|
depunctuate =
|
||
|
Regex.replace Regex.All (Regex.regex "[^a-z0-9 ]") (\_ -> "")
|
||
|
|
||
|
|
||
|
incrMaybe : Maybe Int -> Maybe Int
|
||
|
incrMaybe maybe =
|
||
|
(Maybe.withDefault 0 maybe) + 1 |> Just
|