debian-4.0.2: Modules for working with the Debian package system
Safe HaskellNone
LanguageHaskell98

Debian.Control.TextLazy

Synopsis

Types

newtype Control' a Source #

Constructors

Control 

Fields

Instances

Instances details
Eq a => Eq (Control' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

(==) :: Control' a -> Control' a -> Bool

(/=) :: Control' a -> Control' a -> Bool

Ord a => Ord (Control' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

compare :: Control' a -> Control' a -> Ordering

(<) :: Control' a -> Control' a -> Bool

(<=) :: Control' a -> Control' a -> Bool

(>) :: Control' a -> Control' a -> Bool

(>=) :: Control' a -> Control' a -> Bool

max :: Control' a -> Control' a -> Control' a

min :: Control' a -> Control' a -> Control' a

Read a => Read (Control' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

readsPrec :: Int -> ReadS (Control' a)

readList :: ReadS [Control' a]

readPrec :: ReadPrec (Control' a)

readListPrec :: ReadPrec [Control' a]

Show a => Show (Control' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

showsPrec :: Int -> Control' a -> ShowS

show :: Control' a -> String

showList :: [Control' a] -> ShowS

(ControlFunctions a, Pretty (PP a)) => Pretty (Control' a) Source #

This may have bad performance issues (dsf: Whoever wrote this comment should have explained why.)

Instance details

Defined in Debian.Control.Common

Methods

pretty :: Control' a -> Doc

prettyVersioned :: CabalSpecVersion -> Control' a -> Doc

newtype Paragraph' a Source #

Constructors

Paragraph [Field' a] 

Instances

Instances details
Eq a => Eq (Paragraph' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

(==) :: Paragraph' a -> Paragraph' a -> Bool

(/=) :: Paragraph' a -> Paragraph' a -> Bool

Ord a => Ord (Paragraph' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

compare :: Paragraph' a -> Paragraph' a -> Ordering

(<) :: Paragraph' a -> Paragraph' a -> Bool

(<=) :: Paragraph' a -> Paragraph' a -> Bool

(>) :: Paragraph' a -> Paragraph' a -> Bool

(>=) :: Paragraph' a -> Paragraph' a -> Bool

max :: Paragraph' a -> Paragraph' a -> Paragraph' a

min :: Paragraph' a -> Paragraph' a -> Paragraph' a

Read a => Read (Paragraph' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

readsPrec :: Int -> ReadS (Paragraph' a)

readList :: ReadS [Paragraph' a]

readPrec :: ReadPrec (Paragraph' a)

readListPrec :: ReadPrec [Paragraph' a]

Show a => Show (Paragraph' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

showsPrec :: Int -> Paragraph' a -> ShowS

show :: Paragraph' a -> String

showList :: [Paragraph' a] -> ShowS

(ControlFunctions a, Pretty (PP a)) => Pretty (Paragraph' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

pretty :: Paragraph' a -> Doc

prettyVersioned :: CabalSpecVersion -> Paragraph' a -> Doc

data Field' a Source #

NOTE: we do not strip the leading or trailing whitespace in the name or value

Constructors

Field (a, a) 
Comment a

Lines beginning with #

Instances

Instances details
Eq a => Eq (Field' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

(==) :: Field' a -> Field' a -> Bool

(/=) :: Field' a -> Field' a -> Bool

Ord a => Ord (Field' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

compare :: Field' a -> Field' a -> Ordering

(<) :: Field' a -> Field' a -> Bool

(<=) :: Field' a -> Field' a -> Bool

(>) :: Field' a -> Field' a -> Bool

(>=) :: Field' a -> Field' a -> Bool

max :: Field' a -> Field' a -> Field' a

min :: Field' a -> Field' a -> Field' a

Read a => Read (Field' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

readsPrec :: Int -> ReadS (Field' a)

readList :: ReadS [Field' a]

readPrec :: ReadPrec (Field' a)

readListPrec :: ReadPrec [Field' a]

Show a => Show (Field' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

showsPrec :: Int -> Field' a -> ShowS

show :: Field' a -> String

showList :: [Field' a] -> ShowS

(ControlFunctions a, Pretty (PP a)) => Pretty (Field' a) Source # 
Instance details

Defined in Debian.Control.Common

Methods

pretty :: Field' a -> Doc

prettyVersioned :: CabalSpecVersion -> Field' a -> Doc

type Control = Control' Text Source #

type Field = Field' Text Source #

parseFromFile p filePath runs a string parser p on the input read from filePath using readFile. Returns either a ParseError (Left) or a value of type a (Right).

 main    = do{ result <- parseFromFile numbers "digits.txt"
             ; case result of
                 Left err  -> print err
                 Right xs  -> print (sum xs)
             }

class ControlFunctions a where Source #

Methods

parseControlFromFile :: FilePath -> IO (Either ParseError (Control' a)) Source #

parseControlFromFile filepath is a simple wrapper function that parses filepath using pControl

parseControlFromHandle :: String -> Handle -> IO (Either ParseError (Control' a)) Source #

parseControlFromHandle sourceName handle - sourceName is only used for error reporting

parseControl :: String -> a -> Either ParseError (Control' a) Source #

parseControlFromString sourceName text - sourceName is only used for error reporting

lookupP :: String -> Paragraph' a -> Maybe (Field' a) Source #

lookupP fieldName paragraph looks up a Field in a Paragraph. N.B. trailing and leading whitespace is not stripped.

stripWS :: a -> a Source #

Strip the trailing and leading space and tab characters from a string. Folded whitespace is not unfolded. This should probably be moved to someplace more general purpose.

protectFieldText :: a -> a Source #

Protect field value text so the parser doesn't split it into multiple fields or paragraphs. This must modify all field text to enforce two conditions: (1) All lines other than the initial one must begin with a space or a tab, and (2) the trailing white space must not contain newlines. This is called before pretty printing to prevent the parser from misinterpreting field text as multiple fields or paragraphs.

asString :: a -> String Source #

Instances

Instances details
ControlFunctions String Source # 
Instance details

Defined in Debian.Control.String

Methods

parseControlFromFile :: FilePath -> IO (Either ParseError (Control' String)) Source #

parseControlFromHandle :: String -> Handle -> IO (Either ParseError (Control' String)) Source #

parseControl :: String -> String -> Either ParseError (Control' String) Source #

lookupP :: String -> Paragraph' String -> Maybe (Field' String) Source #

stripWS :: String -> String Source #

protectFieldText :: String -> String Source #

asString :: String -> String Source #

ControlFunctions Builder Source # 
Instance details

Defined in Debian.Control.Builder

Methods

parseControlFromFile :: FilePath -> IO (Either ParseError (Control' Builder)) Source #

parseControlFromHandle :: String -> Handle -> IO (Either ParseError (Control' Builder)) Source #

parseControl :: String -> Builder -> Either ParseError (Control' Builder) Source #

lookupP :: String -> Paragraph' Builder -> Maybe (Field' Builder) Source #

stripWS :: Builder -> Builder Source #

protectFieldText :: Builder -> Builder Source #

asString :: Builder -> String Source #

ControlFunctions Text Source # 
Instance details

Defined in Debian.Control.TextLazy

Methods

parseControlFromFile :: FilePath -> IO (Either ParseError (Control' Text)) Source #

parseControlFromHandle :: String -> Handle -> IO (Either ParseError (Control' Text)) Source #

parseControl :: String -> Text -> Either ParseError (Control' Text) Source #

lookupP :: String -> Paragraph' Text -> Maybe (Field' Text) Source #

stripWS :: Text -> Text Source #

protectFieldText :: Text -> Text Source #

asString :: Text -> String Source #

ControlFunctions Text Source # 
Instance details

Defined in Debian.Control.Text

Methods

parseControlFromFile :: FilePath -> IO (Either ParseError (Control' Text)) Source #

parseControlFromHandle :: String -> Handle -> IO (Either ParseError (Control' Text)) Source #

parseControl :: String -> Text -> Either ParseError (Control' Text) Source #

lookupP :: String -> Paragraph' Text -> Maybe (Field' Text) Source #

stripWS :: Text -> Text Source #

protectFieldText :: Text -> Text Source #

asString :: Text -> String Source #

ControlFunctions ByteString Source # 
Instance details

Defined in Debian.Control.ByteString

Methods

parseControlFromFile :: FilePath -> IO (Either ParseError (Control' ByteString)) Source #

parseControlFromHandle :: String -> Handle -> IO (Either ParseError (Control' ByteString)) Source #

parseControl :: String -> ByteString -> Either ParseError (Control' ByteString) Source #

lookupP :: String -> Paragraph' ByteString -> Maybe (Field' ByteString) Source #

stripWS :: ByteString -> ByteString Source #

protectFieldText :: ByteString -> ByteString Source #

asString :: ByteString -> String Source #

Control File Parser

Helper Functions

fieldValue :: ControlFunctions a => String -> Paragraph' a -> Maybe a Source #

removeField :: Eq a => a -> Paragraph' a -> Paragraph' a Source #

renameField :: Eq a => a -> a -> Paragraph' a -> Paragraph' a Source #

modifyField :: Eq a => a -> (a -> a) -> Paragraph' a -> Paragraph' a Source #

raiseFields :: Eq a => (a -> Bool) -> Paragraph' a -> Paragraph' a Source #

Move selected fields to the beginning of a paragraph.

Orphan instances

ControlFunctions Text Source # 
Instance details

Methods

parseControlFromFile :: FilePath -> IO (Either ParseError (Control' Text)) Source #

parseControlFromHandle :: String -> Handle -> IO (Either ParseError (Control' Text)) Source #

parseControl :: String -> Text -> Either ParseError (Control' Text) Source #

lookupP :: String -> Paragraph' Text -> Maybe (Field' Text) Source #

stripWS :: Text -> Text Source #

protectFieldText :: Text -> Text Source #

asString :: Text -> String Source #