Open Journal Systems  3.3.0
AbstractConstraint.php
1 <?php
2 /*
3  * citeproc-php: AbstractConstraint.php
4  * User: Sebastian Böttger <sebastian.boettger@thomascook.de>
5  * created at 26.10.19, 14:12
6  */
7 
9 
10 use stdClass;
11 
17 abstract class AbstractConstraint implements Constraint
18 {
19 
23  protected $match;
24 
28  protected $conditionVariables;
29 
35  abstract protected function matchForVariable($variable, $data);
36 
43  public function __construct($value, $match = "any")
44  {
45  $this->conditionVariables = explode(" ", $value);
46  $this->match = $match;
47  }
48 
54  public function validate($value, $citationNumber = null)
55  {
56  switch ($this->match) {
58  return $this->matchAll($value);
60  return !$this->matchAny($value); //no match for any value
62  default:
63  return $this->matchAny($value);
64  }
65  }
66 
67  private function matchAny($value)
68  {
69  $conditionMatched = false;
70  foreach ($this->conditionVariables as $variable) {
71  $conditionMatched |= $this->matchForVariable($variable, $value);
72  }
73  return (bool)$conditionMatched;
74  }
75 
76  private function matchAll($value)
77  {
78  $conditionMatched = true;
79  foreach ($this->conditionVariables as $variable) {
80  $conditionMatched &= $this->matchForVariable($variable, $value);
81  }
82  return (bool)$conditionMatched;
83  }
84 }
Seboettg\CiteProc\Constraint\Constraint\MATCH_ALL
const MATCH_ALL
Definition: Constraint.php:25
Seboettg\CiteProc\Constraint\AbstractConstraint
Definition: AbstractConstraint.php:17
Seboettg\CiteProc\Constraint\AbstractConstraint\$match
$match
Definition: AbstractConstraint.php:26
Seboettg\CiteProc\Constraint\Constraint\MATCH_NONE
const MATCH_NONE
Definition: Constraint.php:21
Seboettg\CiteProc\Constraint\AbstractConstraint\$conditionVariables
$conditionVariables
Definition: AbstractConstraint.php:34
Seboettg\CiteProc\Constraint\Constraint
Definition: Constraint.php:19
Seboettg\CiteProc\Constraint\AbstractConstraint\matchForVariable
matchForVariable($variable, $data)
Seboettg\CiteProc\Constraint\AbstractConstraint\__construct
__construct($value, $match="any")
Definition: AbstractConstraint.php:49
Seboettg\CiteProc\Constraint\AbstractConstraint\validate
validate($value, $citationNumber=null)
Definition: AbstractConstraint.php:60
Seboettg\CiteProc\Constraint
Definition: AbstractConstraint.php:8
Seboettg\CiteProc\Constraint\Constraint\MATCH_ANY
const MATCH_ANY
Definition: Constraint.php:23