-
Notifications
You must be signed in to change notification settings - Fork 62
/
Copy pathPatternCodeHelper.php
100 lines (75 loc) · 4.06 KB
/
PatternCodeHelper.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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
/*!
* Pattern Data Pattern Code Helper Class
*
* Copyright (c) 2014 Dave Olsen, http://dmolsen.com
* Licensed under the MIT license
*
* Renders patterns and stores the rendered code in PatternData::$store
*
*/
namespace PatternLab\PatternData\Helpers;
use \PatternLab\Config;
use \PatternLab\Console;
use \PatternLab\Data;
use \PatternLab\Dispatcher;
use \PatternLab\PatternData;
use \PatternLab\PatternEngine;
use \PatternLab\Template;
use \PatternLab\Timer;
class PatternCodeHelper extends \PatternLab\PatternData\Helper {
public function __construct($options = array()) {
parent::__construct($options);
$this->exportFiles = $options["exportFiles"];
$this->exportClean = $options["exportClean"];
$this->patternPaths = $options["patternPaths"];
}
public function run() {
// default vars
$options = array();
$options["patternPaths"] = $this->patternPaths;
$patternExtension = Config::getOption("patternExtension");
$patternSourceDir = Config::getOption("patternSourceDir");
$htmlHead = Template::getHTMLHead();
$htmlFoot = Template::getHTMLFoot();
$patternHead = Template::getPatternHead();
$patternFoot = Template::getPatternFoot();
$stringLoader = Template::getStringLoader();
$patternLoader = Template::getPatternLoader();
// re-load the pattern data since we modified it
$store = PatternData::get();
// iterate to process each pattern
foreach ($store as $patternStoreKey => $patternStoreData) {
if (($patternStoreData["category"] == "pattern") && isset($patternStoreData["name"])) {
$data = Data::getPatternSpecificData($patternStoreKey);
// add the pattern data so it can be exported
$patternData = array();
//$patternFooterData["patternFooterData"]["cssEnabled"] = (Config::$options["enableCSS"] && isset($this->patternCSS[$p])) ? "true" : "false";
$patternData["cssEnabled"] = false;
$patternData["lineage"] = isset($patternStoreData["lineages"]) ? $patternStoreData["lineages"] : array();
$patternData["lineageR"] = isset($patternStoreData["lineagesR"]) ? $patternStoreData["lineagesR"] : array();
$patternData["patternBreadcrumb"] = $patternStoreData["breadcrumb"];
$patternData["patternDesc"] = (isset($patternStoreData["desc"])) ? $patternStoreData["desc"] : "";
$patternData["patternExtension"] = $patternExtension;
$patternData["patternName"] = $patternStoreData["nameClean"];
$patternData["patternPartial"] = $patternStoreData["partial"];
$patternData["patternState"] = $patternStoreData["state"];
// extra copy for the code view
$patternData["extraOutput"] = isset($patternStoreData["extraOutput"]) ? $patternStoreData["extraOutput"] : array();
// add the pattern lab specific mark-up
// set a default var
$exportClean = (isset($options["exportClean"])) ? $options["exportClean"] : false;
$data["patternLabHead"] = (!$this->exportFiles) ? $stringLoader->render(array("string" => $htmlHead, "data" => array("cacheBuster" => $data["cacheBuster"]))) : "";
$data["patternLabFoot"] = (!$this->exportFiles) ? $stringLoader->render(array("string" => $htmlFoot, "data" => array("cacheBuster" => $data["cacheBuster"], "isPattern" => true, "patternData" => json_encode($patternData)))) : "";
if (isset($patternStoreData["patternRaw"])) {
$header = (!$this->exportClean) ? $patternLoader->render(array("pattern" => $patternHead, "data" => $data)) : "";
$code = $patternLoader->render(array("pattern" => $patternStoreData["patternRaw"], "data" => $data));
$footer = (!$this->exportClean) ? $patternLoader->render(array("pattern" => $patternFoot, "data" => $data)) : "";
PatternData::setPatternOption($patternStoreKey,"header",$header);
PatternData::setPatternOption($patternStoreKey,"code",$code);
PatternData::setPatternOption($patternStoreKey,"footer",$footer);
}
}
}
}
}