Path: blob/master/src/infrastructure/markup/syntax/highlighter/PhutilInvisibleSyntaxHighlighter.php
12242 views
<?php12final class PhutilInvisibleSyntaxHighlighter extends Phobject {34private $config = array();56public function setConfig($key, $value) {7$this->config[$key] = $value;8return $this;9}1011public function getHighlightFuture($source) {12$keys = array_map('chr', range(0x0, 0x1F));13$vals = array_map(14array($this, 'decimalToHtmlEntityDecoded'), range(0x2400, 0x241F));1516$invisible = array_combine($keys, $vals);1718$result = array();19foreach (str_split($source) as $character) {20if (isset($invisible[$character])) {21$result[] = phutil_tag(22'span',23array('class' => 'invisible'),24$invisible[$character]);2526if ($character === "\n") {27$result[] = $character;28}29} else {30$result[] = $character;31}32}3334$result = phutil_implode_html('', $result);35return new ImmediateFuture($result);36}3738private function decimalToHtmlEntityDecoded($dec) {39return html_entity_decode("&#{$dec};");40}4142}434445