forked from phacility/phabricator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPhabricatorMarkupOneOff.php
80 lines (66 loc) · 1.91 KB
/
PhabricatorMarkupOneOff.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
/**
* Concrete object for accessing the markup engine with arbitrary blobs of
* text, like form instructions. Usage:
*
* $output = PhabricatorMarkupEngine::renderOneObject(
* id(new PhabricatorMarkupOneOff())->setContent($some_content),
* 'default',
* $viewer);
*
* This is less efficient than batching rendering, but appropriate for small
* amounts of one-off text in form instructions.
*/
final class PhabricatorMarkupOneOff implements PhabricatorMarkupInterface {
private $content;
private $preserveLinebreaks;
private $engineRuleset;
public function setEngineRuleset($engine_ruleset) {
$this->engineRuleset = $engine_ruleset;
return $this;
}
public function getEngineRuleset() {
return $this->engineRuleset;
}
public function setPreserveLinebreaks($preserve_linebreaks) {
$this->preserveLinebreaks = $preserve_linebreaks;
return $this;
}
public function setContent($content) {
$this->content = $content;
return $this;
}
public function getContent() {
return $this->content;
}
public function getMarkupFieldKey($field) {
return PhabricatorHash::digestForIndex($this->getContent()).':oneoff';
}
public function newMarkupEngine($field) {
if ($this->engineRuleset) {
return PhabricatorMarkupEngine::getEngine($this->engineRuleset);
} else if ($this->preserveLinebreaks) {
return PhabricatorMarkupEngine::getEngine();
} else {
return PhabricatorMarkupEngine::getEngine('nolinebreaks');
}
}
public function getMarkupText($field) {
return $this->getContent();
}
public function didMarkupText(
$field,
$output,
PhutilMarkupEngine $engine) {
require_celerity_resource('phabricator-remarkup-css');
return phutil_tag(
'div',
array(
'class' => 'phabricator-remarkup',
),
$output);
}
public function shouldUseMarkupCache($field) {
return true;
}
}