gravitask / task
The task logic, parsing, and formatting functionality of Gravitask.
Requires
- php: >=5.4
Requires (Dev)
- phpunit/phpunit: ~4
This package is not auto-updated.
Last update: 2024-12-16 15:31:12 UTC
README
A seriously powerful library for working with TODO list items and tasks.
Features
- Parse and format
TaskItem
objects to and from JSON, and todo.txt format.
Example
$parser = new Gravitask\Task\Parser\TodoTxtParser(); $input = "(A) Write the README file"; $task = $parser->parse($input); $task->getPriority(); // Result: "A" $task->getTask(); // Result: "Write the README file"
Installation
The recommended way to install this library is via Composer:
composer require gravitask/task
Requirements
- PHP >= 5.4
TaskItem
This class is the "task object" and holds all of the information about the task, such as its creation date, priority, description, etc.
Constants
Methods
setTask($task)
Set the name/description of the task to be completed.
Example
$taskItem->setTask("Make another coffee");
getTask()
Retrieve the name/description of the task.
Example
$task->getTask(); // "Make another coffee"
setContexts(array $contexts)
Set the task's contexts to the items provided in the $contexts
array.
Example
$contexts = ['email', 'computer']; $task->setContexts($contexts);
addContext($context)
Append a single context item to the pre-existing array of contexts.
Example
$contexts = ['email']; $task->setContexts($contexts); $task->addContext('computer');
getContexts()
Retrieve an array of the task's contexts.
Example
$contexts = ['email', 'computer']; $task->setContexts($contexts); $task->getContexts(); // ['email', 'computer']
setProjects(array $projects)
Set the task's projects to the items provided in the $projects
array.
Example
$projects = ['SecretProject']; $task->setProjects($projects);
addProject($project)
Append a single project item to the pre-existing array of projects.
Example
$projects = ['SecretProject']; $task->setProjects($projects); $task->addProject('Work');
getProjects()
Retrieve an array of the task's projects.
Example
$projects = ['SecretProject']; $task->setProjects($projects); $task->addProject('Work'); $task->getProjects(); // ['SecretProject', 'Work']
setCreationDate(\DateTime $date)
Set the task's optional creation date.
The $date
argument is a DateTime
object set to the required date and time.
Example
$creationDate = new \DateTime::createFromFormat("Y-m-d", "2016-08-16"); $task->setCreationDate($creaionDate);
getCreationDate()
Retrieve the optional creation date value for the task.
Example
$task->getCreationDate(); // \DateTime object
setCompletionDate(\DateTime $date)
Set the date of when the task was completed.
The $date
argument is a DateTime
object set to the required date and time.
$task->setStatus(TaskItem::STATUS_COMPLETED); $completionDate = new \DateTime::createFromFormat("Y-m-d", "2016-08-20"); $task->setCompletionDate($completionDate);
getCompletionDate()
Retrieve the date that the task was completed.
Example
$task->setStatus(TaskItem::STATUS_COMPLETED); $completionDate = new \DateTime::createFromFormat("Y-m-d", "2016-08-20"); $task->setCompletionDate($completionDate); $task->getCompletionDate() // \DateTime object
setPriority($priority)
Set the task's priority to the provided uppercase single letter of the alphabet. A
signifies the highest priority, whilst Z
represents the lowest.
Example
$task->setPriority("B");
getPriority()
Retrieve the task's priority value represented by a single, uppercase letter of the alphabet.
Example
$task->setPriority("F"); $task->getPriority(); // "F"
setStatus($status)
Set the status of the task to a different value.
Requirements:
- You should ONLY use the values provided as
TaskItem
constants beginning withSTATUS_
.
Example
$task->setStatus(TaskItem::STATUS_COMPLETED);
getStatus()
Retrieve the current status of the task. By default this value will be
TaskItem::STATUS_ACTIVE
.
Example
$task->setStatus(TaskItem::STATUS_COMPLETED); $task->getStatus(); // Integer value representation of the status ENUM.
Formatters
Required Methods
All formatters MUST implement the
Gravitask\Task\Formatter\FormatterInterface
.
format(TaskItem $taskItem)
Format the provided TaskItem
using the preferred formatter class, e.g. TodoTxtFormatter
.
Example
$task->setPriority("A"); $task->setTask("Write example code"); $formatter = new Gravitask\Task\Formatter\TodoTxtFormatter(); $output = $formatter->format($task); // "(A) Write example code"
Parsers
Required Methods
All parsers MUST implement the
Gravitask\Task\Parser\ParserInterface
.
parse($input)
Parse the provided $input
variable and return a Gravitask\Task\TaskItem
object,
or FALSE
on failure to parse.
Example
$parser = new Gravitask\Task\Parser\TodoTxtParser(); $input = "(A) Write the README file"; $task = $parser->parse($input); $task->getPriority(); // Result: "A" $task->getTask(); // Result: "Write the README file"