HaXml 1.20.1 → 1.20.2
raw patch · 14 files changed
+202/−144 lines, 14 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Text.XML.HaXml.TypeMapping: instance (HTypeable a) => HTypeable (Maybe a)
- Text.XML.HaXml.TypeMapping: instance (HTypeable a) => HTypeable [a]
- Text.XML.HaXml.Types: instance (Eq i) => Eq (Content i)
- Text.XML.HaXml.Types: instance (Eq i) => Eq (Document i)
- Text.XML.HaXml.Types: instance (Eq i) => Eq (Element i)
- Text.XML.HaXml.Types: instance (Eq i) => Eq (ExtParsedEnt i)
- Text.XML.HaXml.Verbatim: instance (Verbatim a) => Verbatim [a]
- Text.XML.HaXml.XmlContent: instance (XmlContent a) => XmlContent (Maybe a)
- Text.XML.HaXml.XmlContent: instance (XmlContent a) => XmlContent [a]
- Text.XML.HaXml.XmlContent.Haskell: instance (XmlContent a) => XmlContent (Maybe a)
- Text.XML.HaXml.XmlContent.Haskell: instance (XmlContent a) => XmlContent [a]
- Text.XML.HaXml.XmlContent.Parser: instance (Eq a) => Eq (Defaultable a)
- Text.XML.HaXml.XmlContent.Parser: instance (Eq a) => Eq (List1 a)
- Text.XML.HaXml.XmlContent.Parser: instance (HTypeable a) => HTypeable (List1 a)
- Text.XML.HaXml.XmlContent.Parser: instance (Show a) => Show (Defaultable a)
- Text.XML.HaXml.XmlContent.Parser: instance (Show a) => Show (List1 a)
- Text.XML.HaXml.XmlContent.Parser: instance (XmlContent a) => XmlContent (List1 a)
+ Text.XML.HaXml.TypeMapping: instance HTypeable a => HTypeable (Maybe a)
+ Text.XML.HaXml.TypeMapping: instance HTypeable a => HTypeable [a]
+ Text.XML.HaXml.Types: instance Eq i => Eq (Content i)
+ Text.XML.HaXml.Types: instance Eq i => Eq (Document i)
+ Text.XML.HaXml.Types: instance Eq i => Eq (Element i)
+ Text.XML.HaXml.Types: instance Eq i => Eq (ExtParsedEnt i)
+ Text.XML.HaXml.Verbatim: instance Verbatim a => Verbatim [a]
+ Text.XML.HaXml.XmlContent: instance XmlContent a => XmlContent (Maybe a)
+ Text.XML.HaXml.XmlContent: instance XmlContent a => XmlContent [a]
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent a => XmlContent (Maybe a)
+ Text.XML.HaXml.XmlContent.Haskell: instance XmlContent a => XmlContent [a]
+ Text.XML.HaXml.XmlContent.Parser: instance Eq a => Eq (Defaultable a)
+ Text.XML.HaXml.XmlContent.Parser: instance Eq a => Eq (List1 a)
+ Text.XML.HaXml.XmlContent.Parser: instance HTypeable a => HTypeable (List1 a)
+ Text.XML.HaXml.XmlContent.Parser: instance Show a => Show (Defaultable a)
+ Text.XML.HaXml.XmlContent.Parser: instance Show a => Show (List1 a)
+ Text.XML.HaXml.XmlContent.Parser: instance XmlContent a => XmlContent (List1 a)
- Text.XML.HaXml.ShowXmlLazy: showXmlLazy :: (XmlContent a) => Bool -> a -> String
+ Text.XML.HaXml.ShowXmlLazy: showXmlLazy :: XmlContent a => Bool -> a -> String
- Text.XML.HaXml.TypeMapping: toHType :: (HTypeable a) => a -> HType
+ Text.XML.HaXml.TypeMapping: toHType :: HTypeable a => a -> HType
- Text.XML.HaXml.Verbatim: verbatim :: (Verbatim a) => a -> String
+ Text.XML.HaXml.Verbatim: verbatim :: Verbatim a => a -> String
- Text.XML.HaXml.XmlContent: fReadXml :: (XmlContent a) => FilePath -> IO a
+ Text.XML.HaXml.XmlContent: fReadXml :: XmlContent a => FilePath -> IO a
- Text.XML.HaXml.XmlContent: fWriteXml :: (XmlContent a) => FilePath -> a -> IO ()
+ Text.XML.HaXml.XmlContent: fWriteXml :: XmlContent a => FilePath -> a -> IO ()
- Text.XML.HaXml.XmlContent: fpsHPutXml :: (XmlContent a) => Handle -> Bool -> a -> IO ()
+ Text.XML.HaXml.XmlContent: fpsHPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()
- Text.XML.HaXml.XmlContent: fpsShowXml :: (XmlContent a) => Bool -> a -> ByteString
+ Text.XML.HaXml.XmlContent: fpsShowXml :: XmlContent a => Bool -> a -> ByteString
- Text.XML.HaXml.XmlContent: fpsWriteXml :: (XmlContent a) => FilePath -> a -> IO ()
+ Text.XML.HaXml.XmlContent: fpsWriteXml :: XmlContent a => FilePath -> a -> IO ()
- Text.XML.HaXml.XmlContent: fromXml :: (XmlContent a) => Document Posn -> Either String a
+ Text.XML.HaXml.XmlContent: fromXml :: XmlContent a => Document Posn -> Either String a
- Text.XML.HaXml.XmlContent: hGetXml :: (XmlContent a) => Handle -> IO a
+ Text.XML.HaXml.XmlContent: hGetXml :: XmlContent a => Handle -> IO a
- Text.XML.HaXml.XmlContent: hPutXml :: (XmlContent a) => Handle -> Bool -> a -> IO ()
+ Text.XML.HaXml.XmlContent: hPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()
- Text.XML.HaXml.XmlContent: readXml :: (XmlContent a) => String -> Either String a
+ Text.XML.HaXml.XmlContent: readXml :: XmlContent a => String -> Either String a
- Text.XML.HaXml.XmlContent: showXml :: (XmlContent a) => Bool -> a -> String
+ Text.XML.HaXml.XmlContent: showXml :: XmlContent a => Bool -> a -> String
- Text.XML.HaXml.XmlContent: toXml :: (XmlContent a) => Bool -> a -> Document ()
+ Text.XML.HaXml.XmlContent: toXml :: XmlContent a => Bool -> a -> Document ()
- Text.XML.HaXml.XmlContent.Haskell: fReadXml :: (XmlContent a) => FilePath -> IO a
+ Text.XML.HaXml.XmlContent.Haskell: fReadXml :: XmlContent a => FilePath -> IO a
- Text.XML.HaXml.XmlContent.Haskell: fWriteXml :: (XmlContent a) => FilePath -> a -> IO ()
+ Text.XML.HaXml.XmlContent.Haskell: fWriteXml :: XmlContent a => FilePath -> a -> IO ()
- Text.XML.HaXml.XmlContent.Haskell: fpsHPutXml :: (XmlContent a) => Handle -> Bool -> a -> IO ()
+ Text.XML.HaXml.XmlContent.Haskell: fpsHPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()
- Text.XML.HaXml.XmlContent.Haskell: fpsShowXml :: (XmlContent a) => Bool -> a -> ByteString
+ Text.XML.HaXml.XmlContent.Haskell: fpsShowXml :: XmlContent a => Bool -> a -> ByteString
- Text.XML.HaXml.XmlContent.Haskell: fpsWriteXml :: (XmlContent a) => FilePath -> a -> IO ()
+ Text.XML.HaXml.XmlContent.Haskell: fpsWriteXml :: XmlContent a => FilePath -> a -> IO ()
- Text.XML.HaXml.XmlContent.Haskell: fromXml :: (XmlContent a) => Document Posn -> Either String a
+ Text.XML.HaXml.XmlContent.Haskell: fromXml :: XmlContent a => Document Posn -> Either String a
- Text.XML.HaXml.XmlContent.Haskell: hGetXml :: (XmlContent a) => Handle -> IO a
+ Text.XML.HaXml.XmlContent.Haskell: hGetXml :: XmlContent a => Handle -> IO a
- Text.XML.HaXml.XmlContent.Haskell: hPutXml :: (XmlContent a) => Handle -> Bool -> a -> IO ()
+ Text.XML.HaXml.XmlContent.Haskell: hPutXml :: XmlContent a => Handle -> Bool -> a -> IO ()
- Text.XML.HaXml.XmlContent.Haskell: readXml :: (XmlContent a) => String -> Either String a
+ Text.XML.HaXml.XmlContent.Haskell: readXml :: XmlContent a => String -> Either String a
- Text.XML.HaXml.XmlContent.Haskell: showXml :: (XmlContent a) => Bool -> a -> String
+ Text.XML.HaXml.XmlContent.Haskell: showXml :: XmlContent a => Bool -> a -> String
- Text.XML.HaXml.XmlContent.Haskell: toXml :: (XmlContent a) => Bool -> a -> Document ()
+ Text.XML.HaXml.XmlContent.Haskell: toXml :: XmlContent a => Bool -> a -> Document ()
- Text.XML.HaXml.XmlContent.Parser: attributes :: (XmlAttributes a) => Element Posn -> XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: attributes :: XmlAttributes a => Element Posn -> XMLParser a
- Text.XML.HaXml.XmlContent.Parser: attval :: (Read a) => Element i -> a
+ Text.XML.HaXml.XmlContent.Parser: attval :: Read a => Element i -> a
- Text.XML.HaXml.XmlContent.Parser: choice :: (XmlContent a) => (a -> b) -> XMLParser b -> XMLParser b
+ Text.XML.HaXml.XmlContent.Parser: choice :: XmlContent a => (a -> b) -> XMLParser b -> XMLParser b
- Text.XML.HaXml.XmlContent.Parser: class (HTypeable a) => XmlContent a
+ Text.XML.HaXml.XmlContent.Parser: class HTypeable a => XmlContent a
- Text.XML.HaXml.XmlContent.Parser: definite :: (XmlContent a) => XMLParser a -> String -> String -> XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: definite :: XmlContent a => XMLParser a -> String -> String -> XMLParser a
- Text.XML.HaXml.XmlContent.Parser: fromAttrToTyp :: (XmlAttrType a) => String -> Attribute -> Maybe a
+ Text.XML.HaXml.XmlContent.Parser: fromAttrToTyp :: XmlAttrType a => String -> Attribute -> Maybe a
- Text.XML.HaXml.XmlContent.Parser: fromAttrs :: (XmlAttributes a) => [Attribute] -> a
+ Text.XML.HaXml.XmlContent.Parser: fromAttrs :: XmlAttributes a => [Attribute] -> a
- Text.XML.HaXml.XmlContent.Parser: mkElem :: (XmlContent a) => a -> [Content ()] -> Content ()
+ Text.XML.HaXml.XmlContent.Parser: mkElem :: XmlContent a => a -> [Content ()] -> Content ()
- Text.XML.HaXml.XmlContent.Parser: parseContents :: (XmlContent a) => XMLParser a
+ Text.XML.HaXml.XmlContent.Parser: parseContents :: XmlContent a => XMLParser a
- Text.XML.HaXml.XmlContent.Parser: toAttrFrTyp :: (XmlAttrType a) => String -> a -> Maybe Attribute
+ Text.XML.HaXml.XmlContent.Parser: toAttrFrTyp :: XmlAttrType a => String -> a -> Maybe Attribute
- Text.XML.HaXml.XmlContent.Parser: toAttrs :: (XmlAttributes a) => a -> [Attribute]
+ Text.XML.HaXml.XmlContent.Parser: toAttrs :: XmlAttributes a => a -> [Attribute]
- Text.XML.HaXml.XmlContent.Parser: toContents :: (XmlContent a) => a -> [Content ()]
+ Text.XML.HaXml.XmlContent.Parser: toContents :: XmlContent a => a -> [Content ()]
- Text.XML.HaXml.XmlContent.Parser: xFromChar :: (XmlContent a) => Char -> a
+ Text.XML.HaXml.XmlContent.Parser: xFromChar :: XmlContent a => Char -> a
- Text.XML.HaXml.XmlContent.Parser: xToChar :: (XmlContent a) => a -> Char
+ Text.XML.HaXml.XmlContent.Parser: xToChar :: XmlContent a => a -> Char
Files
- HaXml.cabal +9/−2
- Makefile +2/−2
- configure +1/−1
- docs/HaXml/src/Text/XML/HaXml.html +37/−36
- docs/HaXml/src/Text/XML/HaXml/Wrappers.html +81/−72
- docs/changelog.html +2/−6
- docs/index.html +9/−4
- src/Makefile +1/−1
- src/Text/XML/HaXml.hs +2/−1
- src/Text/XML/HaXml/Wrappers.hs +9/−0
- src/tools/DtdToHaskell.hs +8/−0
- src/tools/MkOneOf.hs +9/−1
- src/tools/Xtract.hs +15/−9
- src/tools/XtractLazy.hs +17/−9
HaXml.cabal view
@@ -1,5 +1,5 @@ name: HaXml-version: 1.20.1+version: 1.20.2 license: LGPL license-file: COPYRIGHT author: Malcolm Wallace <Malcolm.Wallace@cs.york.ac.uk>@@ -62,47 +62,54 @@ else build-depends: base < 2 || >= 3, bytestring extensions: CPP, ExistentialQuantification- cpp-options: -DVERSION=1.20.1+ cpp-options: -DMYVERSION="1.20.2" nhc98-options: -K10M Executable Canonicalise GHC-Options: -Wall Extensions: CPP Hs-Source-Dirs: src/tools, src+ cpp-options: -DMYVERSION="1.20.2" Main-Is: Canonicalise.hs Executable CanonicaliseLazy GHC-Options: -Wall Extensions: CPP Hs-Source-Dirs: src/tools, src+ cpp-options: -DMYVERSION="1.20.2" Main-Is: CanonicaliseLazy.hs Executable Xtract GHC-Options: -Wall Extensions: CPP Hs-Source-Dirs: src/tools, src+ cpp-options: -DMYVERSION="1.20.2" Main-Is: Xtract.hs Executable XtractLazy GHC-Options: -Wall Extensions: CPP Hs-Source-Dirs: src/tools, src+ cpp-options: -DMYVERSION="1.20.2" Main-Is: XtractLazy.hs Executable Validate GHC-Options: -Wall Extensions: CPP Hs-Source-Dirs: src/tools, src+ cpp-options: -DMYVERSION="1.20.2" Main-Is: Validate.hs Executable MkOneOf GHC-Options: -Wall Extensions: CPP Hs-Source-Dirs: src/tools, src+ cpp-options: -DMYVERSION="1.20.2" Main-Is: MkOneOf.hs Executable DtdToHaskell GHC-Options: -Wall Extensions: CPP Hs-Source-Dirs: src/tools, src+ cpp-options: -DMYVERSION="1.20.2" Main-Is: DtdToHaskell.hs
Makefile view
@@ -1,5 +1,5 @@ SOFTWARE = HaXml-VERSION = 1.20.1+VERSION = 1.20.2 #CPP = cpp -traditional CPP = cpphs --text --noline # useful e.g. on MacOS X@@ -90,7 +90,7 @@ do mkdir -p docs/HaXml/src/$$dir; \ done for file in $(SRCS); \- do $(CPP) -D__NHC__=120 $$file >$$file.uncpp.hs; \+ do $(CPP) -D__NHC__=120 -DMYVERSION="\"$(VERSION)\"" $$file >$$file.uncpp.hs; \ HsColour -anchor -html $$file >docs/HaXml/`dirname $$file`/`basename $$file .hs`.html; \ done haddock --html --title=HaXml --odir=docs/HaXml \
configure view
@@ -2,7 +2,7 @@ # configure -- prepare to compile/install the HaXml package # author: Malcolm.Wallace@cs.york.ac.uk, August 2002 -VERSION="1.20.1"+VERSION="1.20.2" if [ -f obj/prefix ] then INSTALLDIR=`cat obj/prefix`
docs/HaXml/src/Text/XML/HaXml.html view
@@ -1,40 +1,41 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html>-<pre><a name="line-1"></a><font color=Magenta><em>#</em></font>define dummy <font color=Blue>-- just to ensure cpp gets called on this file</font>-<a name="line-2"></a><font color=Blue>-- | This is just a convenient way of bunching the XML combinators</font>-<a name="line-3"></a><font color=Blue>-- together with some other things you are likely to want at the</font>-<a name="line-4"></a><font color=Blue>-- same time.</font>-<a name="line-5"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml-<a name="line-6"></a> <font color=Cyan>(</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types-<a name="line-7"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators-<a name="line-8"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse-<a name="line-9"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty-<a name="line-10"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Generate-<a name="line-11"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse-<a name="line-12"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Validate-<a name="line-13"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers-<a name="line-14"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim-<a name="line-15"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Escape-<a name="line-16"></a> <font color=Cyan>,</font> render-<a name="line-17"></a> <font color=Cyan>,</font> version-<a name="line-18"></a> <font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-19"></a>-<a name="line-20"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types-<a name="line-21"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators-<a name="line-22"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse <font color=Cyan>(</font>xmlParse<font color=Cyan>,</font>dtdParse<font color=Cyan>)</font>-<a name="line-23"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Cyan>(</font>element<font color=Cyan>)</font>-<a name="line-24"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Generate-<a name="line-25"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse <font color=Cyan>(</font>htmlParse<font color=Cyan>)</font>-<a name="line-26"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Validate <font color=Cyan>(</font>validate<font color=Cyan>)</font>-<a name="line-27"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers <font color=Cyan>(</font>fix2Args<font color=Cyan>,</font>processXmlWith<font color=Cyan>)</font>-<a name="line-28"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim-<a name="line-29"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Escape-<a name="line-30"></a>-<a name="line-31"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>-<a name="line-32"></a>-<a name="line-33"></a><a name="version"></a><font color=Blue>-- | The version of the library.</font>-<a name="line-34"></a><font color=Blue>version</font> <font color=Red>::</font> String-<a name="line-35"></a><font color=Blue>version</font> <font color=Red>=</font> <font color=Magenta>"VERSION"</font>-<a name="line-36"></a> <font color=Blue>-- expect cpp to fill in value</font>+<pre><a name="line-1"></a><font color=Blue>{-# LANGUAGE CPP #-}</font>+<a name="line-2"></a><font color=Magenta><em>#define dummy -- just to ensure cpp gets called on this file</em></font>+<a name="line-3"></a><font color=Blue>-- | This is just a convenient way of bunching the XML combinators</font>+<a name="line-4"></a><font color=Blue>-- together with some other things you are likely to want at the</font>+<a name="line-5"></a><font color=Blue>-- same time.</font>+<a name="line-6"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml+<a name="line-7"></a> <font color=Cyan>(</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="line-8"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators+<a name="line-9"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse+<a name="line-10"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty+<a name="line-11"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Generate+<a name="line-12"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse+<a name="line-13"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Validate+<a name="line-14"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers+<a name="line-15"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim+<a name="line-16"></a> <font color=Cyan>,</font> <font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Escape+<a name="line-17"></a> <font color=Cyan>,</font> render+<a name="line-18"></a> <font color=Cyan>,</font> version+<a name="line-19"></a> <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-20"></a>+<a name="line-21"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types+<a name="line-22"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators+<a name="line-23"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse <font color=Cyan>(</font>xmlParse<font color=Cyan>,</font>dtdParse<font color=Cyan>)</font>+<a name="line-24"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Cyan>(</font>element<font color=Cyan>)</font>+<a name="line-25"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Generate+<a name="line-26"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse <font color=Cyan>(</font>htmlParse<font color=Cyan>)</font>+<a name="line-27"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Validate <font color=Cyan>(</font>validate<font color=Cyan>)</font>+<a name="line-28"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers <font color=Cyan>(</font>fix2Args<font color=Cyan>,</font>processXmlWith<font color=Cyan>)</font>+<a name="line-29"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Verbatim+<a name="line-30"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Escape+<a name="line-31"></a>+<a name="line-32"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="line-33"></a>+<a name="line-34"></a><a name="version"></a><font color=Blue>-- | The version of the library.</font>+<a name="line-35"></a><font color=Blue>version</font> <font color=Red>::</font> String+<a name="line-36"></a><font color=Blue>version</font> <font color=Red>=</font> MYVERSION+<a name="line-37"></a> <font color=Blue>-- expect cpp to fill in value</font> </pre> </html>
docs/HaXml/src/Text/XML/HaXml/Wrappers.html view
@@ -1,76 +1,85 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html>-<pre><a name="line-1"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers-<a name="line-2"></a> <font color=Cyan>(</font> fix2Args-<a name="line-3"></a> <font color=Cyan>,</font> processXmlWith-<a name="line-4"></a> <font color=Cyan>,</font> onContent-<a name="line-5"></a> <font color=Cyan>)</font> <font color=Green><u>where</u></font>-<a name="line-6"></a>-<a name="line-7"></a><font color=Blue>-- imports required for processXmlWith and fix2Args</font>-<a name="line-8"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>filter<font color=Cyan>)</font>-<a name="line-9"></a><font color=Green><u>import</u></font> System-<a name="line-10"></a><font color=Green><u>import</u></font> IO-<a name="line-11"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>isSuffixOf<font color=Cyan>)</font>-<a name="line-12"></a>-<a name="line-13"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types <font color=Cyan>(</font>Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font>Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>-<a name="line-14"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators <font color=Cyan>(</font>CFilter<font color=Cyan>)</font>-<a name="line-15"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn <font color=Cyan>(</font>Posn<font color=Cyan>,</font>posInNewCxt<font color=Cyan>)</font>-<a name="line-16"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>-<a name="line-17"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse <font color=Cyan>(</font>htmlParse<font color=Cyan>)</font>-<a name="line-18"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP<font color=Cyan>(</font>document<font color=Cyan>)</font>-<a name="line-19"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>-<a name="line-20"></a>-<a name="line-21"></a>-<a name="line-22"></a><a name="fix2Args"></a><font color=Blue>-- | This useful auxiliary checks the commandline arguments for two</font>-<a name="line-23"></a><font color=Blue>-- filenames, the input and output file respectively. If either</font>-<a name="line-24"></a><font color=Blue>-- is missing, it is replaced by '-', which can be interpreted by the</font>-<a name="line-25"></a><font color=Blue>-- caller as stdin and\/or stdout.</font>-<a name="line-26"></a><font color=Blue>fix2Args</font> <font color=Red>::</font> IO <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>-<a name="line-27"></a><font color=Blue>fix2Args</font> <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-28"></a> args <font color=Red><-</font> getArgs-<a name="line-29"></a> <font color=Green><u>case</u></font> length args <font color=Green><u>of</u></font>-<a name="line-30"></a> <font color=Magenta>0</font> <font color=Red>-></font> return <font color=Cyan>(</font><font color=Magenta>"-"</font><font color=Cyan>,</font> <font color=Magenta>"-"</font><font color=Cyan>)</font>-<a name="line-31"></a> <font color=Magenta>1</font> <font color=Red>-></font> return <font color=Cyan>(</font>args<font color=Cyan>!!</font><font color=Magenta>0</font><font color=Cyan>,</font> <font color=Magenta>"-"</font><font color=Cyan>)</font>-<a name="line-32"></a> <font color=Magenta>2</font> <font color=Red>-></font> return <font color=Cyan>(</font>args<font color=Cyan>!!</font><font color=Magenta>0</font><font color=Cyan>,</font> args<font color=Cyan>!!</font><font color=Magenta>1</font><font color=Cyan>)</font>-<a name="line-33"></a> <font color=Green><u>_</u></font> <font color=Red>-></font> <font color=Green><u>do</u></font> prog <font color=Red><-</font> getProgName-<a name="line-34"></a> putStrLn <font color=Cyan>(</font><font color=Magenta>"Usage: "</font><font color=Cyan>++</font>prog<font color=Cyan>++</font><font color=Magenta>" [infile] [outfile]"</font><font color=Cyan>)</font>-<a name="line-35"></a> exitFailure-<a name="line-36"></a>-<a name="line-37"></a>-<a name="line-38"></a><a name="processXmlWith"></a><font color=Blue>-- | The wrapper @processXmlWith@ returns an IO () computation</font>-<a name="line-39"></a><font color=Blue>-- that collects the filenames (or stdin\/stdout) to use when</font>-<a name="line-40"></a><font color=Blue>-- reading\/writing XML documents. Its CFilter argument</font>-<a name="line-41"></a><font color=Blue>-- is applied to transform the XML document from the input and</font>-<a name="line-42"></a><font color=Blue>-- write it to the output. No DTD is attached to the output.</font>-<a name="line-43"></a><font color=Blue>--</font>-<a name="line-44"></a><font color=Blue>-- If the input filename ends with .html or .htm, it is parsed using</font>-<a name="line-45"></a><font color=Blue>-- the error-correcting HTML parser rather than the strict XML parser.</font>-<a name="line-46"></a><font color=Blue>processXmlWith</font> <font color=Red>::</font> CFilter Posn <font color=Red>-></font> IO ()-<a name="line-47"></a><font color=Blue>processXmlWith</font> f <font color=Red>=</font> <font color=Green><u>do</u></font>-<a name="line-48"></a> <font color=Cyan>(</font>inf<font color=Cyan>,</font>outf<font color=Cyan>)</font> <font color=Red><-</font> fix2Args-<a name="line-49"></a> input <font color=Red><-</font> <font color=Green><u>if</u></font> inf<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> getContents <font color=Green><u>else</u></font> readFile inf-<a name="line-50"></a> o <font color=Red><-</font> <font color=Green><u>if</u></font> outf<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout <font color=Green><u>else</u></font> openFile outf WriteMode-<a name="line-51"></a> parse <font color=Red><-</font> <font color=Green><u>if</u></font> <font color=Magenta>".html"</font> <font color=Cyan>`isSuffixOf`</font> inf <font color=Cyan>||</font> <font color=Magenta>".htm"</font> <font color=Cyan>`isSuffixOf`</font> inf-<a name="line-52"></a> <font color=Green><u>then</u></font> return <font color=Cyan>(</font>htmlParse inf<font color=Cyan>)</font>-<a name="line-53"></a> <font color=Green><u>else</u></font> return <font color=Cyan>(</font>xmlParse inf<font color=Cyan>)</font>-<a name="line-54"></a> <font color=Cyan>(</font> hPutStrLn o <font color=Cyan>.</font> render <font color=Cyan>.</font> PP<font color=Cyan>.</font>document <font color=Cyan>.</font> onContent inf f <font color=Cyan>.</font> parse <font color=Cyan>)</font> input-<a name="line-55"></a> hFlush o-<a name="line-56"></a>-<a name="line-57"></a> <font color=Green><u>where</u></font>-<a name="line-58"></a> onContent <font color=Red>::</font> FilePath <font color=Red>-></font> <font color=Cyan>(</font>CFilter Posn<font color=Cyan>)</font> <font color=Red>-></font> Document Posn <font color=Red>-></font> Document Posn-<a name="line-59"></a> onContent file filter <font color=Cyan>(</font>Document p s e m<font color=Cyan>)</font> <font color=Red>=</font>-<a name="line-60"></a> <font color=Green><u>case</u></font> filter <font color=Cyan>(</font>CElem e <font color=Cyan>(</font>posInNewCxt file Nothing<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Green><u>of</u></font>-<a name="line-61"></a> <font color=Red>[</font>CElem e' <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-></font> Document p s e' m-<a name="line-62"></a> [] <font color=Red>-></font> error <font color=Magenta>"produced no output"</font>-<a name="line-63"></a> <font color=Green><u>_</u></font> <font color=Red>-></font> error <font color=Magenta>"produced more than one output"</font>-<a name="line-64"></a>-<a name="line-65"></a><a name="onContent"></a><font color=Blue>-- | The wrapper @onContent@ simply applies a given content filter to a</font>-<a name="line-66"></a><font color=Blue>-- document. Ambiguous or empty results raise an error exception.</font>-<a name="line-67"></a><font color=Blue>onContent</font> <font color=Red>::</font> CFilter i <font color=Red>-></font> Document i <font color=Red>-></font> Document i-<a name="line-68"></a><font color=Blue>onContent</font> filter <font color=Cyan>(</font>Document p s e m<font color=Cyan>)</font> <font color=Red>=</font>-<a name="line-69"></a> <font color=Green><u>case</u></font> filter <font color=Cyan>(</font>CElem e undefined<font color=Cyan>)</font> <font color=Green><u>of</u></font>-<a name="line-70"></a> <font color=Red>[</font>CElem e' <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-></font> Document p s e' m-<a name="line-71"></a> [] <font color=Red>-></font> error <font color=Magenta>"onContent: produced no output"</font>-<a name="line-72"></a> <font color=Green><u>_</u></font> <font color=Red>-></font> error <font color=Magenta>"onContent: produced more than one output"</font>+<pre><a name="line-1"></a><font color=Blue>{-# LANGUAGE CPP #-}</font>+<a name="line-2"></a><font color=Magenta><em>#define dummy -- just to ensure that cpp gets called on this file</em></font>+<a name="line-3"></a><font color=Green><u>module</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Wrappers+<a name="line-4"></a> <font color=Cyan>(</font> fix2Args+<a name="line-5"></a> <font color=Cyan>,</font> processXmlWith+<a name="line-6"></a> <font color=Cyan>,</font> onContent+<a name="line-7"></a> <font color=Cyan>)</font> <font color=Green><u>where</u></font>+<a name="line-8"></a>+<a name="line-9"></a><font color=Blue>-- imports required for processXmlWith and fix2Args</font>+<a name="line-10"></a><font color=Green><u>import</u></font> Prelude hiding <font color=Cyan>(</font>filter<font color=Cyan>)</font>+<a name="line-11"></a><font color=Green><u>import</u></font> System+<a name="line-12"></a><font color=Green><u>import</u></font> IO+<a name="line-13"></a><font color=Green><u>import</u></font> List <font color=Cyan>(</font>isSuffixOf<font color=Cyan>)</font>+<a name="line-14"></a><font color=Green><u>import</u></font> Control<font color=Cyan>.</font>Monad <font color=Cyan>(</font>when<font color=Cyan>)</font>+<a name="line-15"></a>+<a name="line-16"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Types <font color=Cyan>(</font>Document<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>,</font>Content<font color=Cyan>(</font><font color=Red>..</font><font color=Cyan>)</font><font color=Cyan>)</font>+<a name="line-17"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Combinators <font color=Cyan>(</font>CFilter<font color=Cyan>)</font>+<a name="line-18"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Posn <font color=Cyan>(</font>Posn<font color=Cyan>,</font>posInNewCxt<font color=Cyan>)</font>+<a name="line-19"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Parse <font color=Cyan>(</font>xmlParse<font color=Cyan>)</font>+<a name="line-20"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Html<font color=Cyan>.</font>Parse <font color=Cyan>(</font>htmlParse<font color=Cyan>)</font>+<a name="line-21"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>XML<font color=Cyan>.</font>HaXml<font color=Cyan>.</font>Pretty <font color=Green><u>as</u></font> PP<font color=Cyan>(</font>document<font color=Cyan>)</font>+<a name="line-22"></a><font color=Green><u>import</u></font> Text<font color=Cyan>.</font>PrettyPrint<font color=Cyan>.</font>HughesPJ <font color=Cyan>(</font>render<font color=Cyan>)</font>+<a name="line-23"></a>+<a name="line-24"></a>+<a name="line-25"></a><a name="fix2Args"></a><font color=Blue>-- | This useful auxiliary checks the commandline arguments for two</font>+<a name="line-26"></a><font color=Blue>-- filenames, the input and output file respectively. If either</font>+<a name="line-27"></a><font color=Blue>-- is missing, it is replaced by '-', which can be interpreted by the</font>+<a name="line-28"></a><font color=Blue>-- caller as stdin and\/or stdout.</font>+<a name="line-29"></a><font color=Blue>fix2Args</font> <font color=Red>::</font> IO <font color=Cyan>(</font>String<font color=Cyan>,</font>String<font color=Cyan>)</font>+<a name="line-30"></a><font color=Blue>fix2Args</font> <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-31"></a> args <font color=Red><-</font> getArgs+<a name="line-32"></a> when <font color=Cyan>(</font><font color=Magenta>"--version"</font> <font color=Cyan>`elem`</font> args<font color=Cyan>)</font> <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="line-33"></a> putStrLn <font color=Cyan>$</font> <font color=Magenta>"part of HaXml-"</font><font color=Cyan>++</font>MYVERSION+<a name="line-34"></a> exitWith ExitSuccess+<a name="line-35"></a> when <font color=Cyan>(</font><font color=Magenta>"--help"</font> <font color=Cyan>`elem`</font> args<font color=Cyan>)</font> <font color=Cyan>$</font> <font color=Green><u>do</u></font>+<a name="line-36"></a> putStrLn <font color=Cyan>$</font> <font color=Magenta>"See http://haskell.org/HaXml"</font>+<a name="line-37"></a> exitWith ExitSuccess+<a name="line-38"></a> <font color=Green><u>case</u></font> length args <font color=Green><u>of</u></font>+<a name="line-39"></a> <font color=Magenta>0</font> <font color=Red>-></font> return <font color=Cyan>(</font><font color=Magenta>"-"</font><font color=Cyan>,</font> <font color=Magenta>"-"</font><font color=Cyan>)</font>+<a name="line-40"></a> <font color=Magenta>1</font> <font color=Red>-></font> return <font color=Cyan>(</font>args<font color=Cyan>!!</font><font color=Magenta>0</font><font color=Cyan>,</font> <font color=Magenta>"-"</font><font color=Cyan>)</font>+<a name="line-41"></a> <font color=Magenta>2</font> <font color=Red>-></font> return <font color=Cyan>(</font>args<font color=Cyan>!!</font><font color=Magenta>0</font><font color=Cyan>,</font> args<font color=Cyan>!!</font><font color=Magenta>1</font><font color=Cyan>)</font>+<a name="line-42"></a> <font color=Green><u>_</u></font> <font color=Red>-></font> <font color=Green><u>do</u></font> prog <font color=Red><-</font> getProgName+<a name="line-43"></a> putStrLn <font color=Cyan>(</font><font color=Magenta>"Usage: "</font><font color=Cyan>++</font>prog<font color=Cyan>++</font><font color=Magenta>" [infile] [outfile]"</font><font color=Cyan>)</font>+<a name="line-44"></a> exitFailure+<a name="line-45"></a>+<a name="line-46"></a>+<a name="line-47"></a><a name="processXmlWith"></a><font color=Blue>-- | The wrapper @processXmlWith@ returns an IO () computation</font>+<a name="line-48"></a><font color=Blue>-- that collects the filenames (or stdin\/stdout) to use when</font>+<a name="line-49"></a><font color=Blue>-- reading\/writing XML documents. Its CFilter argument</font>+<a name="line-50"></a><font color=Blue>-- is applied to transform the XML document from the input and</font>+<a name="line-51"></a><font color=Blue>-- write it to the output. No DTD is attached to the output.</font>+<a name="line-52"></a><font color=Blue>--</font>+<a name="line-53"></a><font color=Blue>-- If the input filename ends with .html or .htm, it is parsed using</font>+<a name="line-54"></a><font color=Blue>-- the error-correcting HTML parser rather than the strict XML parser.</font>+<a name="line-55"></a><font color=Blue>processXmlWith</font> <font color=Red>::</font> CFilter Posn <font color=Red>-></font> IO ()+<a name="line-56"></a><font color=Blue>processXmlWith</font> f <font color=Red>=</font> <font color=Green><u>do</u></font>+<a name="line-57"></a> <font color=Cyan>(</font>inf<font color=Cyan>,</font>outf<font color=Cyan>)</font> <font color=Red><-</font> fix2Args+<a name="line-58"></a> input <font color=Red><-</font> <font color=Green><u>if</u></font> inf<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> getContents <font color=Green><u>else</u></font> readFile inf+<a name="line-59"></a> o <font color=Red><-</font> <font color=Green><u>if</u></font> outf<font color=Cyan>==</font><font color=Magenta>"-"</font> <font color=Green><u>then</u></font> return stdout <font color=Green><u>else</u></font> openFile outf WriteMode+<a name="line-60"></a> parse <font color=Red><-</font> <font color=Green><u>if</u></font> <font color=Magenta>".html"</font> <font color=Cyan>`isSuffixOf`</font> inf <font color=Cyan>||</font> <font color=Magenta>".htm"</font> <font color=Cyan>`isSuffixOf`</font> inf+<a name="line-61"></a> <font color=Green><u>then</u></font> return <font color=Cyan>(</font>htmlParse inf<font color=Cyan>)</font>+<a name="line-62"></a> <font color=Green><u>else</u></font> return <font color=Cyan>(</font>xmlParse inf<font color=Cyan>)</font>+<a name="line-63"></a> <font color=Cyan>(</font> hPutStrLn o <font color=Cyan>.</font> render <font color=Cyan>.</font> PP<font color=Cyan>.</font>document <font color=Cyan>.</font> onContent inf f <font color=Cyan>.</font> parse <font color=Cyan>)</font> input+<a name="line-64"></a> hFlush o+<a name="line-65"></a>+<a name="line-66"></a> <font color=Green><u>where</u></font>+<a name="line-67"></a> onContent <font color=Red>::</font> FilePath <font color=Red>-></font> <font color=Cyan>(</font>CFilter Posn<font color=Cyan>)</font> <font color=Red>-></font> Document Posn <font color=Red>-></font> Document Posn+<a name="line-68"></a> onContent file filter <font color=Cyan>(</font>Document p s e m<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-69"></a> <font color=Green><u>case</u></font> filter <font color=Cyan>(</font>CElem e <font color=Cyan>(</font>posInNewCxt file Nothing<font color=Cyan>)</font><font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="line-70"></a> <font color=Red>[</font>CElem e' <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-></font> Document p s e' m+<a name="line-71"></a> [] <font color=Red>-></font> error <font color=Magenta>"produced no output"</font>+<a name="line-72"></a> <font color=Green><u>_</u></font> <font color=Red>-></font> error <font color=Magenta>"produced more than one output"</font>+<a name="line-73"></a>+<a name="line-74"></a><a name="onContent"></a><font color=Blue>-- | The wrapper @onContent@ simply applies a given content filter to a</font>+<a name="line-75"></a><font color=Blue>-- document. Ambiguous or empty results raise an error exception.</font>+<a name="line-76"></a><font color=Blue>onContent</font> <font color=Red>::</font> CFilter i <font color=Red>-></font> Document i <font color=Red>-></font> Document i+<a name="line-77"></a><font color=Blue>onContent</font> filter <font color=Cyan>(</font>Document p s e m<font color=Cyan>)</font> <font color=Red>=</font>+<a name="line-78"></a> <font color=Green><u>case</u></font> filter <font color=Cyan>(</font>CElem e undefined<font color=Cyan>)</font> <font color=Green><u>of</u></font>+<a name="line-79"></a> <font color=Red>[</font>CElem e' <font color=Green><u>_</u></font><font color=Red>]</font> <font color=Red>-></font> Document p s e' m+<a name="line-80"></a> [] <font color=Red>-></font> error <font color=Magenta>"onContent: produced no output"</font>+<a name="line-81"></a> <font color=Green><u>_</u></font> <font color=Red>-></font> error <font color=Magenta>"onContent: produced more than one output"</font> </pre> </html>
docs/changelog.html view
@@ -13,12 +13,6 @@ </center> <hr> -<h3>Changes in 1.20.1</h3>-<p>-<ul>-<li> Fixes a stack-overflow in code generated by DtdToHaskell.-</ul>- <h3>Changes in 1.20</h3> <p> <ul>@@ -26,6 +20,8 @@ <li> Fixes a runtime-crash bug in Xtract. <li> Fiddles with the pretty-printing to make it more correct on mixed text and references (e.g. character escapes).+<li> 1.20.1 fixes a stack-overflow in code generated by DtdToHaskell.+<li> 1.20.2 adds a --version and --help argument to all executables. </ul> <h3>Changes in 1.19</h3>
docs/index.html view
@@ -131,11 +131,11 @@ <center><h3><a name="download">Downloads</a></h3></center> <p> <b>Latest version:</b><br>-HaXml-1.20.1, release date 2010.01.13<br>+HaXml-1.20.2, release date 2010.01.14<br> From <a href="http://hackage.haskell.org/package/HaXml">Hackage</a><br> By HTTP:-<a href="HaXml-1.20.1.tar.gz">.tar.gz</a>,-<a href="HaXml-1.20.1.zip">.zip</a>.+<a href="HaXml-1.20.2.tar.gz">.tar.gz</a>,+<a href="HaXml-1.20.2.zip">.zip</a>. <br> By FTP: <a href="ftp://ftp.cs.york.ac.uk/pub/haskell/HaXml/">@@ -158,10 +158,14 @@ Then, for more recent compilers, use the standard Cabal method of installation: <pre>- cabal install HaXml-1.20.1+ cabal install HaXml </pre> or <pre>+ cabal install HaXml-1.20.2+</pre>+or+<pre> runhaskell Setup.hs configure [--prefix=...] [--buildwith=...] runhaskell Setup.hs build runhaskell Setup.hs install@@ -192,6 +196,7 @@ <center><h3><a name="news">Recent news</a></h3></center> <p>+Version 1.20.2 adds --version and --help arguments to all executables.<br> Version 1.20.1 fixes a small bug in DtdToHaskell.<br> Version 1.20 is the new stable version.<br>
src/Makefile view
@@ -1,5 +1,5 @@ SOFTWARE = HaXml-VERSION = 1.20.1+VERSION = 1.20.2 LIBSRCS = \ Text/XML/HaXml.hs Text/XML/HaXml/Combinators.hs Text/XML/HaXml/Lex.hs \
src/Text/XML/HaXml.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} #define dummy -- just to ensure cpp gets called on this file -- | This is just a convenient way of bunching the XML combinators -- together with some other things you are likely to want at the@@ -32,5 +33,5 @@ -- | The version of the library. version :: String-version = "VERSION"+version = MYVERSION -- expect cpp to fill in value
src/Text/XML/HaXml/Wrappers.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+#define dummy -- just to ensure that cpp gets called on this file module Text.XML.HaXml.Wrappers ( fix2Args , processXmlWith@@ -9,6 +11,7 @@ import System import IO import List (isSuffixOf)+import Control.Monad (when) import Text.XML.HaXml.Types (Document(..),Content(..)) import Text.XML.HaXml.Combinators (CFilter)@@ -26,6 +29,12 @@ fix2Args :: IO (String,String) fix2Args = do args <- getArgs+ when ("--version" `elem` args) $ do+ putStrLn $ "part of HaXml-"++MYVERSION+ exitWith ExitSuccess+ when ("--help" `elem` args) $ do+ putStrLn $ "See http://haskell.org/HaXml"+ exitWith ExitSuccess case length args of 0 -> return ("-", "-") 1 -> return (args!!0, "-")
src/tools/DtdToHaskell.hs view
@@ -9,8 +9,10 @@ import System import IO import List (nub,takeWhile,dropWhile)+import Control.Monad --import Text.XML.HaXml.Wrappers (fix2Args)+import Text.XML.HaXml (version) import Text.XML.HaXml.Types (DocTypeDecl(..)) import Text.XML.HaXml.Parse (dtdParse) import Text.XML.HaXml.DtdToHaskell.TypeDef (TypeDef,ppTypeDef,mangle)@@ -22,6 +24,12 @@ fix2Args :: IO (String,String) fix2Args = do args <- getArgs+ when ("--version" `elem` args) $ do+ putStrLn $ "part of HaXml-"++version+ exitWith ExitSuccess+ when ("--help" `elem` args) $ do+ putStrLn $ "See http://haskell.org/HaXml"+ exitWith ExitSuccess case length args of 0 -> return ("-", "-") 1 -> return (args!!0, "-")
src/tools/MkOneOf.hs view
@@ -1,13 +1,21 @@ module Main where import Prelude hiding (max)-import System (getArgs)+import System (getArgs,exitWith,ExitCode(..)) import Char (isDigit) import IO (hFlush,stdout)+import Control.Monad (when)+import Text.XML.HaXml (version) main :: IO () main = do args <- getArgs+ when ("--version" `elem` args) $ do+ putStrLn $ "part of HaXml-"++version+ exitWith ExitSuccess+ when ("--help" `elem` args) $ do+ putStrLn $ "See http://haskell.org/HaXml"+ exitWith ExitSuccess case length args of 1 -> do n <- saferead (head args) putStrLn ("module Text.XML.HaXml."++constructor 1 n++" where\n")
src/tools/Xtract.hs view
@@ -6,7 +6,9 @@ import IO import Char (toLower) import List (isSuffixOf)+import Control.Monad(when) +import Text.XML.HaXml (version) import Text.XML.HaXml.Types import Text.XML.HaXml.Posn (posInNewCxt) import Text.XML.HaXml.Parse (xmlParse)@@ -22,13 +24,18 @@ escape = xmlEscapeContent stdXmlEscaper main :: IO ()-main =- getArgs >>= \args->- if length args < 1 then- putStrLn "Usage: Xtract [-n] <pattern> [xmlfile ...]" >>- exitWith (ExitFailure 1)- else- let (pattern,files,esc) =+main = do+ args <- getArgs+ when ("--version" `elem` args) $ do+ putStrLn $ "part of HaXml-"++version+ exitWith ExitSuccess+ when ("--help" `elem` args) $ do+ putStrLn $ "See http://haskell.org/HaXml"+ exitWith ExitSuccess+ when (length args < 1) $ do+ putStrLn "Usage: Xtract [-n] <pattern> [xmlfile ...]"+ exitWith (ExitFailure 1)+ let (pattern,files,esc) = case args of ("-n":pat:files) -> (pat,files, (:[])) (pat:"-n":files) -> (pat,files, (:[])) (pat:files) -> (pat,files, escape.(:[]))@@ -38,11 +45,10 @@ -- return ((if isHTML x -- then htmlParse x else xmlParse x) c)) -- files- in -- findcontents >>= \cs-> -- ( hPutStrLn stdout . render . vcat -- . map (vcat . map content . selection . docContent)) cs- mapM_ (\x-> do c <- (if x=="-" then getContents else readFile x)+ mapM_ (\x-> do c <- (if x=="-" then getContents else readFile x) ( if isHTML x then hPutStrLn stdout . render . htmlprint . xtract (map toLower) pattern
src/tools/XtractLazy.hs view
@@ -6,7 +6,9 @@ import IO import Char (toLower) import List (isSuffixOf)+import Control.Monad(when) +import Text.XML.HaXml (version) import Text.XML.HaXml.Types import Text.XML.HaXml.Posn (posInNewCxt,Posn) import Text.XML.HaXml.ParseLazy (xmlParse)@@ -21,13 +23,20 @@ escape = xmlEscapeContent stdXmlEscaper main :: IO ()-main =- getArgs >>= \args->- if length args < 1 then- putStrLn "Usage: Xtract [-n] <pattern> [xmlfile ...]" >>- exitWith (ExitFailure 1)- else- let (pattern,files,esc) =+main = do+ args <- getArgs+ when ("--version" `elem` args) $ do+ putStrLn $ "part of HaXml-"++version+ exitWith ExitSuccess+ when ("--help" `elem` args) $ do+ putStrLn $ "See http://haskell.org/HaXml"+ exitWith ExitSuccess++ when (length args < 1) $ do+ putStrLn "Usage: Xtract [-n] <pattern> [xmlfile ...]"+ exitWith (ExitFailure 1)++ let (pattern,files,esc) = case args of ("-n":pat:files) -> (pat,files, (:[])) (pat:"-n":files) -> (pat,files, (:[])) (pat:files) -> (pat,files, escape.(:[]))@@ -37,11 +46,10 @@ -- return ((if isHTML x -- then htmlParse x else xmlParse x) c)) -- files- in -- findcontents >>= \cs-> -- ( hPutStrLn stdout . render . vcat -- . map (vcat . map content . selection . getElem)) cs- mapM_ (\x-> do c <- (if x=="-" then getContents else readFile x)+ mapM_ (\x-> do c <- (if x=="-" then getContents else readFile x) ( if isHTML x then hPutStrLn stdout . render . htmlprint . xtract (map toLower) pattern