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

Safe HaskellSafe-Inferred
LanguageHaskell98

Debian.Control.Common

Contents

Synopsis

Types

newtype Control' a Source

Constructors

Control 

Fields

unControl :: [Paragraph' a]
 

Instances

Eq a => Eq (Control' a) 
Ord a => Ord (Control' a) 
Read a => Read (Control' a) 
Show a => Show (Control' a) 
Show (Control' Text) 
Pretty a => Pretty (Control' a)

This may have bad performance issues (why?)

newtype Paragraph' a Source

Constructors

Paragraph [Field' a] 

Instances

Eq a => Eq (Paragraph' a) 
Ord a => Ord (Paragraph' a) 
Read a => Read (Paragraph' a) 
Show a => Show (Paragraph' a) 
Pretty a => Pretty (Paragraph' 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

Eq a => Eq (Field' a) 
Ord a => Ord (Field' a) 
Read a => Read (Field' a) 
Show a => Show (Field' a) 
Pretty a => Pretty (Field' a) 

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.

asString :: a -> String 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.

parseControlFromCmd :: ControlFunctions a => String -> IO (Either String (Control' a)) Source

Run a command and parse its output as a control file.

md5sumField :: ControlFunctions a => Paragraph' a -> Maybe a Source

look up the md5sum file in a paragraph Tries several different variations: MD5Sum: Md5Sum: MD5sum: