diff --git a/src/markup/syntax/highlighter/xhpast/PhutilXHPASTSyntaxHighlighter.php b/src/markup/syntax/highlighter/xhpast/PhutilXHPASTSyntaxHighlighter.php
index 8a77391..4d66f5c 100644
--- a/src/markup/syntax/highlighter/xhpast/PhutilXHPASTSyntaxHighlighter.php
+++ b/src/markup/syntax/highlighter/xhpast/PhutilXHPASTSyntaxHighlighter.php
@@ -1,117 +1,122 @@
getRootNode()->getTokens() as $token) {
- $value = phutil_escape_html($token->getValue());
- $class = null;
- $multi = false;
- switch ($token->getTypeName()) {
- case 'T_WHITESPACE':
- break;
- case 'T_DOC_COMMENT':
- $class = 'dc';
- $multi = true;
- break;
- case 'T_COMMENT':
- $class = 'c';
- $multi = true;
- break;
- case 'T_CONSTANT_ENCAPSED_STRING':
- case 'T_ENCAPSED_AND_WHITESPACE':
- case 'T_INLINE_HTML':
- $class = 's';
- $multi = true;
- break;
- case 'T_VARIABLE':
- $class = 'nv';
- break;
- case 'T_OPEN_TAG':
- case 'T_OPEN_TAG_WITH_ECHO':
- case 'T_CLOSE_TAG':
- $class = 'o';
- break;
- case 'T_OBJECT_OPERATOR':
- $next = 'na';
- $class = 'k';
- break;
- case 'T_LNUMBER':
- case 'T_DNUMBER':
- $class = 'm';
- break;
- case 'T_STRING':
- static $magic = array(
- 'true' => true,
- 'false' => true,
- 'null' => true,
- );
- if (isset($magic[$value])) {
+ $out = array();
+ $next = null;
+ foreach ($tree->getRootNode()->getTokens() as $token) {
+ $value = phutil_escape_html($token->getValue());
+ $class = null;
+ $multi = false;
+ switch ($token->getTypeName()) {
+ case 'T_WHITESPACE':
+ break;
+ case 'T_DOC_COMMENT':
+ $class = 'dc';
+ $multi = true;
+ break;
+ case 'T_COMMENT':
+ $class = 'c';
+ $multi = true;
+ break;
+ case 'T_CONSTANT_ENCAPSED_STRING':
+ case 'T_ENCAPSED_AND_WHITESPACE':
+ case 'T_INLINE_HTML':
+ $class = 's';
+ $multi = true;
+ break;
+ case 'T_VARIABLE':
+ $class = 'nv';
+ break;
+ case 'T_OPEN_TAG':
+ case 'T_OPEN_TAG_WITH_ECHO':
+ case 'T_CLOSE_TAG':
+ $class = 'o';
+ break;
+ case 'T_OBJECT_OPERATOR':
+ $next = 'na';
$class = 'k';
break;
+ case 'T_LNUMBER':
+ case 'T_DNUMBER':
+ $class = 'm';
+ break;
+ case 'T_STRING':
+ static $magic = array(
+ 'true' => true,
+ 'false' => true,
+ 'null' => true,
+ );
+ if (isset($magic[$value])) {
+ $class = 'k';
+ break;
+ }
+ if ($next) {
+ $class = $next;
+ $next = null;
+ } else {
+ $class = 'nx';
+ }
+ break;
+ default:
+ $class = 'k';
+ break;
+ }
+ if ($class) {
+ $value = ''.$value.'';
+ if ($multi) {
+ $value = str_replace(
+ "\n",
+ "\n",
+ $value);
}
- if ($next) {
- $class = $next;
- $next = null;
- } else {
- $class = 'nx';
- }
- break;
- default:
- $class = 'k';
- break;
- }
- if ($class) {
- $value = ''.$value.'';
- if ($multi) {
- $value = str_replace(
- "\n",
- "\n",
- $value);
+ $out[] = $value;
+ } else {
+ $out[] = $value;
}
- $out[] = $value;
- } else {
- $out[] = $value;
}
- }
- if ($scrub) {
- array_shift($out);
- }
+ if ($scrub) {
+ array_shift($out);
+ }
- return rtrim(implode('', $out));
+ return rtrim(implode('', $out));
+ } catch (Exception $ex) {
+ phlog($ex);
+ throw $ex;
+ }
}
}
diff --git a/src/markup/syntax/highlighter/xhpast/__init__.php b/src/markup/syntax/highlighter/xhpast/__init__.php
index 2679642..9789b1a 100644
--- a/src/markup/syntax/highlighter/xhpast/__init__.php
+++ b/src/markup/syntax/highlighter/xhpast/__init__.php
@@ -1,13 +1,14 @@