work-time-0.1.2.0: A library for parsing a chat-based work hour reporting scheme.

Safe HaskellNone
LanguageHaskell2010

WorkTime

Description

Main API for WorkTime. This re-exports all functions meant to be used.

Synopsis

Documentation

data WorkTime Source #

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.

Constructors

WorkTime MessageLine [Workday] 
Instances
Show WorkTime Source # 
Instance details

Defined in WorkTime.WorkTime

data MessageLine Source #

Represents a line like Rickard Andersson [10:48 AM] in Slack.

Instances
Show MessageLine Source # 
Instance details

Defined in WorkTime.WorkTime

data Workday Source #

Represents a collection of lines like

[28.02] 8.5h
worked on missile guidance system
cleaned up parsing code

in Slack.

Instances
Show Workday Source # 
Instance details

Defined in WorkTime.WorkTime

fromText :: Text -> Either (ParseError (Token Text) Void) [WorkTime] Source #

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).

fromFile :: FilePath -> IO (Either (ParseError (Token Text) Void) [WorkTime]) Source #

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).

workTimeHours :: WorkTime -> Double Source #

Extracts the total work hours from a WorkTime entry, from all workdays in the entry.

workTimeNickname :: WorkTime -> Text Source #

Extracts the nickname from a WorkTime entry.

hoursFromText :: Text -> Either (ParseError (Token Text) Void) [(Text, Double)] Source #

Takes a text and turns it into a list of a nickname (Text) and work hours (Double).

hoursFromFile :: FilePath -> IO (Either (ParseError (Token Text) Void) [(Text, Double)]) Source #

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.

hours :: [WorkTime] -> Map Text Double Source #

Takes a list of WorkTime and creates a map of nickname (Text) to work hours (Double).