Example #1
0
 public static function strFilter($token)
 {
     if (strpos($token[1], '~') == false) {
         return $token;
     }
     $token = Utils::escapeToken($token);
     $token[1] = preg_replace('/~(?:\\d+|.)/', '<INTERPOLATION>$0</INTERPOLATION>', $token[1]);
     return $token;
 }
Example #2
0
 public static function commentFilter($token)
 {
     $token = Utils::escapeToken($token);
     $str =& $token[1];
     // It pays to run the strpos checks first.
     if (strpos(substr($str, 1), '"') !== false) {
         $str = preg_replace('/(?<!^)"(?>[^"]*)"/', "<STRING>\$0</STRING>", $str);
     }
     if (strpos($str, ':') !== false) {
         $str = preg_replace('/(?<=^")((?>\\W*))((?>[A-Z]\\w+(?>(?>\\s+\\w+)*)))(:\\s*)(.*)/', '$1<DOCTAG>$2</DOCTAG>$3<DOCSTR>$4</DOCSTR>', $str);
     }
     return $token;
 }
Example #3
0
 public static function strFilter($token)
 {
     if ($token[1][0] !== '"' && $token[0] !== 'HEREDOC') {
         return $token;
     } elseif (strpos($token[1], '$') === false) {
         return $token;
     }
     $token = Utils::escapeToken($token);
     // matches $var, ${var} and {$var} syntax
     $token[1] = preg_replace('/
             (?: \\$\\{ | \\{\\$ ) [^}]++ \\}
             |
             \\$\\$?[a-zA-Z_]\\w*
         /x', '<VARIABLE>$0</VARIABLE>', $token[1]);
     return $token;
 }
Example #4
0
function testEscapeToken()
{
    $tokens = array(array('NAME', '<>&', false), array('NAME', 'no html entities here', false), array('NAME', '&lt;&gt;&amp;', false), array('NAME', '<>&', true), array('NAME', 'no html entities here', true), array('NAME', '&lt;&gt;&amp;', true));
    foreach ($tokens as $t) {
        $escaped = Utils::escapeToken($t);
        // name should be unchanged
        assert($t[0] === $escaped[0]);
        if ($t[2]) {
            $expected = $t[1];
            // already escaped, should be unchanged
        } else {
            $expected = Utils::escapeString($t[1]);
        }
        assert($escaped[1] === $expected);
        assert($escaped[2]);
    }
}
Example #5
0
 public static function preprocessorFilter($token)
 {
     $token = Utils::escapeToken($token);
     $token[1] = preg_replace_callback("@\n                (?:\" (?> [^\\\\\n\"]+ | \\\\. )* (?: \"|\$) | (?: &lt; (.*?) &gt;))\n                | // .*\n                | /\\* (?s:.*?) (\\*/ | \$)\n            @x", array('Luminous\\Scanners\\CppScanner', 'preprocessorFilterCb'), $token[1]);
     return $token;
 }
Example #6
0
 public static function stringFilter($token)
 {
     $token = Utils::escapeToken($token);
     $token[1] = preg_replace("/\\\$(?:\\w+|\\{[^}\n]+\\})/", '<VARIABLE>$0</VARIABLE>', $token[1]);
     return $token;
 }