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

Safe HaskellSafe
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 TaskDescription.

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] 

data MessageLine Source #

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

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

fromText :: Text -> Either String [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 (Data.Attoparsec.Text).

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 String [(Text, Double)] Source #

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

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

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