Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/infrastructure/markup/interpreter/PhabricatorRemarkupFigletBlockInterpreter.php
12242 views
1
<?php
2
3
final class PhabricatorRemarkupFigletBlockInterpreter
4
extends PhutilRemarkupBlockInterpreter {
5
6
public function getInterpreterName() {
7
return 'figlet';
8
}
9
10
/**
11
* @phutil-external-symbol class Text_Figlet
12
*/
13
public function markupContent($content, array $argv) {
14
$map = self::getFigletMap();
15
16
$font = idx($argv, 'font');
17
$font = ($font === null ? '' : $font);
18
$font = phutil_utf8_strtolower($font);
19
if (empty($map[$font])) {
20
$font = 'standard';
21
}
22
23
$root = dirname(phutil_get_library_root('phabricator'));
24
require_once $root.'/externals/pear-figlet/Text/Figlet.php';
25
26
$figlet = new Text_Figlet();
27
$figlet->loadFont($map[$font]);
28
29
$result = $figlet->lineEcho($content);
30
31
$engine = $this->getEngine();
32
33
if ($engine->isTextMode()) {
34
return $result;
35
}
36
37
if ($engine->isHTMLMailMode()) {
38
return phutil_tag('pre', array(), $result);
39
}
40
41
return phutil_tag(
42
'div',
43
array(
44
'class' => 'PhabricatorMonospaced remarkup-figlet',
45
),
46
$result);
47
}
48
49
private static function getFigletMap() {
50
$root = dirname(phutil_get_library_root('phabricator'));
51
52
$dirs = array(
53
$root.'/externals/figlet/fonts/',
54
$root.'/externals/pear-figlet/fonts/',
55
$root.'/resources/figlet/custom/',
56
);
57
58
$map = array();
59
foreach ($dirs as $dir) {
60
foreach (Filesystem::listDirectory($dir, false) as $file) {
61
if (preg_match('/\.flf\z/', $file)) {
62
$name = phutil_utf8_strtolower($file);
63
$name = preg_replace('/\.flf\z/', '', $name);
64
$map[$name] = $dir.$file;
65
}
66
}
67
}
68
69
return $map;
70
}
71
72
}
73
74