ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
TMBOY
Date:
Tue Jul 18 16:27:22 2017 +0800
Revision:
44:c1d8923072ba
?

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TMBOY 44:c1d8923072ba 1 <?php
TMBOY 44:c1d8923072ba 2
TMBOY 44:c1d8923072ba 3 /*
TMBOY 44:c1d8923072ba 4 * This file is part of the JsonSchema package.
TMBOY 44:c1d8923072ba 5 *
TMBOY 44:c1d8923072ba 6 * For the full copyright and license information, please view the LICENSE
TMBOY 44:c1d8923072ba 7 * file that was distributed with this source code.
TMBOY 44:c1d8923072ba 8 */
TMBOY 44:c1d8923072ba 9
TMBOY 44:c1d8923072ba 10 namespace JsonSchema\Constraints;
TMBOY 44:c1d8923072ba 11
TMBOY 44:c1d8923072ba 12 use JsonSchema\Entity\JsonPointer;
TMBOY 44:c1d8923072ba 13
TMBOY 44:c1d8923072ba 14 /**
TMBOY 44:c1d8923072ba 15 * The StringConstraint Constraints, validates an string against a given schema
TMBOY 44:c1d8923072ba 16 *
TMBOY 44:c1d8923072ba 17 * @author Robert Schönthal <seroscho@googlemail.com>
TMBOY 44:c1d8923072ba 18 * @author Bruno Prieto Reis <bruno.p.reis@gmail.com>
TMBOY 44:c1d8923072ba 19 */
TMBOY 44:c1d8923072ba 20 class StringConstraint extends Constraint
TMBOY 44:c1d8923072ba 21 {
TMBOY 44:c1d8923072ba 22 /**
TMBOY 44:c1d8923072ba 23 * {@inheritDoc}
TMBOY 44:c1d8923072ba 24 */
TMBOY 44:c1d8923072ba 25 public function check($element, $schema = null, JsonPointer $path = null, $i = null)
TMBOY 44:c1d8923072ba 26 {
TMBOY 44:c1d8923072ba 27 // Verify maxLength
TMBOY 44:c1d8923072ba 28 if (isset($schema->maxLength) && $this->strlen($element) > $schema->maxLength) {
TMBOY 44:c1d8923072ba 29 $this->addError($path, "Must be at most " . $schema->maxLength . " characters long", 'maxLength', array(
TMBOY 44:c1d8923072ba 30 'maxLength' => $schema->maxLength,
TMBOY 44:c1d8923072ba 31 ));
TMBOY 44:c1d8923072ba 32 }
TMBOY 44:c1d8923072ba 33
TMBOY 44:c1d8923072ba 34 //verify minLength
TMBOY 44:c1d8923072ba 35 if (isset($schema->minLength) && $this->strlen($element) < $schema->minLength) {
TMBOY 44:c1d8923072ba 36 $this->addError($path, "Must be at least " . $schema->minLength . " characters long", 'minLength', array(
TMBOY 44:c1d8923072ba 37 'minLength' => $schema->minLength,
TMBOY 44:c1d8923072ba 38 ));
TMBOY 44:c1d8923072ba 39 }
TMBOY 44:c1d8923072ba 40
TMBOY 44:c1d8923072ba 41 // Verify a regex pattern
TMBOY 44:c1d8923072ba 42 if (isset($schema->pattern) && !preg_match('#' . str_replace('#', '\\#', $schema->pattern) . '#u', $element)) {
TMBOY 44:c1d8923072ba 43 $this->addError($path, "Does not match the regex pattern " . $schema->pattern, 'pattern', array(
TMBOY 44:c1d8923072ba 44 'pattern' => $schema->pattern,
TMBOY 44:c1d8923072ba 45 ));
TMBOY 44:c1d8923072ba 46 }
TMBOY 44:c1d8923072ba 47
TMBOY 44:c1d8923072ba 48 $this->checkFormat($element, $schema, $path, $i);
TMBOY 44:c1d8923072ba 49 }
TMBOY 44:c1d8923072ba 50
TMBOY 44:c1d8923072ba 51 private function strlen($string)
TMBOY 44:c1d8923072ba 52 {
TMBOY 44:c1d8923072ba 53 if (extension_loaded('mbstring')) {
TMBOY 44:c1d8923072ba 54 return mb_strlen($string, mb_detect_encoding($string));
TMBOY 44:c1d8923072ba 55 } else {
TMBOY 44:c1d8923072ba 56 return strlen($string);
TMBOY 44:c1d8923072ba 57 }
TMBOY 44:c1d8923072ba 58 }
TMBOY 44:c1d8923072ba 59 }