League\CommonMark\Util\RegexHelper::buildRegexPatterns PHP Method

buildRegexPatterns() protected method

We could hard-code them all as pre-built constants, but that would be more difficult to manage.
protected buildRegexPatterns ( )
    protected function buildRegexPatterns()
    {
        $regex = [];
        $regex[self::ESCAPABLE] = self::REGEX_ESCAPABLE;
        $regex[self::ESCAPED_CHAR] = '\\\\' . $regex[self::ESCAPABLE];
        $regex[self::IN_DOUBLE_QUOTES] = '"(' . $regex[self::ESCAPED_CHAR] . '|[^"\\x00])*"';
        $regex[self::IN_SINGLE_QUOTES] = '\'(' . $regex[self::ESCAPED_CHAR] . '|[^\'\\x00])*\'';
        $regex[self::IN_PARENS] = '\\((' . $regex[self::ESCAPED_CHAR] . '|[^)\\x00])*\\)';
        $regex[self::REG_CHAR] = '[^\\\\()\\x00-\\x20]';
        $regex[self::IN_PARENS_NOSP] = '\\((' . $regex[self::REG_CHAR] . '|' . $regex[self::ESCAPED_CHAR] . '|\\\\)*\\)';
        $regex[self::TAGNAME] = '[A-Za-z][A-Za-z0-9-]*';
        $regex[self::BLOCKTAGNAME] = '(?:address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h1|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|title|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul)';
        $regex[self::ATTRIBUTENAME] = '[a-zA-Z_:][a-zA-Z0-9:._-]*';
        $regex[self::UNQUOTEDVALUE] = '[^"\'=<>`\\x00-\\x20]+';
        $regex[self::SINGLEQUOTEDVALUE] = '\'[^\']*\'';
        $regex[self::DOUBLEQUOTEDVALUE] = '"[^"]*"';
        $regex[self::ATTRIBUTEVALUE] = '(?:' . $regex[self::UNQUOTEDVALUE] . '|' . $regex[self::SINGLEQUOTEDVALUE] . '|' . $regex[self::DOUBLEQUOTEDVALUE] . ')';
        $regex[self::ATTRIBUTEVALUESPEC] = '(?:' . '\\s*=' . '\\s*' . $regex[self::ATTRIBUTEVALUE] . ')';
        $regex[self::ATTRIBUTE] = '(?:' . '\\s+' . $regex[self::ATTRIBUTENAME] . $regex[self::ATTRIBUTEVALUESPEC] . '?)';
        $regex[self::OPENTAG] = '<' . $regex[self::TAGNAME] . $regex[self::ATTRIBUTE] . '*' . '\\s*\\/?>';
        $regex[self::CLOSETAG] = '<\\/' . $regex[self::TAGNAME] . '\\s*[>]';
        $regex[self::OPENBLOCKTAG] = '<' . $regex[self::BLOCKTAGNAME] . $regex[self::ATTRIBUTE] . '*' . '\\s*\\/?>';
        $regex[self::CLOSEBLOCKTAG] = '<\\/' . $regex[self::BLOCKTAGNAME] . '\\s*[>]';
        $regex[self::HTMLCOMMENT] = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';
        $regex[self::PROCESSINGINSTRUCTION] = '[<][?].*?[?][>]';
        $regex[self::DECLARATION] = '<![A-Z]+' . '\\s+[^>]*>';
        $regex[self::CDATA] = '<!\\[CDATA\\[[\\s\\S]*?]\\]>';
        $regex[self::HTMLTAG] = '(?:' . $regex[self::OPENTAG] . '|' . $regex[self::CLOSETAG] . '|' . $regex[self::HTMLCOMMENT] . '|' . $regex[self::PROCESSINGINSTRUCTION] . '|' . $regex[self::DECLARATION] . '|' . $regex[self::CDATA] . ')';
        $regex[self::HTMLBLOCKOPEN] = '<(?:' . $regex[self::BLOCKTAGNAME] . '(?:[\\s\\/>]|$)' . '|' . '\\/' . $regex[self::BLOCKTAGNAME] . '(?:[\\s>]|$)' . '|' . '[?!])';
        $regex[self::LINK_TITLE] = '^(?:"(' . $regex[self::ESCAPED_CHAR] . '|[^"\\x00])*"' . '|' . '\'(' . $regex[self::ESCAPED_CHAR] . '|[^\'\\x00])*\'' . '|' . '\\((' . $regex[self::ESCAPED_CHAR] . '|[^)\\x00])*\\))';
        $this->regex = $regex;
    }