module Conllu.Utils where
import Control.Exception.Base
import Data.Char
import Data.Maybe
upcaseStr :: String -> String
upcaseStr :: String -> String
upcaseStr = (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
toUpper
downcaseStr :: String -> String
downcaseStr :: String -> String
downcaseStr = (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
map Char -> Char
toLower
assNothing :: Maybe a -> Bool -> Bool
assNothing :: Maybe a -> Bool -> Bool
assNothing Maybe a
m = Bool -> Bool -> Bool
forall a. (?callStack::CallStack) => Bool -> a -> a
assert (Maybe a -> Bool
forall a. Maybe a -> Bool
isNothing Maybe a
m)
assSomething :: Maybe a -> Bool -> Bool
assSomething :: Maybe a -> Bool -> Bool
assSomething Maybe a
m = Bool -> Bool -> Bool
forall a. (?callStack::CallStack) => Bool -> a -> a
assert (Maybe a -> Bool
forall a. Maybe a -> Bool
isJust Maybe a
m)
assNull :: [a] -> Bool -> Bool
assNull :: [a] -> Bool -> Bool
assNull [a]
l = Bool -> Bool -> Bool
forall a. (?callStack::CallStack) => Bool -> a -> a
assert ([a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
null [a]
l)
if' :: Bool -> a -> a -> a
if' :: Bool -> a -> a -> a
if' Bool
True a
x a
_b = a
x
if' Bool
False a
_b a
y = a
y
consIf :: (a -> Bool) -> a -> [a] -> [a]
consIf :: (a -> Bool) -> a -> [a] -> [a]
consIf a -> Bool
p a
a [a]
as =
if a -> Bool
p a
a
then a
a a -> [a] -> [a]
forall a. a -> [a] -> [a]
: [a]
as
else [a]
as
safehead :: [a] -> Maybe a
safehead :: [a] -> Maybe a
safehead [] = Maybe a
forall a. Maybe a
Nothing
safehead (a
x:[a]
_) = a -> Maybe a
forall a. a -> Maybe a
Just a
x
safeRead :: Read a => String -> Maybe a
safeRead :: String -> Maybe a
safeRead = ((a, String) -> a) -> Maybe (a, String) -> Maybe a
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (a, String) -> a
forall a b. (a, b) -> a
fst (Maybe (a, String) -> Maybe a)
-> (String -> Maybe (a, String)) -> String -> Maybe a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [(a, String)] -> Maybe (a, String)
forall a. [a] -> Maybe a
listToMaybe ([(a, String)] -> Maybe (a, String))
-> (String -> [(a, String)]) -> String -> Maybe (a, String)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> [(a, String)]
forall a. Read a => ReadS a
reads