| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Pdf.Toolbox.Core.Parsers.Object
Description
This module contains parsers for pdf objects
- parseObject :: Parser (Object ())
- parseDict :: Parser Dict
- parseArray :: Parser Array
- parseName :: Parser Name
- parseStr :: Parser Str
- parseHexStr :: Parser Str
- parseRef :: Parser Ref
- parseNumber :: Parser Number
- parseBoolean :: Parser Boolean
- parseTillStreamData :: Parser ()
- parseIndirectObject :: Parser (Ref, Object ())
- isRegularChar :: Char -> Bool
Parse any object
parseObject :: Parser (Object ()) Source
Parse object of specific type
parseDict :: Parser Dict Source
>>>parseOnly parseDict "<</Key1(some string)/Key2 123>>"Right (Dict [(Name "Key1",OStr (Str "some string")),(Name "Key2",ONumber (NumInt 123))])
parseArray :: Parser Array Source
>>>parseOnly parseArray "[1 (string) /Name []]"Right (Array [ONumber (NumInt 1),OStr (Str "string"),OName (Name "Name"),OArray (Array [])])
parseHexStr :: Parser Str Source
>>>parseOnly parseHexStr "<68656C6C6F>"Right (Str "hello")
parseNumber :: Parser Number Source
>>>parseOnly parseNumber "123"Right (NumInt 123)>>>parseOnly parseNumber "12.3"Right (NumReal 12.3)>>>parseOnly parseNumber ".01"Right (NumReal 1.0e-2)
parseBoolean :: Parser Boolean Source
>>>parseOnly parseBoolean "true"Right (Boolean True)>>>parseOnly parseBoolean "false"Right (Boolean False)
Other
parseTillStreamData :: Parser () Source
Consumes input till stream's data
Use parseDict then parseTillStreamData
to determine whether the object is dictionary or stream.
If parseTillStreamData fails, then it is a dictionary.
Otherwise it is stream, and current position in input data
will point to stream's data start
>>>parse (parseDict >>= \dict -> parseTillStreamData >> return dict) "<</Key 123>>\nstream\n1234\nendstream"Done "1234\nendstream" Dict [(Name "Key",ONumber (NumInt 123))]
parseIndirectObject :: Parser (Ref, Object ()) Source
Parse object. Input position should point to offset defined in XRef
>>>parseOnly parseIndirectObject "1 2 obj\n12"Right (Ref 1 2,ONumber (NumInt 12))
isRegularChar :: Char -> Bool Source
Whether the character can appear in Name