2013-10-02 22:21:00 +00:00
|
|
|
module String where
|
2013-10-09 03:05:37 +00:00
|
|
|
{-| A built-in representation for efficient string manipulation.
|
2013-10-06 21:33:39 +00:00
|
|
|
|
2013-10-06 22:57:35 +00:00
|
|
|
# Basics
|
|
|
|
@docs isEmpty, length, cons, uncons, reverse,
|
|
|
|
map, filter, foldl, foldr, any, all, repeat
|
2013-10-06 21:33:39 +00:00
|
|
|
|
2013-10-06 22:57:35 +00:00
|
|
|
# Split and Join
|
2013-10-10 19:16:47 +00:00
|
|
|
@docs split, join, words, lines
|
2013-10-06 21:33:39 +00:00
|
|
|
|
2013-10-06 22:57:35 +00:00
|
|
|
# Get Substrings
|
|
|
|
@docs sub, left, right, dropLeft, dropRight
|
2013-10-06 21:33:39 +00:00
|
|
|
|
2013-10-06 22:57:35 +00:00
|
|
|
# Check for Substrings
|
|
|
|
@docs contains, startsWith, endsWith, indices, indexes
|
|
|
|
|
|
|
|
# Conversion To Numbers
|
|
|
|
@docs toInt, toFloat
|
2013-10-06 22:51:08 +00:00
|
|
|
|
2013-10-06 22:57:35 +00:00
|
|
|
# Formatting
|
2013-10-06 23:00:05 +00:00
|
|
|
Cosmetic operations such as padding with extra characters or trimming whitespace.
|
2013-10-06 21:33:39 +00:00
|
|
|
|
2013-10-06 23:00:05 +00:00
|
|
|
@docs toUpper, toLower,
|
|
|
|
pad, padLeft, padRight,
|
|
|
|
trim, trimLeft, trimRight
|
2013-10-02 22:21:00 +00:00
|
|
|
-}
|
|
|
|
|
2013-10-03 00:41:58 +00:00
|
|
|
import Native.String
|
2013-10-02 22:57:12 +00:00
|
|
|
import Maybe (Maybe)
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
isEmpty : String
|
2013-10-03 00:41:58 +00:00
|
|
|
isEmpty = Native.String.isEmpty
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
cons : Char -> String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
cons = Native.String.cons
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
uncons : String -> Maybe (Char, String)
|
2013-10-03 00:41:58 +00:00
|
|
|
uncons = Native.String.uncons
|
2013-10-02 22:21:00 +00:00
|
|
|
|
2013-10-04 16:58:37 +00:00
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
length : String -> Int
|
|
|
|
length = Native.String.length
|
|
|
|
|
2013-10-02 22:21:00 +00:00
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
map : (Char -> Char) -> String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
map = Native.String.map
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
filter : (Char -> Bool) -> String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
filter = Native.String.filter
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
reverse : String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
reverse = Native.String.reverse
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
foldl : (Char -> b -> b) -> b -> String -> b
|
2013-10-03 00:41:58 +00:00
|
|
|
foldl = Native.String.foldl
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
foldr : (Char -> b -> b) -> b -> String -> b
|
2013-10-03 00:41:58 +00:00
|
|
|
foldr = Native.String.foldr
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
split : String -> String -> [String]
|
2013-10-03 00:41:58 +00:00
|
|
|
split = Native.String.split
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
join : String -> [String] -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
join = Native.String.join
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
repeat : Int -> String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
repeat = Native.String.repeat
|
2013-10-02 22:21:00 +00:00
|
|
|
|
2013-10-06 22:51:08 +00:00
|
|
|
sub : Int -> Int -> String -> String
|
|
|
|
sub = Native.String.sub
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
left : Int -> String -> String
|
|
|
|
left = Native.String.left
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
right : Int -> String -> String
|
|
|
|
right = Native.String.right
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
dropLeft : Int -> String -> String
|
|
|
|
dropLeft = Native.String.dropLeft
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
dropRight : Int -> String -> String
|
|
|
|
dropRight = Native.String.dropRight
|
|
|
|
|
2013-10-02 22:21:00 +00:00
|
|
|
{-|
|
|
|
|
-}
|
2013-10-06 21:33:39 +00:00
|
|
|
pad : Int -> Char -> String -> String
|
|
|
|
pad = Native.String.pad
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
2013-10-06 21:33:39 +00:00
|
|
|
padLeft : Int -> Char -> String -> String
|
|
|
|
padLeft = Native.String.padLeft
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
2013-10-06 21:33:39 +00:00
|
|
|
padRight : Int -> Char -> String -> String
|
|
|
|
padRight = Native.String.padRight
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
trim : String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
trim = Native.String.trim
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
trimLeft : String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
trimLeft = Native.String.trimLeft
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
trimRight : String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
trimRight = Native.String.trimRight
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
words : String -> [String]
|
2013-10-03 00:41:58 +00:00
|
|
|
words = Native.String.words
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
lines : String -> [String]
|
2013-10-03 00:41:58 +00:00
|
|
|
lines = Native.String.lines
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
toUpper : String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
toUpper = Native.String.toUpper
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
toLower : String -> String
|
2013-10-03 00:41:58 +00:00
|
|
|
toLower = Native.String.toLower
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
any : (Char -> Bool) -> String -> Bool
|
2013-10-03 00:41:58 +00:00
|
|
|
any = Native.String.any
|
2013-10-02 22:21:00 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
all : (Char -> Bool) -> String -> Bool
|
2013-10-03 00:41:58 +00:00
|
|
|
all = Native.String.all
|
2013-10-06 21:25:29 +00:00
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
contains : String -> String -> Bool
|
|
|
|
contains = Native.String.contains
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
startsWith : String -> String -> Bool
|
|
|
|
startsWith = Native.String.startsWith
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
endsWith : String -> String -> Bool
|
|
|
|
endsWith = Native.String.endsWith
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
indices : String -> String -> [Int]
|
|
|
|
indices = Native.String.indexes
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
indexes : String -> String -> [Int]
|
|
|
|
indexes = Native.String.indexes
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
toInt : String -> Maybe Int
|
|
|
|
toInt = Native.String.toInt
|
|
|
|
|
|
|
|
{-|
|
|
|
|
-}
|
|
|
|
toFloat : String -> Maybe Float
|
|
|
|
toFloat = Native.String.toFloat
|