-- | Haskell implementations of hydra/lib/strings primitives

module Hydra.Lib.Strings where

import qualified Data.Char as C
import qualified Data.List as L
import qualified Data.List.Split as LS


cat :: [String] -> String
cat :: [String] -> String
cat = [String] -> String
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
L.concat

cat2 :: String -> String -> String
cat2 :: String -> String -> String
cat2 String
s1 String
s2 = String
s1 String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
s2

fromList :: [Int] -> String
fromList :: [Int] -> String
fromList = (Int -> Char) -> [Int] -> String
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Int -> Char
C.chr

intercalate :: String -> [String] -> String
intercalate :: String -> [String] -> String
intercalate = String -> [String] -> String
forall a. [a] -> [[a]] -> [a]
L.intercalate

isEmpty :: String -> Bool
isEmpty :: String -> Bool
isEmpty = String -> Bool
forall a. [a] -> Bool
forall (t :: * -> *) a. Foldable t => t a -> Bool
L.null

length :: String -> Int
length :: String -> Int
length = String -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
L.length

splitOn :: String -> String -> [String]
splitOn :: String -> String -> [String]
splitOn = String -> String -> [String]
forall a. Eq a => [a] -> [a] -> [[a]]
LS.splitOn

toList :: String -> [Int]
toList :: String -> [Int]
toList = (Char -> Int) -> String -> [Int]
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Char -> Int
C.ord

toLower :: String -> String
toLower :: String -> String
toLower = (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Char -> Char
C.toLower

toUpper :: String -> String
toUpper :: String -> String
toUpper = (Char -> Char) -> String -> String
forall a b. (a -> b) -> [a] -> [b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Char -> Char
C.toUpper