module ShellCheck.Prelude where
import Data.Semigroup
headOrDefault :: a -> [a] -> a
headOrDefault a
_ (a
a:[a]
_) = a
a
headOrDefault a
def [a]
_ = a
def
lastOrDefault :: p -> [p] -> p
lastOrDefault p
def [] = p
def
lastOrDefault p
_ [p]
list = [p] -> p
forall a. HasCallStack => [a] -> a
last [p]
list
!!! :: [a] -> Int -> Maybe a
(!!!) [a]
list Int
i =
case Int -> [a] -> [a]
forall a. Int -> [a] -> [a]
drop Int
i [a]
list of
[] -> Maybe a
forall a. Maybe a
Nothing
(a
r:[a]
_) -> a -> Maybe a
forall a. a -> Maybe a
Just a
r
sconcat1 :: (Semigroup t) => [t] -> t
sconcat1 :: forall t. Semigroup t => [t] -> t
sconcat1 [t
x] = t
x
sconcat1 (t
x:[t]
xs) = t
x t -> t -> t
forall a. Semigroup a => a -> a -> a
<> [t] -> t
forall t. Semigroup t => [t] -> t
sconcat1 [t]
xs
sconcatOrDefault :: p -> [p] -> p
sconcatOrDefault p
def [] = p
def
sconcatOrDefault p
_ [p]
list = [p] -> p
forall t. Semigroup t => [t] -> t
sconcat1 [p]
list
pleaseReport :: [Char] -> [Char]
pleaseReport [Char]
str = [Char]
"ShellCheck internal error, please report: " [Char] -> [Char] -> [Char]
forall a. [a] -> [a] -> [a]
++ [Char]
str