<?php
/**
* Validates string for suitability as a Perforce stream name.
* Extends spec-name to verify we lead with two slashes and contain a
* third. Also toggles some default settings to match p4ds validation.
*
* @copyright 2011 Perforce Software. All rights reserved.
* @license Please see LICENSE.txt in top-level folder of this distribution.
* @version <release>/<patch>
*/
namespace P4\Validate;
class StreamName extends KeyName
{
protected $allowRelative = true;
protected $allowPercent = false;
protected $allowCommas = false;
protected $allowSlashes = true;
const INVALID_FORMAT = 'format';
/**
* Revised message templates upon instantiation.
*/
public function __construct()
{
$message = "Value is not the correct format of '//depotname/string'";
$this->messageTemplates[self::INVALID_FORMAT] = $message;
}
/**
* Checks if the given string is a valid perforce spec name.
*
* @param string|int $value spec name value to validate.
* @return boolean true if value is a valid spec name, false otherwise.
*/
public function isValid($value)
{
if (!parent::isValid($value)) {
return false;
}
// verify stream is in the format //depotname/string
if (!preg_match('#^//[^/]+/[^/]+$#', $value)) {
$this->error(static::INVALID_FORMAT);
return false;
}
return true;
}
}