-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A library for parsing a chat-based work hour reporting scheme. -- -- Parses a certain format for hour and task reporting in chat/Slack -- form. See README for format. @package work-time @version 0.1.2.0 -- | Main API for WorkTime. This re-exports all functions meant to -- be used. module WorkTime -- | Main data type of the library. Represents an entry in Slack containing -- a nickname, timestamp, datestamp and WorkDay that themselves -- contain several task descriptions. -- -- An entire entry will look as follows: -- --
--   Rickard Andersson [11:16 PM]
--   [28.02] 8.5h
--   worked on missile guidance system
--   cleaned up parsing code
--   
-- -- The first part is represented by a MessageLine and what follows -- is one Workday in this example. -- -- An entry can also look as follows: -- --
--   Rickard Andersson [11:16 PM]
--   [28.02] 8.5h
--   worked on missile guidance system
--   cleaned up parsing code
--   [01.03] 6h
--   fixed critical bug in missile guidance system
--   removed half of parsing code
--   
-- -- In this example we have several Workday in one WorkTime. data WorkTime WorkTime :: MessageLine -> [Workday] -> WorkTime -- | Represents a line like Rickard Andersson [10:48 AM] in Slack. data MessageLine -- | Represents a collection of lines like -- --
--   [28.02] 8.5h
--   worked on missile guidance system
--   cleaned up parsing code
--   
-- -- in Slack. data Workday -- | Parses a Text either into a [WorkTime] or into an error -- message in the form of a String. The error message may be less -- than informative as it comes straight from the parser -- (Text.Megaparsec). fromText :: Text -> Either (ParseError (Token Text) Void) [WorkTime] -- | Parses the Text in a file and returns either a -- [WorkTime] or an error message in the form of a String. -- The error message may be less than informative as it come straight -- from the parser (Text.Megaparsec). fromFile :: FilePath -> IO (Either (ParseError (Token Text) Void) [WorkTime]) -- | Extracts the total work hours from a WorkTime entry, from all -- workdays in the entry. workTimeHours :: WorkTime -> Double -- | Extracts the nickname from a WorkTime entry. workTimeNickname :: WorkTime -> Text -- | Takes a text and turns it into a list of a nickname (Text) and -- work hours (Double). hoursFromText :: Text -> Either (ParseError (Token Text) Void) [(Text, Double)] -- | Takes a FilePath and reads the Text in the file, from -- which it then parses a list of [(Text, Double)] -- which represent a nickname and the parsed total amount of hours they -- have worked. hoursFromFile :: FilePath -> IO (Either (ParseError (Token Text) Void) [(Text, Double)]) -- | Takes a list of WorkTime and creates a map of nickname -- (Text) to work hours (Double). hours :: [WorkTime] -> Map Text Double