add multi filter support
This commit is contained in:
parent
a12ea63848
commit
2709a79986
@ -76,11 +76,15 @@ class Taskwarrior
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $filter
|
||||
* @param string|array $filter
|
||||
* @return Task[]
|
||||
*/
|
||||
public function filterAll($filter = '')
|
||||
public function filterAll($filter = null)
|
||||
{
|
||||
if (is_string($filter)) {
|
||||
$filter = explode(' ', $filter);
|
||||
}
|
||||
|
||||
$result = $this->export($filter);
|
||||
|
||||
foreach ($result as $key => $task) {
|
||||
@ -98,10 +102,10 @@ class Taskwarrior
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $filter
|
||||
* @param string|array $filter
|
||||
* @return Task[]
|
||||
*/
|
||||
public function filter($filter = '')
|
||||
public function filter($filter = null)
|
||||
{
|
||||
$tasks = $this->filterAll($filter . ' status:pending');
|
||||
|
||||
@ -164,10 +168,10 @@ class Taskwarrior
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $filter
|
||||
* @param string|array $filter
|
||||
* @return Task[]
|
||||
*/
|
||||
private function export($filter = '')
|
||||
private function export($filter = null)
|
||||
{
|
||||
$json = $this->command('export', $filter);
|
||||
|
||||
@ -180,17 +184,25 @@ class Taskwarrior
|
||||
|
||||
/**
|
||||
* @param string $command
|
||||
* @param string $filter
|
||||
* @param string|array $filter
|
||||
* @param array $options
|
||||
* @return string
|
||||
* @throws TaskwarriorException
|
||||
*/
|
||||
private function command($command, $filter = null, $options = array())
|
||||
private function command($command, $filter = null, array $options = array())
|
||||
{
|
||||
$builder = $this->createProcessBuilder();
|
||||
|
||||
if ($filter) {
|
||||
$builder->add($filter);
|
||||
if (!is_array($filter)) {
|
||||
$filter = [$filter];
|
||||
}
|
||||
|
||||
foreach ($filter as $param) {
|
||||
if (empty($param)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$builder->add($param);
|
||||
}
|
||||
|
||||
$builder->add($command);
|
||||
@ -264,13 +276,16 @@ class Taskwarrior
|
||||
*/
|
||||
private function sort(array $tasks)
|
||||
{
|
||||
usort($tasks, function (Task $a, Task $b) {
|
||||
usort(
|
||||
$tasks,
|
||||
function (Task $a, Task $b) {
|
||||
if (0 != $diff = $b->getUrgency() - $a->getUrgency()) {
|
||||
return $diff;
|
||||
}
|
||||
|
||||
return $a->getEntry() >= $b->getEntry() ? 1 : -1;
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
return $tasks;
|
||||
}
|
||||
|
@ -116,6 +116,20 @@ class TaskwarriorTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertCount(2, $this->taskwarrior->filter());
|
||||
}
|
||||
|
||||
public function testMultiFilter()
|
||||
{
|
||||
$task1 = new Task();
|
||||
$task1->setDescription('foo1');
|
||||
|
||||
$task2 = new Task();
|
||||
$task2->setDescription('foo2');
|
||||
|
||||
$this->taskwarrior->save($task1);
|
||||
$this->taskwarrior->save($task2);
|
||||
|
||||
$this->assertCount(2, $this->taskwarrior->filter('status:pending')); // todo better test
|
||||
}
|
||||
|
||||
public function testPending()
|
||||
{
|
||||
$task1 = new Task();
|
||||
|
Loading…
Reference in New Issue
Block a user