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

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
 Source # Instance detailsDefined in WorkTime.WorkTime MethodsshowList :: [WorkTime] -> ShowS #

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

Instances
 Source # Instance detailsDefined in WorkTime.WorkTime MethodsshowList :: [MessageLine] -> ShowS #

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
 Source # Instance detailsDefined in WorkTime.WorkTime MethodsshowList :: [Workday] -> ShowS #

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

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

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

Extracts the nickname from a WorkTime entry.

Takes a text and turns it into a list of a nickname (Text) and work hours (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.

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