{- This file is part of settings. - - Written in 2015 by fr33domlover . - - ♡ Copying is an act of love. Please copy, reuse and share. - - The author(s) have dedicated all copyright and related and neighboring - rights to this software to the public domain worldwide. This software is - distributed without any warranty. - - You should have received a copy of the CC0 Public Domain Dedication along - with this software. If not, see - . -} module Data.Settings.Route ( parseRoute , showRoute ) where import Data.List (intercalate) import Data.Settings.Types -- | Split a path string into its components, if it's a valid path -- syntactically. parseRoute :: OptPath -> Maybe OptRoute parseRoute "" = Just [] parseRoute s = case break (== '.') s of ("", _) -> Nothing (p, "") -> Just [p] (p, (c:cs)) -> case parseRoute cs of Nothing -> Nothing Just ps -> Just $ p : ps -- | Create a string representation of a path, with the parts separated by -- periods. showRoute :: OptRoute -> OptPath showRoute = intercalate "."