annotate vendor/chi-teck/drupal-code-generator/src/Asset.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents c75dbcec494b
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace DrupalCodeGenerator;
Chris@0 4
Chris@0 5 use DrupalCodeGenerator\Helper\Renderer;
Chris@0 6
Chris@0 7 /**
Chris@0 8 * Simple data structure to represent an asset being generated.
Chris@0 9 */
Chris@0 10 class Asset {
Chris@0 11
Chris@0 12 /**
Chris@0 13 * Asset path.
Chris@0 14 *
Chris@0 15 * @var string
Chris@0 16 */
Chris@0 17 protected $path;
Chris@0 18
Chris@0 19 /**
Chris@0 20 * Asset content.
Chris@0 21 *
Chris@0 22 * @var string
Chris@0 23 */
Chris@0 24 protected $content;
Chris@0 25
Chris@0 26 /**
Chris@0 27 * Twig template to render header.
Chris@0 28 *
Chris@0 29 * @var string
Chris@0 30 */
Chris@0 31 protected $headerTemplate;
Chris@0 32
Chris@0 33 /**
Chris@0 34 * Twig template to render main content.
Chris@0 35 *
Chris@0 36 * @var string
Chris@0 37 */
Chris@0 38 protected $template;
Chris@0 39
Chris@0 40 /**
Chris@0 41 * Template variables.
Chris@0 42 *
Chris@0 43 * @var array
Chris@0 44 */
Chris@0 45 protected $vars = [];
Chris@0 46
Chris@0 47 /**
Chris@0 48 * Action.
Chris@0 49 *
Chris@0 50 * This defines an action to take if specified file already exists.
Chris@0 51 *
Chris@0 52 * @var string
Chris@0 53 */
Chris@0 54 protected $action = 'replace';
Chris@0 55
Chris@0 56 /**
Chris@0 57 * Header size.
Chris@0 58 *
Chris@0 59 * @var int
Chris@0 60 */
Chris@0 61 protected $headerSize = 0;
Chris@0 62
Chris@0 63 /**
Chris@0 64 * Asset mode.
Chris@0 65 *
Chris@0 66 * @var int
Chris@0 67 */
Chris@0 68 protected $mode;
Chris@0 69
Chris@0 70 /**
Chris@0 71 * Asset type (file or directory).
Chris@0 72 *
Chris@0 73 * @var string
Chris@0 74 */
Chris@0 75 protected $type = 'file';
Chris@0 76
Chris@0 77 /**
Chris@0 78 * Getter for asset path.
Chris@0 79 *
Chris@0 80 * @return string
Chris@0 81 * Asset path.
Chris@0 82 */
Chris@0 83 public function getPath() {
Chris@0 84 return Utils::tokenReplace($this->path, $this->getVars());
Chris@0 85 }
Chris@0 86
Chris@0 87 /**
Chris@0 88 * Getter for asset content.
Chris@0 89 *
Chris@0 90 * @return string
Chris@0 91 * Asset content.
Chris@0 92 */
Chris@0 93 public function getContent() {
Chris@0 94 return $this->content;
Chris@0 95 }
Chris@0 96
Chris@0 97 /**
Chris@0 98 * Getter for header template.
Chris@0 99 *
Chris@0 100 * @return string
Chris@0 101 * Asset header template.
Chris@0 102 */
Chris@0 103 public function getHeaderTemplate() {
Chris@0 104 return $this->headerTemplate;
Chris@0 105 }
Chris@0 106
Chris@0 107 /**
Chris@0 108 * Getter for template.
Chris@0 109 *
Chris@0 110 * @return string
Chris@0 111 * Asset template.
Chris@0 112 */
Chris@0 113 public function getTemplate() {
Chris@0 114 return $this->template;
Chris@0 115 }
Chris@0 116
Chris@0 117 /**
Chris@0 118 * Getter for asset vars.
Chris@0 119 *
Chris@0 120 * @return array
Chris@0 121 * Asset template variables.
Chris@0 122 */
Chris@0 123 public function getVars() {
Chris@0 124 return $this->vars;
Chris@0 125 }
Chris@0 126
Chris@0 127 /**
Chris@0 128 * Getter for asset action.
Chris@0 129 *
Chris@0 130 * @return string
Chris@0 131 * Asset action.
Chris@0 132 */
Chris@0 133 public function getAction() {
Chris@0 134 return $this->action;
Chris@0 135 }
Chris@0 136
Chris@0 137 /**
Chris@0 138 * Getter for asset header size.
Chris@0 139 *
Chris@0 140 * @return string
Chris@0 141 * Asset header size.
Chris@0 142 */
Chris@0 143 public function getHeaderSize() {
Chris@0 144 return $this->headerSize;
Chris@0 145 }
Chris@0 146
Chris@0 147 /**
Chris@0 148 * Getter for asset mode.
Chris@0 149 *
Chris@0 150 * @return string
Chris@0 151 * Asset file mode.
Chris@0 152 */
Chris@0 153 public function getMode() {
Chris@0 154 return $this->mode ?: ($this->isDirectory() ? 0755 : 0644);
Chris@0 155 }
Chris@0 156
Chris@0 157 /**
Chris@0 158 * Getter for asset type.
Chris@0 159 *
Chris@0 160 * @return string
Chris@0 161 * Asset type.
Chris@0 162 */
Chris@0 163 public function getType() {
Chris@0 164 return $this->type;
Chris@0 165 }
Chris@0 166
Chris@0 167 /**
Chris@0 168 * Setter for asset path.
Chris@0 169 *
Chris@0 170 * @param string $path
Chris@0 171 * Asset path.
Chris@0 172 *
Chris@0 173 * @return \DrupalCodeGenerator\Asset
Chris@0 174 * The asset.
Chris@0 175 */
Chris@0 176 public function path($path) {
Chris@0 177 $this->path = $path;
Chris@0 178 return $this;
Chris@0 179 }
Chris@0 180
Chris@0 181 /**
Chris@0 182 * Setter for asset content.
Chris@0 183 *
Chris@0 184 * @param string $content
Chris@0 185 * Asset content.
Chris@0 186 *
Chris@0 187 * @return \DrupalCodeGenerator\Asset
Chris@0 188 * The asset.
Chris@0 189 */
Chris@0 190 public function content($content) {
Chris@0 191 $this->content = $content;
Chris@0 192 return $this;
Chris@0 193 }
Chris@0 194
Chris@0 195 /**
Chris@0 196 * Setter for asset header template.
Chris@0 197 *
Chris@0 198 * @param string $header_template
Chris@0 199 * Asset template.
Chris@0 200 *
Chris@0 201 * @return \DrupalCodeGenerator\Asset
Chris@0 202 * The asset.
Chris@0 203 */
Chris@0 204 public function headerTemplate($header_template) {
Chris@0 205 $this->headerTemplate = $header_template;
Chris@0 206 return $this;
Chris@0 207 }
Chris@0 208
Chris@0 209 /**
Chris@0 210 * Setter for asset template.
Chris@0 211 *
Chris@0 212 * @param string $template
Chris@0 213 * Asset template.
Chris@0 214 *
Chris@0 215 * @return \DrupalCodeGenerator\Asset
Chris@0 216 * The asset.
Chris@0 217 */
Chris@0 218 public function template($template) {
Chris@0 219 $this->template = $template;
Chris@0 220 return $this;
Chris@0 221 }
Chris@0 222
Chris@0 223 /**
Chris@0 224 * Setter for asset vars.
Chris@0 225 *
Chris@0 226 * @param array $vars
Chris@0 227 * Asset template variables.
Chris@0 228 *
Chris@0 229 * @return \DrupalCodeGenerator\Asset
Chris@0 230 * The asset.
Chris@0 231 */
Chris@0 232 public function vars(array $vars) {
Chris@0 233 $this->vars = $vars;
Chris@0 234 return $this;
Chris@0 235 }
Chris@0 236
Chris@0 237 /**
Chris@0 238 * Setter for asset action.
Chris@0 239 *
Chris@0 240 * @param string $action
Chris@0 241 * Asset action.
Chris@0 242 *
Chris@0 243 * @return \DrupalCodeGenerator\Asset
Chris@0 244 * The asset.
Chris@0 245 */
Chris@0 246 public function action($action) {
Chris@0 247 $this->action = $action;
Chris@0 248 return $this;
Chris@0 249 }
Chris@0 250
Chris@0 251 /**
Chris@0 252 * Setter for asset header size.
Chris@0 253 *
Chris@0 254 * @param int $header_size
Chris@0 255 * Asset header size.
Chris@0 256 *
Chris@0 257 * @return \DrupalCodeGenerator\Asset
Chris@0 258 * The asset.
Chris@0 259 */
Chris@0 260 public function headerSize($header_size) {
Chris@0 261 $this->headerSize = $header_size;
Chris@0 262 return $this;
Chris@0 263 }
Chris@0 264
Chris@0 265 /**
Chris@0 266 * Setter for asset mode.
Chris@0 267 *
Chris@0 268 * @param string $mode
Chris@0 269 * Asset mode.
Chris@0 270 *
Chris@0 271 * @return \DrupalCodeGenerator\Asset
Chris@0 272 * The asset.
Chris@0 273 */
Chris@0 274 public function mode($mode) {
Chris@0 275 $this->mode = $mode;
Chris@0 276 return $this;
Chris@0 277 }
Chris@0 278
Chris@0 279 /**
Chris@0 280 * Setter for asset type.
Chris@0 281 *
Chris@0 282 * @param string $type
Chris@0 283 * Asset type.
Chris@0 284 *
Chris@0 285 * @return \DrupalCodeGenerator\Asset
Chris@0 286 * The asset.
Chris@0 287 */
Chris@0 288 public function type($type) {
Chris@0 289 $this->type = $type;
Chris@0 290 return $this;
Chris@0 291 }
Chris@0 292
Chris@0 293 /**
Chris@0 294 * Determines if the asset is a directory.
Chris@0 295 *
Chris@0 296 * @return bool
Chris@0 297 * True if the asset is a directory, false otherwise.
Chris@0 298 */
Chris@0 299 public function isDirectory() {
Chris@0 300 return $this->getType() == 'directory';
Chris@0 301 }
Chris@0 302
Chris@0 303 /**
Chris@0 304 * Renders the asset template.
Chris@0 305 *
Chris@0 306 * @param \DrupalCodeGenerator\Helper\Renderer $renderer
Chris@0 307 * Renderer helper.
Chris@0 308 */
Chris@0 309 public function render(Renderer $renderer) {
Chris@0 310 if (!$this->isDirectory() && is_null($this->getContent())) {
Chris@0 311 $content = '';
Chris@0 312 if ($header_template = $this->getHeaderTemplate()) {
Chris@0 313 $content .= $renderer->render($header_template, $this->getVars()) . "\n";
Chris@0 314 }
Chris@0 315 $content .= $renderer->render($this->getTemplate(), $this->getVars());
Chris@0 316 $this->content($content);
Chris@0 317 }
Chris@0 318 }
Chris@0 319
Chris@0 320 }