@@ -19,6 +19,7 @@ import Data.Aeson hiding (Bool, String)
1919import Data.Aeson.TH
2020import qualified Data.Attoparsec.Text as A
2121import Data.Bifunctor
22+import qualified Data.CaseInsensitive as CI
2223import Data.Char
2324import Data.Function (on)
2425import Data.Hashable
@@ -42,12 +43,17 @@ import Language.Haskell.Exts.Build
4243import Language.Haskell.Exts.Pretty (prettyPrint)
4344import Language.Haskell.Exts.Syntax (Name)
4445
45−vname :: Text -> (Name, Id, [Text])
46−vname n = (dname (g (x <> "API")), g x, ns)
46+vname :: Text -> Text -> (Name, Id, [Text])
47+vname abrv r = (dname (g (n <> "API")), g (n <> "'"), ns)
4748 where
48− g = Free . Global
49− x = mconcat (drop 1 ns)
50− ns = map (upperAcronym . upperHead) $ Text.split (== '.') n
49+ g = Free . Global
50+ n = mconcat (drop 1 ns)
51+
52+ ns | CI.mk e == CI.mk x = e:xs
53+ | otherwise = x:xs
54+ where
55+ e = Text.replace "." "" abrv
56+ x:xs = map (upperAcronym . upperHead) $ Text.split (== '.') r
5157
5258dname, cname :: Id -> Name
5359dname = name . Text.unpack . upperHead . idToText