module Text.Inflections.Dasherize
( dasherize
, dasherizeCustom )
where
import Text.Inflections.Parse.SnakeCase (Word(..), parser)
import Text.Parsec (ParseError, parse)
import Data.List (intercalate)
dasherize
:: String
-> Either ParseError String
dasherize s = dasherizeCustom [] s
dasherizeCustom
:: [String]
-> String
-> Either ParseError String
dasherizeCustom acronyms s =
case parse (parser acronyms) "(unknown)" s of
Left errs -> Left errs
Right res -> Right $ intercalate "-" $ map toString res
toString :: Word -> String
toString (Acronym s) = s
toString (Word s) = s