Mercurial > hg > isophonics-drupal-site
comparison vendor/phpunit/php-text-template/src/Template.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 /* | |
3 * This file is part of the Text_Template package. | |
4 * | |
5 * (c) Sebastian Bergmann <sebastian@phpunit.de> | |
6 * | |
7 * For the full copyright and license information, please view the LICENSE | |
8 * file that was distributed with this source code. | |
9 */ | |
10 | |
11 /** | |
12 * A simple template engine. | |
13 * | |
14 * @since Class available since Release 1.0.0 | |
15 */ | |
16 class Text_Template | |
17 { | |
18 /** | |
19 * @var string | |
20 */ | |
21 protected $template = ''; | |
22 | |
23 /** | |
24 * @var string | |
25 */ | |
26 protected $openDelimiter = '{'; | |
27 | |
28 /** | |
29 * @var string | |
30 */ | |
31 protected $closeDelimiter = '}'; | |
32 | |
33 /** | |
34 * @var array | |
35 */ | |
36 protected $values = array(); | |
37 | |
38 /** | |
39 * Constructor. | |
40 * | |
41 * @param string $file | |
42 * @throws InvalidArgumentException | |
43 */ | |
44 public function __construct($file = '', $openDelimiter = '{', $closeDelimiter = '}') | |
45 { | |
46 $this->setFile($file); | |
47 $this->openDelimiter = $openDelimiter; | |
48 $this->closeDelimiter = $closeDelimiter; | |
49 } | |
50 | |
51 /** | |
52 * Sets the template file. | |
53 * | |
54 * @param string $file | |
55 * @throws InvalidArgumentException | |
56 */ | |
57 public function setFile($file) | |
58 { | |
59 $distFile = $file . '.dist'; | |
60 | |
61 if (file_exists($file)) { | |
62 $this->template = file_get_contents($file); | |
63 } | |
64 | |
65 else if (file_exists($distFile)) { | |
66 $this->template = file_get_contents($distFile); | |
67 } | |
68 | |
69 else { | |
70 throw new InvalidArgumentException( | |
71 'Template file could not be loaded.' | |
72 ); | |
73 } | |
74 } | |
75 | |
76 /** | |
77 * Sets one or more template variables. | |
78 * | |
79 * @param array $values | |
80 * @param bool $merge | |
81 */ | |
82 public function setVar(array $values, $merge = TRUE) | |
83 { | |
84 if (!$merge || empty($this->values)) { | |
85 $this->values = $values; | |
86 } else { | |
87 $this->values = array_merge($this->values, $values); | |
88 } | |
89 } | |
90 | |
91 /** | |
92 * Renders the template and returns the result. | |
93 * | |
94 * @return string | |
95 */ | |
96 public function render() | |
97 { | |
98 $keys = array(); | |
99 | |
100 foreach ($this->values as $key => $value) { | |
101 $keys[] = $this->openDelimiter . $key . $this->closeDelimiter; | |
102 } | |
103 | |
104 return str_replace($keys, $this->values, $this->template); | |
105 } | |
106 | |
107 /** | |
108 * Renders the template and writes the result to a file. | |
109 * | |
110 * @param string $target | |
111 */ | |
112 public function renderTo($target) | |
113 { | |
114 $fp = @fopen($target, 'wt'); | |
115 | |
116 if ($fp) { | |
117 fwrite($fp, $this->render()); | |
118 fclose($fp); | |
119 } else { | |
120 $error = error_get_last(); | |
121 | |
122 throw new RuntimeException( | |
123 sprintf( | |
124 'Could not write to %s: %s', | |
125 $target, | |
126 substr( | |
127 $error['message'], | |
128 strpos($error['message'], ':') + 2 | |
129 ) | |
130 ) | |
131 ); | |
132 } | |
133 } | |
134 } | |
135 |