Path: blob/master/src/infrastructure/markup/interpreter/PhabricatorRemarkupFigletBlockInterpreter.php
12242 views
<?php12final class PhabricatorRemarkupFigletBlockInterpreter3extends PhutilRemarkupBlockInterpreter {45public function getInterpreterName() {6return 'figlet';7}89/**10* @phutil-external-symbol class Text_Figlet11*/12public function markupContent($content, array $argv) {13$map = self::getFigletMap();1415$font = idx($argv, 'font');16$font = ($font === null ? '' : $font);17$font = phutil_utf8_strtolower($font);18if (empty($map[$font])) {19$font = 'standard';20}2122$root = dirname(phutil_get_library_root('phabricator'));23require_once $root.'/externals/pear-figlet/Text/Figlet.php';2425$figlet = new Text_Figlet();26$figlet->loadFont($map[$font]);2728$result = $figlet->lineEcho($content);2930$engine = $this->getEngine();3132if ($engine->isTextMode()) {33return $result;34}3536if ($engine->isHTMLMailMode()) {37return phutil_tag('pre', array(), $result);38}3940return phutil_tag(41'div',42array(43'class' => 'PhabricatorMonospaced remarkup-figlet',44),45$result);46}4748private static function getFigletMap() {49$root = dirname(phutil_get_library_root('phabricator'));5051$dirs = array(52$root.'/externals/figlet/fonts/',53$root.'/externals/pear-figlet/fonts/',54$root.'/resources/figlet/custom/',55);5657$map = array();58foreach ($dirs as $dir) {59foreach (Filesystem::listDirectory($dir, false) as $file) {60if (preg_match('/\.flf\z/', $file)) {61$name = phutil_utf8_strtolower($file);62$name = preg_replace('/\.flf\z/', '', $name);63$map[$name] = $dir.$file;64}65}66}6768return $map;69}7071}727374