From 22ad130fa851909870ddc0e6caa1aa6f8d6a66a1 Mon Sep 17 00:00:00 2001 From: Andrea Rossato Date: Fri, 13 Jul 2007 14:37:07 +0200 Subject: haddock tuning darcs-hash:20070713123707-d6583-b236b40087a92c45511afb3e4350813917515c02.gz --- Commands.hs | 18 ++++++++++++------ Config.hs | 7 ++++++- Main.hs | 3 ++- Runnable.hs | 4 ++++ 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Commands.hs b/Commands.hs index 6fcb343..1a80b80 100644 --- a/Commands.hs +++ b/Commands.hs @@ -8,7 +8,13 @@ -- Stability : unstable -- Portability : unportable -- --- A Command datatype for XMobar status bar for the Xmonad Window Manager +-- The 'Exec' class and the 'Command' data type. +-- +-- The 'Exec' class rappresents the executable types, whose constructors may +-- appear in the 'Config.commands' field of the 'Config.Config' data type. +-- +-- The 'Command' data type stores the monitors to be run internally by +-- XMobar. -- ----------------------------------------------------------------------------- @@ -26,6 +32,11 @@ import Monitors.Swap import Monitors.Cpu import Monitors.Batt +class Exec e where + run :: e -> IO String + rate :: e -> Int + alias :: e -> String + data Command = Com Program Args Alias Rate | Weather Station Args Rate | Network Interface Args Rate @@ -42,11 +53,6 @@ type Station = String type Interface = String type Rate = Int -class Exec e where - run :: e -> IO String - rate :: e -> Int - alias :: e -> String - instance Exec Command where alias (Weather s _ _) = s alias (Network i _ _) = i diff --git a/Config.hs b/Config.hs index b120809..9d355ad 100644 --- a/Config.hs +++ b/Config.hs @@ -19,7 +19,6 @@ module Config ( -- * Configuration , runnableTypes ) where - import Commands import {-# SOURCE #-} Runnable @@ -61,5 +60,11 @@ defaultConfig = , template = "Uptime: %uptime% ** %date% %memory%" } +-- | This is the list of types that can be hidden inside +-- 'Runnable.Runnable', the existential type that stores all commands +-- to be executed by XMobar. It is used by 'Runnable.readRunnable' in +-- the 'Runnable.Runnable' Read instance. To install a plugin just add +-- the plugin's type to the list of types appearing in this function's type +-- signature. runnableTypes :: (Command,()) runnableTypes = undefined diff --git a/Main.hs b/Main.hs index 6f4a0ee..5af383f 100644 --- a/Main.hs +++ b/Main.hs @@ -15,7 +15,8 @@ module Main ( -- * Main Stuff -- $main main - , readConfig + , readConfig + , readDefaultConfig ) where import XMobar diff --git a/Runnable.hs b/Runnable.hs index c122eea..96216d0 100644 --- a/Runnable.hs +++ b/Runnable.hs @@ -48,6 +48,10 @@ instance (Read t, Exec t, ReadAsAnyOf ts Runnable) => ReadAsAnyOf (t,ts) Runnabl readAsAnyOf ~(t,ts) = r t `mplus` readAsAnyOf ts where r ty = do { m <- readPrec; return (Run (m `asTypeOf` ty)) } +-- | The 'Prelude.Read' parser for the 'Runnable' existential type. It +-- needs an 'Prelude.undefined' with a type signature containing the +-- list of all possible types hidden within 'Runnable'. See 'Config.runnableTypes'. +-- Each hidden type must have a 'Prelude.Read' instance. readRunnable :: ReadPrec Runnable readRunnable = prec 10 $ do Ident "Run" <- lexP -- cgit v1.2.3