Added notmatches operator for tagging rule

This commit is contained in:
Nicolas Lœuillet
2017-04-20 14:58:20 +02:00
parent 64f1d8f77a
commit fdd725f58c
32 changed files with 125 additions and 48 deletions

View File

@ -0,0 +1,25 @@
<?php
namespace Wallabag\CoreBundle\Operator\Doctrine;
/**
* Provides a "notmatches" operator used for tagging rules.
*
* It asserts that a given pattern is not contained in a subject, in a
* case-insensitive way.
*
* This operator will be used to compile tagging rules in DQL, usable
* by Doctrine ORM.
* It's registered in RulerZ using a service (wallabag.operator.doctrine.matches);
*/
class NotMatches
{
public function __invoke($subject, $pattern)
{
if ($pattern[0] === "'") {
$pattern = sprintf("'%%%s%%'", substr($pattern, 1, -1));
}
return sprintf('UPPER(%s) NOT LIKE UPPER(%s)', $subject, $pattern);
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace Wallabag\CoreBundle\Operator\PHP;
/**
* Provides a "notmatches" operator used for tagging rules.
*
* It asserts that a given pattern is not contained in a subject, in a
* case-insensitive way.
*
* This operator will be used to compile tagging rules in PHP, usable
* directly on Entry objects for instance.
* It's registered in RulerZ using a service (wallabag.operator.array.matches);
*/
class NotMatches
{
public function __invoke($subject, $pattern)
{
return stripos($subject, $pattern) === false;
}
}