[[project @ 2002-12-16 22:32:30 by as49]
as49**20021216223231
Documentation update.
] {
adddir ./doc
addfile ./doc/Makefile
addfile ./doc/gtk2hs.xml
addfile ./doc/mogul.xml
hunk ./ChangeLog 2
+
+ * gendoc/PrettyLib.hs: convert from PackedString to normal String
+
+ * gendoc/Update.hs, gendoc/XMLwrite.hs: add hyperlinks between
+ from synopsis and tried to link arguments to types.
+
+ * doc/Makefile doc/gtk2hs.xml doc/mogul.xml: Added documentation.
hunk ./doc/Makefile 1
+TOP = ..
+HERE = doc/
+
+include $(TOP)/mk/config.mk
+
+EMPTY =
+SPACE = $(EMPTY) $(EMPTY)
+
+GENDOC = gendoc/gendoc
+
+SUBDIRS_GTK = gtk/abstract gtk/buttons gtk/display gtk/ gtk/embedding \
+ gtk/entry gtk/general gtk/layout gtk/menuComboToolbar \
+ gtk/misc gtk/multiline gtk/ornaments gtk/scrolling \
+ gtk/treeList gtk/windows gtk/gdk gtk/glib gtk/pango \
+ compat
+
+SUBDIRS_MOGUL = mogul $(SUBDIRS_GTK)
+
+TOPLEVEL_GTK = Gtk.hs
+
+TOPLEVEL_MOGUL = Mogul.hs
+
+EXCLUDE_GTK = Foreign Monad LocalData Exception IORef LocalControl \
+ Bits UTFCForeign Signal Char Maybe Prelude System
+
+EXCLUDE_MOGUL = $(EXCLUDE_GTK)
+
+OUTPUT_GTK = referenceGTK.xml
+
+OUTPUT_MOGUL = referenceMOGUL.xml
+
+OPTIONS_GTK =
+
+OPTIONS_MOGUL =
+
+OUTPUT_FO_GTK = gtk2hs.fo
+
+OUTPUT_FO_MOGUL = mogul.fo
+
+INPUT_GTK = gtk2hs.xml
+
+INPUT_MOGUL = mogul.xml
+
+.PRECIOUS: $(OUTPUT_GTK) $(OUTPUT_MOGUL)
+
+reference%.xml : $(TOP)/$(GENDOC)
+ $(strip $(TOP)/$(GENDOC) -o $(OUTPUT_$*) \
+ -I$(subst $(SPACE),:,$(strip $(addprefix $(TOP)/,$(SUBDIRS_$*)))) \
+ $(addprefix -x,$(EXCLUDE_$*)) $(OPTIONS_$*) $(TOPLEVEL_$*))
+
+html% : $(OUTPUT_GTK) $(OUTPUT_MOGUL)
+ $(strip SGML_CATALOG_FILES=$(CATALOGS) $(XSLTPROC) --catalogs \
+ -nonet $(XSLTHTML) $(INPUT_$*))
+ mv *.html $*
+
+fo% : $(OUTPUT_$*)
+ $(strip SGML_CATALOG_FILES=$(CATALOGS) $(XSLTPROC) --catalogs \
+ -o $(OUTPUT_$*) -nonet $(XSLTFO) $(INPUT_$*))
+ mv *.fo $*
+
+.PHONY: $(TOP)/$(GENDOC)
+
+$(TOP)/$(GENDOC) :
+ $(MAKE) -C $(TOP)/$(dir $(GENDOC))
+
+all : htmlGTK htmlMOGUL
+
+
hunk ./doc/gtk2hs.xml 1
+
+
+]>
+
+The Haskell Gtk Implementor's Reference
+Gtk - Haskell API
+ &refGTK;
+
+
hunk ./doc/mogul.xml 1
+
+
+]>
+
+
+
+ A Haskell binding for the Gimp Toolkit
+ AxelSimon
+ 2002Axel Simon
+
+
+GUI Elements
+
+Trees and Lists
+
+
+
+Representing nested structures
+
+
+
+
+
+
+
+
+
+
+
+Beyond Widgets
+Internationalization
+
+
+
+
+
+Reference
+The Mogul API
+
+&refMOGUL;
+
+
+
+
+
hunk ./gendoc/PrettyLib.hs 27
-import Data.PackedString
-
hunk ./gendoc/PrettyLib.hs 38
-text :: PackedString -> Doc
+text :: String -> Doc
hunk ./gendoc/PrettyLib.hs 41
-ptext :: String -> Doc
-ptext = TEXT . packString
-
hunk ./gendoc/PrettyLib.hs 73
-doubleQuotes s = ptext ('"' : s ++ "\"")
+doubleQuotes s = text ('"' : s ++ "\"")
hunk ./gendoc/PrettyLib.hs 76
-parens doc = ptext "(" <> doc <> ptext ")"
+parens doc = text "(" <> doc <> text ")"
hunk ./gendoc/PrettyLib.hs 79
-brackets doc = ptext "[" <> doc <> ptext "]"
+brackets doc = text "[" <> doc <> text "]"
hunk ./gendoc/PrettyLib.hs 82
-braces doc = ptext "{" <> doc <> ptext "}"
+braces doc = text "{" <> doc <> text "}"
hunk ./gendoc/PrettyLib.hs 85
-string s = ptext ('\"' : s ++ "\"")
+string s = text ('\"' : s ++ "\"")
hunk ./gendoc/PrettyLib.hs 100
- | TEXT PackedString | DELIMITER String | FDELIMITER String | LINE
+ | TEXT String | DELIMITER String | FDELIMITER String | LINE
hunk ./gendoc/PrettyLib.hs 138
- go i (TEXT s) rest = Text (unpackPS s) (lengthPS s) : rest
+ go i (TEXT s) rest = Text s (length s) : rest
hunk ./gendoc/Update.hs 93
- modSymTab=addToFM st fun (si { symArgs=merge pats args }) })
+ modSymTab=addToFM st fun (si { symArgs=zipWith (:) pats
+ (if args==[] then repeat [] else args) }) })
hunk ./gendoc/Update.hs 96
- where
+
+{- where
hunk ./gendoc/Update.hs 105
+-}
hunk ./gendoc/XMLwrite.hs 6
+import Maybe (fromMaybe)
+import List (transpose)
hunk ./gendoc/XMLwrite.hs 20
-type Value = PackedString
+type Value = String
hunk ./gendoc/XMLwrite.hs 29
- value :: Value }
+ value :: String }
hunk ./gendoc/XMLwrite.hs 32
--- deriving Show
+-- Escape characters in plain text.
+--
+escape ('<':xs) = '&':'l':'t':';':escape xs
+escape ('>':xs) = '&':'g':'t':';':escape xs
+escape ('"':xs) = '&':'q':'u':'o':'t':';':escape xs
+escape ('[':xs) = '&':'l':'s':'q':'b':';':escape xs
+escape (']':xs) = '&':'r':'s':'q':'b':';':escape xs
+escape (x:xs) = x:escape xs
+escape [] = []
+
hunk ./gendoc/XMLwrite.hs 49
-
hunk ./gendoc/XMLwrite.hs 51
-xmlToDoc (Plain value) = text value
+xmlToDoc (Plain value) = text (escape value)
hunk ./gendoc/XMLwrite.hs 54
- lStart <> text (packString name) <>
+ lStart <> text name <>
hunk ./gendoc/XMLwrite.hs 60
- lStart <> text (packString name) <>
+ lStart <> text name <>
hunk ./gendoc/XMLwrite.hs 69
- lStop <> text (packString name) <> rStart
+ lStop <> text name <> rStart
hunk ./gendoc/XMLwrite.hs 76
-attrToDoc (Attribute name val) = text (packString name) <> equals <>
+attrToDoc (Attribute name val) = text name <> equals <>
hunk ./gendoc/XMLwrite.hs 80
-lStart = text (packString "<")
-lStop = text (packString "")
-rStart = text (packString ">")
-rStop = text (packString "/>")
-equals = text (packString "=")
+lStart = text "<"
+lStop = text ""
+rStart = text ">"
+rStop = text "/>"
+equals = text "="
hunk ./gendoc/XMLwrite.hs 89
- q = text (packString "\"")
+ q = text "\""
hunk ./gendoc/XMLwrite.hs 99
- Element "function" [] [Plain (packString "textViewNewWithAttributes")],
+ Element "function" [] [Plain "textViewNewWithAttributes"],
hunk ./gendoc/XMLwrite.hs 101
- Element "hatycon" [] [Plain (packString "Int")],
- Element "hatyvar" [] [Plain (packString "cr")]]]
+ Element "hatycon" [] [Plain "Int"],
+ Element "hatyvar" [] [Plain "cr"]]]
hunk ./gendoc/XMLwrite.hs 107
-hTypeToXML (TyCon con) = Element "hatycon" [] [Plain con]
-hTypeToXML (TyVar var) = Element "hatyvar" [] [Plain var]
+hTypeToXML (TyCon con) = Element "hatycon" [] [Plain (unpackPS con)]
+hTypeToXML (TyVar var) = Element "hatyvar" [] [Plain (unpackPS var)]
hunk ./gendoc/XMLwrite.hs 125
- dTX (Words ws:ds) = (concatMap (\x -> [Plain x,WhiteSpace]) ws)++dTX ds
- dTX (RefArg var fol:ds) = Element "emphasis" [] [Plain var]:
- (if nullPS fol then id else (Plain fol:))
- (WhiteSpace:dTX ds)
- dTX (RefSym _ var fol:ds) = Element "emphasis" [] [Plain var]:
- (if nullPS fol then id else (Plain fol:))
- (WhiteSpace:dTX ds)
- dTX (RefTyp _ var fol:ds) = Element "emphasis" [] [Plain var]:
- (if nullPS fol then id else (Plain fol:))
- (WhiteSpace:dTX ds)
- dTX (RefVariant var fol:ds) = Element "emphasis" [] [Plain var]:
- (if nullPS fol then id else (Plain fol:))
- (WhiteSpace:dTX ds)
- dTX (Verb str fol:ds) = Element "programlisting" [] [Plain str]:
- (if nullPS fol then id else (Plain fol:))
- (WhiteSpace:dTX ds)
+ dTX (Words ws:ds) =
+ (concatMap (\x -> [Plain (unpackPS x),WhiteSpace]) ws)++dTX ds
+ dTX (RefArg var fol:ds) = Element "emphasis" [] [Plain (unpackPS var)]:
+ (if nullPS fol then id else (Plain (unpackPS fol):)) (WhiteSpace:dTX ds)
+ dTX (RefSym _ var fol:ds) = Element "emphasis" [] [Plain (unpackPS var)]:
+ (if nullPS fol then id else (Plain (unpackPS fol):)) (WhiteSpace:dTX ds)
+ dTX (RefTyp _ var fol:ds) = Element "emphasis" [] [Plain (unpackPS var)]:
+ (if nullPS fol then id else (Plain (unpackPS fol):)) (WhiteSpace:dTX ds)
+ dTX (RefVariant var fol:ds) = Element "emphasis" [] [Plain (unpackPS var)]:
+ (if nullPS fol then id else (Plain (unpackPS fol):)) (WhiteSpace:dTX ds)
+ dTX (Verb str fol:ds) = Element "literallayout" [] [Plain (unpackPS str)]:
+ (if nullPS fol then id else (Plain (unpackPS fol):)) (WhiteSpace:dTX ds)
hunk ./gendoc/XMLwrite.hs 144
- Element "refname" [] [Plain mName],
+ Element "refname" [] [Plain (unpackPS mName)],
hunk ./gendoc/XMLwrite.hs 149
- Attribute "frame" (packString "none"),
- Attribute "colsep" (packString "0"),
- Attribute "rowsep" (packString "0")] [
+ Attribute "frame" "none",
+ Attribute "colsep" "0",
+ Attribute "rowsep" "0"] [
hunk ./gendoc/XMLwrite.hs 153
- Attribute "align" (packString "left"),
- Attribute "cols" (packString "1")] [
+ Attribute "align" "left",
+ Attribute "cols" "1"] [
hunk ./gendoc/XMLwrite.hs 156
- map (makeSynopsis ctxt) cons++
- map (makeSynopsis ctxt) const++
- map (makeSynopsis ctxt) func++
- map (makeSynopsis ctxt) meth++
- map (makeSynopsis ctxt) sign
+ map (makeSynopsis mName ctxt) cons++
+ map (makeSynopsis mName ctxt) const++
+ map (makeSynopsis mName ctxt) func++
+ map (makeSynopsis mName ctxt) meth++
+ map (makeSynopsis mName ctxt) sign
hunk ./gendoc/XMLwrite.hs 167
- ++makeSect "Constructors" (map makeSymDescr cons)
- ++makeSect "Methods" (map makeSymDescr meth)
- ++makeSect "Functions" (map makeSymDescr func)
- ++makeSect "Constants" (map makeSymDescr const)
- ++makeSect "Signals" (map makeSymDescr sign)
+ ++makeSect "Constructors" (map (makeSymDescr mName ctxt) cons)
+ ++makeSect "Methods" (map (makeSymDescr mName ctxt) meth)
+ ++makeSect "Functions" (map (makeSymDescr mName ctxt) func)
+ ++makeSect "Constants" (map (makeSymDescr mName ctxt) const)
+ ++makeSect "Signals" (map (makeSymDescr mName ctxt) sign)
hunk ./gendoc/XMLwrite.hs 194
- Element "title" [] [Plain (packString name)]:docu
+ Element "title" [] [Plain name]:docu
hunk ./gendoc/XMLwrite.hs 197
-makeSynopsis :: FiniteMap TyVar TyCon -> (DaVar,SymInfo) -> XML
-makeSynopsis contexts (var, SymInfo { symType=Just ty }) =
+makeSynopsis :: Module -> FiniteMap TyVar TyCon -> (DaVar,SymInfo) -> XML
+makeSynopsis mName contexts (var, SymInfo { symType=Just ty }) =
hunk ./gendoc/XMLwrite.hs 201
- Element "programlisting" [] [
- Plain (var `appendPS`
- packString (":: "++showContext ctxt++show ty))
+ Element "literallayout" [
+ Attribute "class" "monospaced"] [
+ Element "link" [
+ Attribute "linkend" (unpackPS mName++"."++unpackPS var)
+ ] [
+ Plain (unpackPS var)],
+ Plain (":: "++showContext ctxt++show ty)
hunk ./gendoc/XMLwrite.hs 217
-makeSynopsis contexts (var, _) =
+makeSynopsis mName contexts (var, _) =
hunk ./gendoc/XMLwrite.hs 220
- Element "programlisting" [] [
- Plain (var `appendPS` packString " <no type information>")
+ Element "literallayout" [] [
+ Plain (unpackPS var++" ")
hunk ./gendoc/XMLwrite.hs 228
-makeSymDescr :: (DaVar, SymInfo) -> XML
-makeSymDescr (var, SymInfo { symKind=k, symDocu=doc,
- symType=Just ty, symArgs=args }) =
- Element "refsect2" [] (
- Element "title" [] [Plain var]:
- docuToXML doc
+makeSymDescr :: Module -> FiniteMap TyVar TyCon -> (DaVar, SymInfo) -> XML
+makeSymDescr mName classMap (var, SymInfo { symKind=k, symDocu=doc,
+ symType=Just ty, symArgs=args }) =
+ Element "refsect2" [Attribute "id" (unpackPS mName++"."++unpackPS var)] (
+ Element "title" [] [Plain (unpackPS var)]:
+ Element "informaltable" [
+ Attribute "frame" "none",
+ Attribute "colsep" "0",
+ Attribute "rowsep" "0"
+ ] (
+ Element "colspec" [] []:
+ replicate noOfCols
+ (Element "colspec" [Attribute "colwidth" "100pt"] [])++[
+ Element "tgroup" [
+ Attribute "align" "center",
+ Attribute "cols" (show noOfCols)
+ ] [
+ Element "tbody" [
+ Attribute "valign" "middle"
+ ] (
+ Element "row" [] (
+ Element "entry" [
+ Attribute "morerows" (show noOfRows)
+ ] [
+ Plain (unpackPS var)
+ ]:typeToXML (\_ -> Nothing) ty (Just formatter)
+ ):map argsToXML (transpose args)
+ )
+ ]
+ ]):docuToXML doc
hunk ./gendoc/XMLwrite.hs 259
-makeSymDescr (var, _) = Element "refsect2" []
- [Plain (packString "no type info on symbol"), Plain var]
+ where
+ noOfRows = case args of
+ [] -> 0
+ (equations:_) -> length equations
+ noOfCols = length (take 50 args) -- don't loop forever if no defn
+ formatter :: [XML] -> [XML] -> [XML]
+ formatter x1 x2@(Element "entry" _ _:_) =
+ Element "entry" [] (Plain "::":WhiteSpace:x1):x2
+ formatter x1 x2 = [Element "entry" [] (Plain "::":WhiteSpace:x1),
+ Element "entry" [
+ Attribute "morerows" (show noOfRows)]
+ (Plain "::":WhiteSpace:x2)]
+ argsToXML :: [HPat] -> XML
+ argsToXML args = Element "row" [] (map argToXML args)
+ argToXML :: HPat -> XML
+ argToXML hPat = Element "entry" [] [Plain (show hPat)]
+
+makeSymDescr mName _ (var, _) = Element "refsect2" []
+ [Plain "no type info on symbol ", Plain (unpackPS var)]
+
+-- Combine several consecutive Plain elements.
+--
+flatten :: [XML] -> [XML]
+flatten (Plain t1: Plain t2: xs) = flatten (Plain (t1++t2):xs)
+flatten (x:xs) = x:flatten xs
+flatten [] = []
+
+-- Convert a type into XML. Each element in the list corresponds to one
+-- element in the type.
+--
+typeToXML :: (Var -> Maybe String) -> HType ->
+ Maybe ([XML] -> [XML] -> [XML]) -> [XML]
+typeToXML varInfo ty comb = flatten $ ttX 0 (fromMaybe plain comb) ty
+ where
+ plain :: [XML] -> [XML] -> [XML]
+ plain xs1 xs2 = xs1++WhiteSpace:Plain "->":WhiteSpace:xs2
+ ttX :: Int -> ([XML] -> [XML] -> [XML]) -> HType -> [XML]
+ ttX 0 f (TyFun t1 t2) = f (ttX 1 plain t1) (ttX 0 f t2)
+ ttX n _ (TyApp t1 t2) | n<2 = ttX 0 plain t1++WhiteSpace:ttX 2 plain t2
+ ttX _ _ (TyCon con) = case varInfo con of
+ Nothing -> [Plain (unpackPS con)]
+ Just refName ->
+ [Element "link" [Attribute "linkend" refName] [Plain (unpackPS con)]]
+ ttX _ _ (TyVar var) = case varInfo var of
+ Nothing -> [Plain (unpackPS var)]
+ Just refName ->
+ [Element "link" [Attribute "linkend" refName] [Plain (unpackPS var)]]
+ ttX _ _ (TyPar tys) = Plain "(":
+ intersperse (Plain ",")
+ (concatMap (ttX 0 plain) tys)++
+ [Plain ")"]
+ ttX _ _ (TyLst t) = Plain "[":
+ ttX 0 plain t++
+ [Plain "]"]
+ ttX _ _ t = Plain "(":ttX 0 plain t++[Plain ")"]
+
}