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; }
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; }
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; }
function testEscapeToken() { $tokens = array(array('NAME', '<>&', false), array('NAME', 'no html entities here', false), array('NAME', '<>&', false), array('NAME', '<>&', true), array('NAME', 'no html entities here', true), array('NAME', '<>&', 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]); } }
public static function preprocessorFilter($token) { $token = Utils::escapeToken($token); $token[1] = preg_replace_callback("@\n (?:\" (?> [^\\\\\n\"]+ | \\\\. )* (?: \"|\$) | (?: < (.*?) >))\n | // .*\n | /\\* (?s:.*?) (\\*/ | \$)\n @x", array('Luminous\\Scanners\\CppScanner', 'preprocessorFilterCb'), $token[1]); return $token; }
public static function stringFilter($token) { $token = Utils::escapeToken($token); $token[1] = preg_replace("/\\\$(?:\\w+|\\{[^}\n]+\\})/", '<VARIABLE>$0</VARIABLE>', $token[1]); return $token; }