bookhound-0.2.2: src/Bookhound/Parsers/Text.hs
module Bookhound.Parsers.Text where
import Bookhound.Parser (Parser, anyChar)
import Bookhound.ParserCombinators (IsMatch (..), between,
maybeBetween, maybeSurroundedBy,
surroundedBy, (->>-), (|+), (|?),
(||*), (||+))
import Bookhound.Parsers.Char (alpha, alphaNum, closeAngle,
closeCurly, closeParens,
closeSquare, digit, doubleQuote,
lower, newLine, openAngle,
openCurly, openParens, openSquare,
quote, space, spaceOrTab, tab,
upper, whiteSpace)
import Data.Text (Text)
import qualified Data.Text as Text
anyString :: Parser Text
anyString = (anyChar ||*)
word :: Parser Text
word = (inverse whiteSpace ||+)
digits :: Parser Text
digits = (digit ||+)
uppers :: Parser Text
uppers = (upper ||+)
lowers :: Parser Text
lowers = (lower ||+)
alphas :: Parser Text
alphas = (alpha ||+)
alphaNums :: Parser Text
alphaNums = (alphaNum ||+)
spaces :: Parser Text
spaces = (space ||+)
tabs :: Parser Text
tabs = (tab ||+)
newLines :: Parser Text
newLines = (newLine ||+)
spacesOrTabs :: Parser Text
spacesOrTabs = (spaceOrTab ||+)
spacing :: Parser Text
spacing = (whiteSpace ||+)
blankLine :: Parser Text
blankLine = (spacesOrTabs |?) ->>- newLine
blankLines :: Parser Text
blankLines = fmap Text.concat (blankLine |+)
betweenQuotes :: Parser b -> Parser b
betweenQuotes = surroundedBy quote
betweenDoubleQuotes :: Parser b -> Parser b
betweenDoubleQuotes = surroundedBy doubleQuote
betweenSpacing :: Parser b -> Parser b
betweenSpacing = surroundedBy spacing
betweenParens :: Parser b -> Parser b
betweenParens = between openParens closeParens
betweenSquare :: Parser b -> Parser b
betweenSquare = between openSquare closeSquare
betweenCurlyBrackets :: Parser b -> Parser b
betweenCurlyBrackets = between openCurly closeCurly
betweenAngleBrackets :: Parser b -> Parser b
betweenAngleBrackets = between openAngle closeAngle
maybeBetweenQuotes :: Parser b -> Parser b
maybeBetweenQuotes = maybeSurroundedBy quote
maybeBetweenDoubleQuotes :: Parser b -> Parser b
maybeBetweenDoubleQuotes = maybeSurroundedBy doubleQuote
maybeBetweenSpacing :: Parser b -> Parser b
maybeBetweenSpacing = maybeSurroundedBy spacing
maybeBetweenParens :: Parser b -> Parser b
maybeBetweenParens = maybeBetween openParens closeParens
maybeBetweenSquareBrackets :: Parser b -> Parser b
maybeBetweenSquareBrackets = maybeBetween openSquare closeSquare
maybeBetweenCurlyBrackets :: Parser b -> Parser b
maybeBetweenCurlyBrackets = maybeBetween openCurly closeCurly
maybeBetweenAngleBrackets :: Parser b -> Parser b
maybeBetweenAngleBrackets = maybeBetween openAngle closeAngle