34 lines
849 B
Haskell
34 lines
849 B
Haskell
-- | Miscellaneous utility functions
|
|
|
|
module Dhall.LSP.Util (
|
|
tshow,
|
|
lines',
|
|
rightToMaybe,
|
|
unlines'
|
|
) where
|
|
|
|
import Data.Text
|
|
import Data.List.NonEmpty
|
|
|
|
-- | Shorthand for @pack . show@. Useful since we are mostly working with Text
|
|
-- rather than String.
|
|
tshow :: Show a => a -> Text
|
|
tshow = pack . show
|
|
|
|
-- | A variant of @Data.Text.lines@ that does not swallow the last empty. Always
|
|
-- returns at least the empty line!
|
|
lines' :: Text -> NonEmpty Text
|
|
lines' text =
|
|
case split (== '\n') text of
|
|
[] -> "" :| [] -- this case never occurs!
|
|
l : ls -> l :| ls
|
|
|
|
-- | A variant of @Data.Text.unlines@ that is the exact inverse to @lines'@ (and
|
|
-- vice-versa).
|
|
unlines' :: [Text] -> Text
|
|
unlines' = intercalate "\n"
|
|
|
|
rightToMaybe :: Either a b -> Maybe b
|
|
rightToMaybe (Right b) = Just b
|
|
rightToMaybe (Left _) = Nothing
|