module Data.Connect.AesonHelpers ( baseOptions , stripFieldNamePrefix , dropSuffixAndSnakeCase , lowerAll ) where import qualified Cases as CS import Data.Aeson.Types import qualified Data.Char as C import qualified Data.List as L import Data.Maybe (fromMaybe) import qualified Data.Text as T baseOptions :: Options baseOptions :: Options baseOptions = Options defaultOptions { omitNothingFields :: Bool omitNothingFields = Bool True } stripFieldNamePrefix :: String -> String -> String stripFieldNamePrefix :: String -> String -> String stripFieldNamePrefix String pre = String -> String lowerFirst (String -> String) -> (String -> String) -> String -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . (String -> Maybe String) -> String -> String forall a. (a -> Maybe a) -> a -> a try (String -> String -> Maybe String forall a. Eq a => [a] -> [a] -> Maybe [a] L.stripPrefix String pre) dropSuffixAndSnakeCase :: String -> String -> String dropSuffixAndSnakeCase :: String -> String -> String dropSuffixAndSnakeCase String suffix = Text -> String T.unpack (Text -> String) -> (String -> Text) -> String -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . CaseTransformer -> Delimiter -> Text -> Text CS.process CaseTransformer CS.lower Delimiter CS.snake (Text -> Text) -> (String -> Text) -> String -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Text T.pack (String -> Text) -> (String -> String) -> String -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> String -> String dropSuffix String suffix lowerFirst :: String -> String lowerFirst :: String -> String lowerFirst (Char x : String xs) = Char -> Char C.toLower Char x Char -> String -> String forall a. a -> [a] -> [a] : String xs lowerFirst [] = [] lowerAll :: String -> String lowerAll :: String -> String lowerAll = (Char -> Char) -> String -> String forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Char -> Char C.toLower dropSuffix :: String -> String -> String dropSuffix :: String -> String -> String dropSuffix String suffix = String -> String forall a. [a] -> [a] reverse (String -> String) -> (String -> String) -> String -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . (String -> Maybe String) -> String -> String forall a. (a -> Maybe a) -> a -> a try (String -> String -> Maybe String forall a. Eq a => [a] -> [a] -> Maybe [a] L.stripPrefix (String -> String -> Maybe String) -> (String -> String) -> String -> String -> Maybe String forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> String forall a. [a] -> [a] reverse (String -> String -> Maybe String) -> String -> String -> Maybe String forall a b. (a -> b) -> a -> b $ String suffix) (String -> String) -> (String -> String) -> String -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> String forall a. [a] -> [a] reverse try :: (a -> Maybe a) -> a -> a try :: (a -> Maybe a) -> a -> a try a -> Maybe a f a v = a -> Maybe a -> a forall a. a -> Maybe a -> a fromMaybe a v (a -> Maybe a f a v)