Seditio Source
Root |
./othercms/phpBB3/vendor/s9e/text-formatter/src/Configurator/Validators/TagName.php
<?php

/**
* @package   s9e\TextFormatter
* @copyright Copyright (c) 2010-2021 The s9e authors
* @license   http://www.opensource.org/licenses/mit-license.php The MIT License
*/
namespace s9e\TextFormatter\Configurator\Validators;

use
InvalidArgumentException;

/**
* Tag name rules:
*  - must start with a letter or an underscore
*  - can only contain letters, numbers, dashes and underscores
*  - can be prefixed with one prefix following the same rules, separated with one colon
*  - the prefixes "xsl" and "s9e" are reserved
*
* Unprefixed names are normalized to uppercase. Prefixed names are preserved as-is.
*/
abstract class TagName
{
   
/**
    * Return whether a string is a valid tag name
    *
    * @param  string $name
    * @return bool
    */
   
public static function isValid($name)
    {
        return (bool)
preg_match('#^(?:(?!xmlns|xsl|s9e)[a-z_][a-z_0-9]*:)?[a-z_][-a-z_0-9]*$#Di', $name);
    }

   
/**
    * Normalize a tag name
    *
    * @throws InvalidArgumentException if the original name is not valid
    *
    * @param  string $name Original name
    * @return string       Normalized name
    */
   
public static function normalize($name)
    {
        if (!static::
isValid($name))
        {
            throw new
InvalidArgumentException("Invalid tag name '" . $name . "'");
        }

       
// Non-namespaced tags are uppercased
       
if (strpos($name, ':') === false)
        {
           
$name = strtoupper($name);
        }

        return
$name;
    }
}