debian-3.79.1: Modules for working with the Debian package system

Safe HaskellSafe-Inferred

Debian.Control.String

Contents

Synopsis

Types

newtype Control' a Source

Constructors

Control [Paragraph' a] 

Instances

Pretty (Control' String)

This may have bad performance issues (why?)

Pretty (Control' Text)

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)
              }

This may have bad performance issues (why?)

newtype Paragraph' a Source

Constructors

Paragraph [Field' a] 

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

class ControlFunctions a whereSource

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 -> aSource

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.

asString :: a -> StringSource

Control File Parser

pControl :: ControlParser ControlSource

A parser for debian control file. This parser handles control files that end without a newline as well as ones that have several blank lines at the end. It is very liberal and does not attempt validate the fields in any way. All trailing, leading, and folded whitespace is preserved in the field values. See stripWS.

Helper Functions

renameField :: Eq a => a -> a -> Paragraph' a -> Paragraph' aSource

modifyField :: Eq a => a -> (a -> a) -> Paragraph' a -> Paragraph' aSource

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

Move selected fields to the beginning of a paragraph.