/** * Compare the search and ignore props against the name. * Can use && or || in the comparison * @param {String} the type of the pattern that should be used in the view all * @param {String} the subtype of the pattern that be used in the view all * * @return {Array} the list of partials */ public function run($type = "", $subtype = "") { // default vars $patternPartials = array(); $styleGuideExcludes = Config::getOption("styleGuideExcludes"); $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && !$patternStoreData["hidden"] && !$patternStoreData["noviewall"] && $patternStoreData["depth"] == 2 && !in_array($patternStoreData["type"], $styleGuideExcludes)) { if ($patternStoreData["type"] == $type && empty($subtype) || empty($type) && empty($subtype) || $patternStoreData["type"] == $type && $patternStoreData["subtype"] == $subtype) { $patternPartialData = array(); $patternPartialData["patternName"] = ucwords($patternStoreData["nameClean"]); $patternPartialData["patternLink"] = $patternStoreData["pathDash"] . "/" . $patternStoreData["pathDash"] . ".html"; $patternPartialData["patternPartial"] = $patternStoreData["partial"]; $patternPartialData["patternPartialCode"] = $patternStoreData["code"]; $patternPartialData["patternLineageExists"] = isset($patternStoreData["lineages"]); $patternPartialData["patternLineages"] = isset($patternStoreData["lineages"]) ? $patternStoreData["lineages"] : array(); $patternPartialData["patternLineageRExists"] = isset($patternStoreData["lineagesR"]); $patternPartialData["patternLineagesR"] = isset($patternStoreData["lineagesR"]) ? $patternStoreData["lineagesR"] : array(); $patternPartialData["patternLineageEExists"] = isset($patternStoreData["lineages"]) || isset($patternStoreData["lineagesR"]); $patternPartialData["patternDescExists"] = isset($patternStoreData["desc"]); $patternPartialData["patternDesc"] = isset($patternStoreData["desc"]) ? $patternStoreData["desc"] : ""; $patternPartialData["patternDescAdditions"] = isset($patternStoreData["partialViewDescAdditions"]) ? $patternStoreData["partialViewDescAdditions"] : array(); $patternPartialData["patternExampleAdditions"] = isset($patternStoreData["partialViewExampleAdditions"]) ? $patternStoreData["partialViewExampleAdditions"] : array(); //$patternPartialData["patternCSSExists"] = Config::$options["enableCSS"]; $patternPartialData["patternCSSExists"] = false; $patternPartials[] = $patternPartialData; } } } return array("partials" => $patternPartials, "cacheBuster" => Data::getOption("cacheBuster")); }
public function run($depth, $ext, $path, $pathName, $name) { // load default vars $patternType = PatternData::getPatternType(); $patternTypeDash = PatternData::getPatternTypeDash(); $patternTypeClean = PatternData::getPatternTypeClean(); $dirSep = PatternData::getDirSep(); // set-up the names $patternSubtype = $name; // 02-blocks $patternSubtypeDash = $this->getPatternName($name, false); // blocks $patternSubtypeClean = str_replace("-", " ", $patternSubtypeDash); // blocks (dashes replaced with spaces) $patternSubtypePath = $pathName; // 00-atoms/02-blocks $patternSubtypePathDash = str_replace($dirSep, "-", $patternSubtypePath); // 00-atoms-02-blocks (file path) // create a key for the data store $patternStoreKey = $patternTypeDash . "-" . $patternSubtypeDash . "-plsubtype"; // collect the data $patternStoreData = array("category" => "patternSubtype", "name" => $patternSubtype, "nameDash" => $patternSubtypeDash, "nameClean" => $patternSubtypeClean, "type" => $patternType, "typeDash" => $patternTypeDash, "breadcrumb" => $patternTypeClean, "depth" => $depth, "ext" => $ext, "path" => $path, "pathName" => $patternSubtypePath, "pathDash" => $patternSubtypePathDash, "isDir" => $this->isDirProp, "isFile" => $this->isFileProp); // if the pattern data store already exists make sure it is merged and overwrites this data $patternStoreData = PatternData::checkOption($patternStoreKey) ? array_replace_recursive(PatternData::getOption($patternStoreKey), $patternStoreData) : $patternStoreData; PatternData::setOption($patternStoreKey, $patternStoreData); // starting a new set of pattern types. it might not have any pattern subtypes PatternData::setPatternSubtype($patternSubtype); PatternData::setPatternSubtypeClean($patternSubtypeClean); PatternData::setPatternSubtypeDash($patternSubtypeDash); PatternData::setPatternSubtypeSet(true); }
public function __construct($options = array()) { parent::__construct($options); $this->store = PatternData::get(); $this->cacheBuster = Data::getOption("cacheBuster"); $this->styleGuideExcludes = Config::getOption("styleGuideExcludes"); }
public function run($depth, $ext, $path, $pathName, $name) { // load default vars $dirSep = PatternData::getDirSep(); // set-up the names $patternType = $name; // 00-atoms $patternTypeDash = $this->getPatternName($name, false); // atoms $patternTypeClean = str_replace("-", " ", $patternTypeDash); // atoms (dashes replaced with spaces) $patternTypePath = $pathName; // 00-atoms/02-blocks $patternTypePathDash = str_replace($dirSep, "-", $patternTypePath); // 00-atoms-02-blocks (file path) // create a key for the data store $patternStoreKey = $patternTypeDash . "-pltype"; // add a new patternType to the nav $patternData = array("category" => "patternType", "name" => $patternType, "nameDash" => $patternTypeDash, "nameClean" => $patternTypeClean, "depth" => $depth, "ext" => $ext, "path" => $path, "pathName" => $patternTypePath, "pathDash" => $patternTypePathDash, "isDir" => $this->isDirProp, "isFile" => $this->isFileProp); PatternData::setOption($patternStoreKey, $patternData); // starting a new set of pattern types. it might not have any pattern subtypes PatternData::setPatternType($patternType); PatternData::setPatternTypeClean($patternTypeClean); PatternData::setPatternTypeDash($patternTypeDash); }
public function __construct(\Twig_Environment $env) { $this->env = $env; // TODO: Add an accessor function for $reservedKeys to the Data class? $this->reservedKeys = array("cacheBuster", "link", "patternSpecific", "patternLabHead", "patternLabFoot"); $this->patternDataStore = PatternData::get(); $this->processed = array(); }
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(); // re-load the pattern data since we modified it $store = PatternData::get(); // load the pattern loader $patternEngineBasePath = PatternEngine::getInstance()->getBasePath(); $patternLoaderClass = $patternEngineBasePath . "\\Loaders\\PatternLoader"; $patternLoader = new $patternLoaderClass($options); // iterate to process each pattern FileChangeList::touchParentPatterns($store); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && !$patternStoreData["hidden"]) { $fileName = FileChangeList::getFileNameByPatternData($patternStoreData); if (!Config::getOption("update") || FileChangeList::hasChanged($fileName)) { $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"], "patternData" => json_encode($patternData)))) : ""; if (isset($patternStoreData["patternRaw"])) { $header = !$this->exportClean ? $stringLoader->render(array("string" => $patternHead, "data" => $data)) : ""; $code = $patternLoader->render(array("pattern" => $patternStoreData["patternRaw"], "data" => $data)); $footer = !$this->exportClean ? $stringLoader->render(array("string" => $patternFoot, "data" => $data)) : ""; PatternData::setPatternOption($patternStoreKey, "header", $header); PatternData::setPatternOption($patternStoreKey, "code", $code); PatternData::setPatternOption($patternStoreKey, "footer", $footer); } } } } }
/** * Pulls together a bunch of functions from builder.lib.php in an order that makes sense * @param {Boolean} decide if CSS should be parsed and saved. performance hog. * @param {Boolean} decide if static files like CSS and JS should be moved */ public function generate($options = array()) { // double-checks options was properly set if (empty($options)) { Console::writeError("need to pass options to generate..."); } // set the default vars $moveStatic = isset($options["moveStatic"]) ? $options["moveStatic"] : true; $noCacheBuster = isset($options["noCacheBuster"]) ? $options["noCacheBuster"] : false; $exportFiles = isset($options["exportFiles"]) ? $options["exportFiles"] : false; $exportClean = isset($options["exportClean"]) ? $options["exportClean"] : false; $watchMessage = isset($options["watchMessage"]) ? $options["watchMessage"] : false; $watchVerbose = isset($options["watchVerbose"]) ? $options["watchVerbose"] : false; $update = isset($options["update"]) ? $options["update"] : false; Config::setOption("update", $update); if ($noCacheBuster) { Config::updateOption("cacheBuster", 0); } FileChangeList::init(Config::getOption("publicDir") . DIRECTORY_SEPARATOR . "fileChangeList.csv"); // gather up all of the data to be used in patterns Data::gather(); // gather all of the various pattern info $options = array(); $options["exportClean"] = $exportClean; $options["exportFiles"] = $exportFiles; PatternData::gather($options); // gather the annotations Annotations::gather(); // clean the public directory to remove old files if (Config::getOption("cleanPublic") == "true" && $moveStatic) { FileUtil::cleanPublic(); } // render out the index and style guide $this->generateIndex(); $this->generateStyleguide(); $this->generateViewAllPages(); // render out the patterns and move them to public/patterns $options = array(); $options["exportFiles"] = $exportFiles; $this->generatePatterns($options); // render the annotations as a js file $this->generateAnnotations(); // move all of the files unless pattern only is set if ($moveStatic) { $this->moveStatic(); } // update the change time so the auto-reload will fire (doesn't work for the index and style guide) Util::updateChangeTime(); FileChangeList::write(); if ($watchVerbose && $watchMessage) { Console::writeLine($watchMessage); } else { Console::writeLine("your site has been generated..."); Timer::stop(); } }
public function run() { $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern") { $value = "../../" . $patternStoreData["pathDash"] . "/" . $patternStoreData["pathDash"] . ".html"; Data::setOptionLink($patternStoreKey, $value); } } }
public function run() { $lookupPartials = array(); $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern") { $lookupPartials[$patternStoreData["partial"]] = $patternStoreData["pathName"]; } } return $lookupPartials; }
public function run($depth, $ext, $path, $pathName, $name) { // load default vars $patternSubtype = PatternData::getPatternSubtype(); $patternSubtypeClean = PatternData::getPatternSubtypeClean(); $patternSubtypeDash = PatternData::getPatternSubtypeDash(); $patternType = PatternData::getPatternType(); $patternTypeClean = PatternData::getPatternTypeClean(); $patternTypeDash = PatternData::getPatternTypeDash(); $dirSep = PatternData::getDirSep(); $frontMeta = PatternData::getFrontMeta(); // should this pattern get rendered? $hidden = $name[0] == "_"; $noviewall = $name[0] == "-"; // set-up the names $patternFull = in_array($name[0], $frontMeta) ? substr($name, 1) : $name; // 00-colors.mustache $pattern = str_replace("." . $this->extProp, "", $patternFull); // 00-colors $patternState = ""; // check for pattern state if (strpos($pattern, "@") !== false) { $patternBits = explode("@", $pattern, 2); $pattern = $patternBits[0]; $patternState = $patternBits[1]; } // finish setting up vars $patternDash = $this->getPatternName($pattern, false); // colors $patternClean = str_replace("-", " ", $patternDash); // colors (dashes replaced with spaces) $patternPartial = $patternTypeDash . "-" . $patternDash; // atoms-colors $patternPath = str_replace("." . $this->extProp, "", $pathName); // 00-atoms/01-global/00-colors $patternPathDash = str_replace($dirSep, "-", $patternPath); // 00-atoms-01-global-00-colors (file path) // create a key for the data store $patternStoreKey = $patternPartial; // collect the data $patternStoreData = array("category" => "pattern", "name" => $pattern, "partial" => $patternPartial, "nameDash" => $patternDash, "nameClean" => $patternClean, "type" => $patternType, "typeDash" => $patternTypeDash, "breadcrumb" => $patternTypeClean, "state" => $patternState, "hidden" => $hidden, "noviewall" => $noviewall, "depth" => $depth, "ext" => $ext, "path" => $path, "pathName" => $patternPath, "pathDash" => $patternPathDash, "isDir" => $this->isDirProp, "isFile" => $this->isFileProp, "partialViewDescAdditions" => array(), "partialViewExampleAdditions" => array(), "extraHolder" => array(), "extraOutput" => array()); // add any subtype info if necessary if ($depth == 2) { $patternStoreData["subtype"] = $patternSubtype; $patternStoreData["subtypeDash"] = $patternSubtypeDash; $patternStoreData["breadcrumb"] = $patternTypeClean . " > " . $patternSubtypeClean; } // if the pattern data store already exists make sure it is merged and overwrites this data $patternStoreData = PatternData::checkOption($patternStoreKey) ? array_replace_recursive(PatternData::getOption($patternStoreKey), $patternStoreData) : $patternStoreData; PatternData::setOption($patternStoreKey, $patternStoreData); }
public function run() { $patternPathDests = array(); $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern") { $nameDash = $patternStoreData["nameDash"]; $typeDash = $patternStoreData["typeDash"]; if (!isset($patternPathDests[$typeDash])) { $patternPathDests[$typeDash] = array(); } $patternPathDests[$typeDash][$nameDash] = $patternStoreData["pathName"]; } } return $patternPathDests; }
public function run($depth, $ext, $path, $pathName, $name) { // load default vars $patternType = PatternData::getPatternType(); $patternTypeDash = PatternData::getPatternTypeDash(); $dirSep = PatternData::getDirSep(); // make sure the pattern isn't hidden $hidden = $name[0] == "_"; // set-up the names, $name == 00-colors.md $doc = str_replace("." . $this->extProp, "", $name); // 00-colors $docDash = $this->getPatternName(str_replace("_", "", $doc), false); // colors $docPartial = $patternTypeDash . "-" . $docDash; // if the pattern isn't hidden do stuff if (!$hidden) { // default vars $patternSourceDir = Config::getOption("patternSourceDir"); // parse data $text = file_get_contents($patternSourceDir . "/" . $pathName); list($yaml, $markdown) = Documentation::parse($text); // grab the title and unset it from the yaml so it doesn't get duped in the meta if (isset($yaml["title"])) { $title = $yaml["title"]; unset($yaml["title"]); } // figure out if this is a pattern subtype $patternSubtypeDoc = false; if ($depth == 1) { // go through all of the directories to see if this one matches our doc foreach (glob($patternSourceDir . "/" . $patternType . "/*", GLOB_ONLYDIR) as $dir) { $dir = str_replace($patternSourceDir . "/" . $patternType . "/", "", $dir); if ($dir == $doc) { $patternSubtypeDoc = true; break; } } } $category = $patternSubtypeDoc ? "patternSubtype" : "pattern"; $patternStoreKey = $patternSubtypeDoc ? $docPartial . "-plsubtype" : $docPartial; $patternStoreData = array("category" => $category, "nameClean" => $title, "desc" => $markdown, "descExists" => true, "meta" => $yaml, "full" => $doc); // if the pattern data store already exists make sure this data overwrites it $patternStoreData = PatternData::checkOption($patternStoreKey) ? array_replace_recursive(PatternData::getOption($patternStoreKey), $patternStoreData) : $patternStoreData; PatternData::setOption($patternStoreKey, $patternStoreData); } }
/** * Compare the search and ignore props against the name. * Can use && or || in the comparison * @param {String} the type of the pattern that should be used in the view all * @param {String} the subtype of the pattern that be used in the view all * * @return {Array} the list of partials */ public function run($type = "", $subtype = "") { // default vars $patternPartials = array(); $styleGuideExcludes = Config::getOption("styleGuideExcludes"); $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && !$patternStoreData["hidden"] && !$patternStoreData["noviewall"] && $patternStoreData["depth"] == 2 && !in_array($patternStoreData["type"], $styleGuideExcludes)) { if ($patternStoreData["type"] == $type && empty($subtype) || empty($type) && empty($subtype) || $patternStoreData["type"] == $type && $patternStoreData["subtype"] == $subtype) { $patternPartialData = array(); $patternPartialData["patternName"] = ucwords($patternStoreData["nameClean"]); $patternPartialData["patternLink"] = $patternStoreData["pathDash"] . "/" . $patternStoreData["pathDash"] . ".html"; $patternPartialData["patternPartial"] = $patternStoreData["partial"]; $patternPartialData["patternPartialCode"] = $patternStoreData["code"]; $patternPartialData["patternLineageExists"] = isset($patternStoreData["lineages"]); $patternPartialData["patternLineages"] = isset($patternStoreData["lineages"]) ? $patternStoreData["lineages"] : array(); $patternPartialData["patternLineageRExists"] = isset($patternStoreData["lineagesR"]); $patternPartialData["patternLineagesR"] = isset($patternStoreData["lineagesR"]) ? $patternStoreData["lineagesR"] : array(); $patternPartialData["patternLineageEExists"] = isset($patternStoreData["lineages"]) || isset($patternStoreData["lineagesR"]); $patternPartialData["patternDescExists"] = isset($patternStoreData["desc"]); $patternPartialData["patternDesc"] = isset($patternStoreData["desc"]) ? $patternStoreData["desc"] : ""; $patternPartialData["patternDescAdditions"] = isset($patternStoreData["partialViewDescAdditions"]) ? $patternStoreData["partialViewDescAdditions"] : array(); $patternPartialData["patternExampleAdditions"] = isset($patternStoreData["partialViewExampleAdditions"]) ? $patternStoreData["partialViewExampleAdditions"] : array(); //$patternPartialData["patternCSSExists"] = Config::$options["enableCSS"]; $patternPartialData["patternCSSExists"] = false; // 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"] = ".mustache"; $patternData["patternName"] = $patternStoreData["nameClean"]; $patternData["patternPartial"] = $patternStoreData["partial"]; $patternData["patternState"] = $patternStoreData["state"]; $patternPartialData["patternData"] = json_encode($patternData); $patternPartials[] = $patternPartialData; } } } return array("partials" => $patternPartials, "cacheBuster" => Data::getOption("cacheBuster")); }
public function run() { $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern") { if (isset($patternStoreData["data"]) || isset($patternStoreData["listItems"])) { Data::initPattern($patternStoreKey); } if (isset($patternStoreData["data"])) { Data::setPatternData($patternStoreKey, $patternStoreData["data"]); } if (isset($patternStoreData["listItems"])) { Data::setPatternListItems($patternStoreKey, $patternStoreData["listItems"]); } } } // walk across the data and change link.pattern-partial to real source Data::compareReplaceListVarsInit(); }
public function run() { $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern") { if (isset($patternStoreData["data"]) || isset($patternStoreData["listItems"])) { Data::initPattern($patternStoreKey); } if (isset($patternStoreData["data"])) { Data::setPatternData($patternStoreKey, $patternStoreData["data"]); } if (isset($patternStoreData["listItems"])) { Data::setPatternListItems($patternStoreKey, $patternStoreData["listItems"]); } } } // walk across the data and change link.pattern-partial to real source $data = Data::get(); array_walk_recursive($data, '\\PatternLab\\Util::compareReplace'); }
public function run($depth, $ext, $path, $pathName, $name) { // load default vars $patternTypeDash = PatternData::getPatternTypeDash(); // set-up the names, $name == foo.listitems.json $pattern = str_replace(".listitems." . $ext, "", $name); // foo $patternDash = $this->getPatternName($pattern, false); // foo $patternPartial = $patternTypeDash . "-" . $patternDash; // atoms-foo $patternStoreData = array("category" => "pattern"); $data = Data::getListItems("_patterns/" . $pathName, $ext); $patternStoreData["listItems"] = $data; // create a key for the data store $patternStoreKey = $patternPartial; // if the pattern data store already exists make sure it is merged and overwrites this data $patternStoreData = PatternData::checkOption($patternStoreKey) ? array_replace_recursive(PatternData::getOption($patternStoreKey), $patternStoreData) : $patternStoreData; PatternData::setOption($patternStoreKey, $patternStoreData); }
public function run($depth, $ext, $path, $pathName, $name) { // load default vars $patternTypeDash = PatternData::getPatternTypeDash(); // should this pattern get rendered? $hidden = $name[0] == "_"; // set-up the names, $name == foo.json $pattern = str_replace("." . $ext, "", $name); // foo $patternDash = $this->getPatternName($pattern, false); // foo $patternPartial = $patternTypeDash . "-" . $patternDash; // atoms-foo if (!$hidden) { $patternStoreData = array("category" => "pattern"); $file = file_get_contents(Config::getOption("patternSourceDir") . "/" . $pathName); if ($ext == "json") { $data = json_decode($file, true); if ($jsonErrorMessage = JSON::hasError()) { JSON::lastErrorMsg($name, $jsonErrorMessage, $data); } } else { try { $data = YAML::parse($file); } catch (ParseException $e) { printf("unable to parse " . $pathNameClean . ": %s..\n", $e->getMessage()); } // single line of text won't throw a YAML error. returns as string if (gettype($data) == "string") { $data = array(); } } $patternStoreData["data"] = $data; // create a key for the data store $patternStoreKey = $patternPartial; // if the pattern data store already exists make sure it is merged and overwrites this data $patternStoreData = PatternData::checkOption($patternStoreKey) ? array_replace_recursive(PatternData::getOption($patternStoreKey), $patternStoreData) : $patternStoreData; PatternData::setOption($patternStoreKey, $patternStoreData); } }
public function run() { // load default vars $patternExtension = Config::getOption("patternExtension"); $patternSourceDir = Config::getOption("patternSourceDir"); // load the pattern data $store = PatternData::get(); // iterate to get raw data loaded into the PatternData Store foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && !$patternStoreData["hidden"]) { // figure out the source path for the pattern to render $srcPath = isset($patternStoreData["pseudo"]) ? PatternData::getPatternOption($patternStoreData["original"], "pathName") : $patternStoreData["pathName"]; // load the raw data so it can be modified/rendered $path = $patternSourceDir . "/" . $srcPath . "." . $patternExtension; if (file_exists($path)) { PatternData::setPatternOption($patternStoreKey, "patternRaw", file_get_contents($path)); } else { Console::writeError($patternStoreData["partial"] . " wasn't found for loading. the given path: " . $path); } } } }
/** * Generates the view all pages */ protected function generateViewAllPages() { // set-up the dispatcher $dispatcherInstance = Dispatcher::getInstance(); // note the beginning of the operation $dispatcherInstance->dispatch("builder.generateViewAllPagesStart"); // default vars $patternPublicDir = Config::getOption("patternPublicDir"); $htmlHead = Template::getHTMLHead(); $htmlFoot = Template::getHTMLFoot(); $patternHead = Template::getPatternHead(); $patternFoot = Template::getPatternFoot(); $filesystemLoader = Template::getFilesystemLoader(); $stringLoader = Template::getStringLoader(); // make sure the pattern dir exists if (!is_dir($patternPublicDir)) { mkdir($patternPublicDir); } // add view all to each list $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "patternSubtype") { // grab the partials into a data object for the style guide $ppExporter = new PatternPartialsExporter(); $partials = $ppExporter->run($patternStoreData["type"], $patternStoreData["name"]); if (!empty($partials["partials"])) { // add the pattern data so it can be exported $patternData = array(); $patternData["patternPartial"] = "viewall-" . $patternStoreData["typeDash"] . "-" . $patternStoreData["nameDash"]; // add the pattern lab specific mark-up $partials["patternLabHead"] = $stringLoader->render(array("string" => $htmlHead, "data" => array("cacheBuster" => $partials["cacheBuster"]))); $partials["patternLabFoot"] = $stringLoader->render(array("string" => $htmlFoot, "data" => array("cacheBuster" => $partials["cacheBuster"], "patternData" => json_encode($patternData)))); // render the parts and join them $header = $stringLoader->render(array("string" => $patternHead, "data" => $partials)); $code = $filesystemLoader->render(array("template" => "viewall", "data" => $partials)); $footer = $stringLoader->render(array("string" => $patternFoot, "data" => $partials)); $viewAllPage = $header . $code . $footer; // if the pattern directory doesn't exist create it $patternPath = $patternStoreData["pathDash"]; if (!is_dir($patternPublicDir . "/" . $patternPath)) { mkdir($patternPublicDir . "/" . $patternPath); file_put_contents($patternPublicDir . "/" . $patternPath . "/index.html", $viewAllPage); } else { file_put_contents($patternPublicDir . "/" . $patternPath . "/index.html", $viewAllPage); } } } else { if ($patternStoreData["category"] == "patternType" && PatternData::hasPatternSubtype($patternStoreData["nameDash"])) { // grab the partials into a data object for the style guide $ppExporter = new PatternPartialsExporter(); $partials = $ppExporter->run($patternStoreData["name"]); if (!empty($partials["partials"])) { // add the pattern data so it can be exported $patternData = array(); $patternData["patternPartial"] = "viewall-" . $patternStoreData["nameDash"] . "-all"; // add the pattern lab specific mark-up $partials["patternLabHead"] = $stringLoader->render(array("string" => $htmlHead, "data" => array("cacheBuster" => $partials["cacheBuster"]))); $partials["patternLabFoot"] = $stringLoader->render(array("string" => $htmlFoot, "data" => array("cacheBuster" => $partials["cacheBuster"], "patternData" => json_encode($patternData)))); // render the parts and join them $header = $stringLoader->render(array("string" => $patternHead, "data" => $partials)); $code = $filesystemLoader->render(array("template" => "viewall", "data" => $partials)); $footer = $stringLoader->render(array("string" => $patternFoot, "data" => $partials)); $viewAllPage = $header . $code . $footer; // if the pattern directory doesn't exist create it $patternPath = $patternStoreData["pathDash"]; if (!is_dir($patternPublicDir . "/" . $patternPath)) { mkdir($patternPublicDir . "/" . $patternPath); file_put_contents($patternPublicDir . "/" . $patternPath . "/index.html", $viewAllPage); } else { file_put_contents($patternPublicDir . "/" . $patternPath . "/index.html", $viewAllPage); } } } } } // note the end of the operation $dispatcherInstance->dispatch("builder.generateViewAllPagesEnd"); }
public function run() { // set-up default vars $foundLineages = array(); $patternSourceDir = Config::getOption("patternSourceDir"); $patternExtension = Config::getOption("patternExtension"); // check for the regular lineages in only normal patterns $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && !isset($patternStoreData["pseudo"])) { $patternLineages = array(); $fileData = isset($patternStoreData["patternRaw"]) ? $patternStoreData["patternRaw"] : ""; $foundLineages = $this->findLineages($fileData); if (!empty($foundLineages)) { foreach ($foundLineages as $lineage) { $lineageData = PatternData::getOption($lineage); if ($lineageData) { $patternLineages[] = array("lineagePattern" => $lineage, "lineagePath" => "../../patterns/" . $lineageData["pathDash"] . "/" . $lineageData["pathDash"] . ".html"); } else { if (strpos($lineage, '/') === false) { $fileName = $patternStoreData["pathName"] . "." . $patternExtension; Console::writeWarning("you may have a typo in " . $fileName . ". {{> " . $lineage . " }} is not a valid pattern..."); } } } // add the lineages to the PatternData::$store PatternData::setPatternOption($patternStoreKey, "lineages", $patternLineages); } } } // handle all of those pseudo patterns $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && isset($patternStoreData["pseudo"])) { // add the lineages to the PatternData::$store $patternStoreKeyOriginal = $patternStoreData["original"]; PatternData::setPatternOption($patternStoreKey, "lineages", PatternData::getPatternOption($patternStoreKeyOriginal, "lineages")); } } // check for the reverse lineages and skip pseudo patterns $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && !isset($patternStoreData["pseudo"])) { $patternLineagesR = array(); $storeTake2 = PatternData::get(); foreach ($storeTake2 as $haystackKey => $haystackData) { if ($haystackData["category"] == "pattern" && isset($haystackData["lineages"]) && !empty($haystackData["lineages"])) { foreach ($haystackData["lineages"] as $haystackLineage) { if ($haystackLineage["lineagePattern"] == $patternStoreData["partial"]) { $foundAlready = false; foreach ($patternLineagesR as $patternCheck) { if ($patternCheck["lineagePattern"] == $patternStoreData["partial"]) { $foundAlready = true; break; } } if (!$foundAlready) { if (PatternData::getOption($haystackKey)) { $path = PatternData::getPatternOption($haystackKey, "pathDash"); $patternLineagesR[] = array("lineagePattern" => $haystackKey, "lineagePath" => "../../patterns/" . $path . "/" . $path . ".html"); } } } } } } PatternData::setPatternOption($patternStoreKey, "lineagesR", $patternLineagesR); } } // handle all of those pseudo patterns $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && isset($patternStoreData["pseudo"])) { // add the lineages to the PatternData::$store $patternStoreKeyOriginal = $patternStoreData["original"]; PatternData::setPatternOption($patternStoreKey, "lineagesR", PatternData::getPatternOption($patternStoreKeyOriginal, "lineagesR")); } } }
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(); // re-load the pattern data since we modified it $store = PatternData::get(); /* rtl support start */ foreach (array_keys($store) as $patternStoreKey) { if ($store[$patternStoreKey]['isFile']) { $store[$patternStoreKey]['patternTextDirection'] = 'ltr'; $store[$patternStoreKey . '-rtl'] = $store[$patternStoreKey]; $store[$patternStoreKey . '-rtl']['name'] .= '-rtl'; $store[$patternStoreKey . '-rtl']['pathDash'] .= '-rtl'; $store[$patternStoreKey . '-rtl']['patternTextDirection'] = 'rtl'; $store[$patternStoreKey . '-rtl']['nameDash'] .= '-rtl'; $store[$patternStoreKey . '-rtl']['nameClean'] .= ' (RTL)'; $store[$patternStoreKey . '-rtl']['partial'] .= '-rtl'; } } foreach ($store as $patternStoreKey => $patternStoreData) { PatternData::setOption($patternStoreKey, $patternStoreData); } /* rtl support end */ // load the pattern loader $patternEngineBasePath = PatternEngine::getInstance()->getBasePath(); $patternLoaderClass = $patternEngineBasePath . "\\Loaders\\PatternLoader"; $patternLoader = new $patternLoaderClass($options); // iterate to process each pattern foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern" && !$patternStoreData["hidden"]) { $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"], "patternData" => json_encode($patternData)))) : ""; /* add text-direction */ $data['patternTextDirection'] = $store[$patternStoreKey]['patternTextDirection']; /* add text-direction end */ if (isset($patternStoreData["patternRaw"])) { $header = !$this->exportClean ? $stringLoader->render(array("string" => $patternHead, "data" => $data)) : ""; $code = $patternLoader->render(array("pattern" => $patternStoreData["patternRaw"], "data" => $data)); $footer = !$this->exportClean ? $stringLoader->render(array("string" => $patternFoot, "data" => $data)) : ""; PatternData::setPatternOption($patternStoreKey, "header", $header); PatternData::setPatternOption($patternStoreKey, "code", $code); PatternData::setPatternOption($patternStoreKey, "footer", $footer); } } } }
public function run($depth, $ext, $path, $pathName, $name) { // load default vars $patternSubtype = PatternData::getPatternSubtype(); $patternSubtypeClean = PatternData::getPatternSubtypeClean(); $patternSubtypeDash = PatternData::getPatternSubtypeDash(); $patternType = PatternData::getPatternType(); $patternTypeClean = PatternData::getPatternTypeClean(); $patternTypeDash = PatternData::getPatternTypeDash(); $dirSep = PatternData::getDirSep(); $frontMeta = PatternData::getFrontMeta(); // should this pattern get rendered? $hidden = $name[0] == "_"; $noviewall = $name[0] == "-"; // set-up the names $patternFull = in_array($name[0], $frontMeta) ? substr($name, 1) : $name; // 00-colors~foo.mustache $patternState = ""; // check for pattern state if (strpos($patternFull, "@") !== false) { $patternBits = explode("@", $patternFull, 2); $patternState = str_replace("." . $ext, "", $patternBits[1]); $patternFull = preg_replace("/@(.*?)\\./", ".", $patternFull); } // finish setting up vars $patternBits = explode("~", $patternFull); $patternBase = $patternBits[0] . "." . Config::getOption("patternExtension"); // 00-homepage.mustache $patternBaseDash = $this->getPatternName($patternBits[0], false); // homepage $patternBaseOrig = $patternTypeDash . "-" . $patternBaseDash; // pages-homepage $patternBaseData = $patternBits[0] . "." . $ext; // 00-homepage.json $stripJSON = str_replace("." . $ext, "", $patternBits[1]); $patternBitClean = preg_replace("/@(.*?)/", "", $patternBits[0]); $pattern = $patternBitClean . "-" . $stripJSON; // 00-homepage-00-emergency $patternInt = $patternBitClean . "-" . $this->getPatternName($stripJSON, false); // 00-homepage-emergency $patternDash = $this->getPatternName($patternInt, false); // homepage-emergency $patternClean = str_replace("-", " ", $patternDash); // homepage emergency $patternPartial = $patternTypeDash . "-" . $patternDash; // pages-homepage-emergency $patternPath = str_replace("." . $ext, "", str_replace("~", "-", $pathName)); // 00-atoms/01-global/00-colors $patternPathDash = str_replace($dirSep, "-", $patternPath); // 00-atoms-01-global-00-colors (file path) // check the original pattern path. if it doesn't exist make a guess $patternPathOrig = PatternData::getPatternOption($patternBaseOrig, "pathName"); // 04-pages/00-homepage $patternPathOrigDash = PatternData::getPatternOption($patternBaseOrig, "pathDash"); // 04-pages-00-homepage if (!$patternPathOrig) { $patternPathOrigBits = explode("~", $pathName); $patternPathOrig = $patternPathOrigBits[0]; // 04-pages/00-homepage $patternPathOrigDash = str_replace($dirSep, "-", $patternPathOrig); // 04-pages-00-homepage } // create a key for the data store $patternStoreKey = $patternPartial; // collect the data $patternStoreData = array("category" => "pattern", "name" => $pattern, "partial" => $patternPartial, "nameDash" => $patternDash, "nameClean" => $patternClean, "type" => $patternType, "typeDash" => $patternTypeDash, "breadcrumb" => array("patternType" => $patternTypeClean), "state" => $patternState, "hidden" => $hidden, "noviewall" => $noviewall, "depth" => $depth, "ext" => $ext, "path" => $path, "pathName" => $patternPath, "pathDash" => $patternPathDash, "isDir" => $this->isDirProp, "isFile" => $this->isFileProp, "pseudo" => true, "original" => $patternBaseOrig, "pathOrig" => $patternPathOrig, "pathOrigDash" => $patternPathOrigDash); // add any subtype info if necessary if ($depth > 1) { $patternStoreData["subtype"] = $patternSubtype; $patternStoreData["subtypeDash"] = $patternSubtypeDash; $patternStoreData["breadcrumb"] = array("patternType" => $patternTypeClean, "patternSubtype" => $patternSubtypeClean); } $patternDataBase = array(); if (file_exists(Config::getOption("patternSourceDir") . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . $patternBaseData)) { $data = file_get_contents(Config::getOption("patternSourceDir") . DIRECTORY_SEPARATOR . $path . DIRECTORY_SEPARATOR . $patternBaseData); if ($ext == "json") { $patternDataBase = json_decode($data, true); if ($jsonErrorMessage = JSON::hasError()) { JSON::lastErrorMsg($patternBaseJSON, $jsonErrorMessage, $data); } } else { try { $patternDataBase = YAML::parse($data); } catch (ParseException $e) { printf("unable to parse " . $pathNameClean . ": %s..\n", $e->getMessage()); } // single line of text won't throw a YAML error. returns as string if (gettype($patternDataBase) == "string") { $patternDataBase = array(); } } } // get the data for the pseudo-pattern $data = file_get_contents(Config::getOption("patternSourceDir") . DIRECTORY_SEPARATOR . $pathName); if ($ext == "json") { $patternData = json_decode($data, true); if ($jsonErrorMessage = JSON::hasError()) { JSON::lastErrorMsg($name, $jsonErrorMessage, $data); } } else { try { $patternData = YAML::parse($data); } catch (ParseException $e) { printf("unable to parse " . $pathNameClean . ": %s..\n", $e->getMessage()); } // single line of text won't throw a YAML error. returns as string if (gettype($patternData) == "string") { $patternData = array(); } } // make sure the pattern data is an array before merging the data $patternStoreData["data"] = is_array($patternData) ? array_replace_recursive($patternDataBase, $patternData) : $patternDataBase; // if the pattern data store already exists make sure it is merged and overwrites this data $patternStoreData = PatternData::checkOption($patternStoreKey) ? array_replace_recursive(PatternData::getOption($patternStoreKey), $patternStoreData) : $patternStoreData; PatternData::setOption($patternStoreKey, $patternStoreData); }
public function run() { // check on the states of the patterns $patternStates = Config::getOption("patternStates"); $patternStateLast = count($patternStates) - 1; // run through each item in the store and only look at patterns $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern") { $patternState = $patternStoreData["state"]; // make sure the pattern has a given state if ($patternState != "") { $patternStateDigit = array_search($patternState, $patternStates); // if this is a true pattern state update various patterns if ($patternStateDigit !== false) { $storeTake2 = PatternData::get(); foreach ($storeTake2 as $patternStoreKey2 => $patternStoreData2) { if ($patternStoreData2["category"] == "pattern" && isset($patternStoreData2["lineagesR"])) { foreach ($patternStoreData2["lineagesR"] as $patternCheckInfo) { $lineagePatternPartial = $patternCheckInfo["lineagePattern"]; // if the found pattern's lineage is empty and the pattern state isn't the last (e.g. complete) add the pattern state // otherwise, if the pattern state is less than the one being checked update the pattern if (PatternData::getPatternOption($lineagePatternPartial, "state") == "" && $patternStateDigit != $patternStateLast) { PatternData::setPatternOption($lineagePatternPartial, "state", $patternState); } else { $patternStateCheck = array_search(PatternData::getPatternOption($lineagePatternPartial, "state"), $patternStates); if ($patternStateDigit < $patternStateCheck) { PatternData::setPatternOption($lineagePatternPartial, "state", $patternState); } } } } } } } } } // make sure we update the lineages with the pattern state if appropriate $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "pattern") { if (isset($patternStoreData["lineages"]) && !empty($patternStoreData["lineages"])) { foreach ($patternStoreData["lineages"] as $patternLineageKey => $patternLineageInfo) { $lineagePattern = $patternLineageInfo["lineagePattern"]; $patternState = PatternData::getPatternOption($lineagePattern, "state"); if ($patternState != "" && $patternState != null) { PatternData::setPatternSubOption($patternStoreKey, "lineages", $patternLineageKey, "lineageState", $patternState); } } } if (isset($patternStoreData["lineagesR"]) && !empty($patternStoreData["lineagesR"])) { foreach ($patternStoreData["lineagesR"] as $patternLineageKey => $patternLineageInfo) { $lineagePattern = $patternLineageInfo["lineagePattern"]; $patternState = PatternData::getPatternOption($lineagePattern, "state"); if ($patternState != "" && $patternState != null) { PatternData::setPatternSubOption($patternStoreKey, "lineages", $patternLineageKey, "lineageState", $patternState); } } } } } }
public function run() { $bi = 0; $ni = 0; $patternSubtypeSet = false; $patternType = ""; $patternTypeDash = ""; $navItems = array(); $navItems["patternTypes"] = array(); // iterate over the different categories and add them to the navigation $store = PatternData::get(); foreach ($store as $patternStoreKey => $patternStoreData) { if ($patternStoreData["category"] == "patternType") { $bi = count($navItems["patternTypes"]) == 0 ? 0 : $bi + 1; // add a new patternType to the nav $navItems["patternTypes"][$bi] = array("patternTypeLC" => strtolower($patternStoreData["nameClean"]), "patternTypeUC" => ucwords($patternStoreData["nameClean"]), "patternType" => $patternStoreData["name"], "patternTypeDash" => $patternStoreData["nameDash"], "patternTypeItems" => array(), "patternItems" => array()); // starting a new set of pattern types. it might not have any pattern subtypes $patternSubtypeSet = false; $patternType = $patternStoreData["name"]; $patternTypeDash = $patternStoreData["nameDash"]; } else { if ($patternStoreData["category"] == "patternSubtype") { $ni = !$patternSubtypeSet ? 0 : $ni + 1; // add a new patternSubtype to the nav $navItems["patternTypes"][$bi]["patternTypeItems"][$ni] = array("patternSubtypeLC" => strtolower($patternStoreData["nameClean"]), "patternSubtypeUC" => ucwords($patternStoreData["nameClean"]), "patternSubtype" => $patternStoreData["name"], "patternSubtypeDash" => $patternStoreData["nameDash"], "patternSubtypeItems" => array()); // starting a new set of pattern types. it might not have any pattern subtypes $patternSubtype = $patternStoreData["name"]; $patternSubtypeDash = $patternStoreData["nameDash"]; $patternSubtypeSet = true; } else { if ($patternStoreData["category"] == "pattern") { if (!$patternStoreData["hidden"]) { // set-up the info for the nav $patternInfo = array("patternPath" => $patternStoreData["pathDash"] . "/" . $patternStoreData["pathDash"] . ".html", "patternSrcPath" => $patternStoreData["pathName"], "patternName" => ucwords($patternStoreData["nameClean"]), "patternState" => $patternStoreData["state"], "patternPartial" => $patternStoreData["partial"]); // add to the nav if ($patternStoreData["depth"] == 1) { $navItems["patternTypes"][$bi]["patternItems"][] = $patternInfo; } else { $navItems["patternTypes"][$bi]["patternTypeItems"][$ni]["patternSubtypeItems"][] = $patternInfo; } } } } } } // default vars $styleGuideExcludes = Config::getOption("styleGuideExcludes"); // review each subtype. add a view all link or remove the subtype as necessary foreach ($navItems["patternTypes"] as $patternTypeKey => $patternTypeValues) { $reset = false; $patternType = $patternTypeValues["patternType"]; $patternTypeDash = $patternTypeValues["patternTypeDash"]; if (!in_array($patternType, $styleGuideExcludes)) { foreach ($patternTypeValues["patternTypeItems"] as $patternSubtypeKey => $patternSubtypeValues) { // if there are no sub-items in a section remove it if (empty($patternSubtypeValues["patternSubtypeItems"])) { unset($navItems["patternTypes"][$patternTypeKey]["patternTypeItems"][$patternSubtypeKey]); $reset = true; } else { $patternSubtype = $patternSubtypeValues["patternSubtype"]; $patternSubtypeDash = $patternSubtypeValues["patternSubtypeDash"]; $subItemsCount = count($patternSubtypeValues["patternSubtypeItems"]); // add a view all link $navItems["patternTypes"][$patternTypeKey]["patternTypeItems"][$patternSubtypeKey]["patternSubtypeItems"][$subItemsCount] = array("patternPath" => $patternType . "-" . $patternSubtype . "/index.html", "patternName" => "View All", "patternType" => $patternType, "patternSubtype" => $patternSubtype, "patternPartial" => "viewall-" . $patternTypeDash . "-" . $patternSubtypeDash); } } } if ($reset) { $navItems["patternTypes"][$patternTypeKey]["patternTypeItems"] = array_values($navItems["patternTypes"][$patternTypeKey]["patternTypeItems"]); $reset = false; } // add an overall view all link to the menus with sub-menus if (!empty($navItems["patternTypes"][$patternTypeKey]["patternTypeItems"])) { $navItems["patternTypes"][$patternTypeKey]["patternItems"][] = array("patternPath" => $patternType . "/index.html", "patternName" => "View All", "patternType" => $patternType, "patternSubtype" => "all", "patternPartial" => "viewall-" . $patternTypeDash . "-all"); } } return $navItems; }
/** * Updates the Pattern Lab Website and prints the appropriate message * @param {String} file name to included in the message * @param {String} a switch for decided which message isn't printed * * @return {String} the final message */ private function updateSite($fileName, $message, $verbose = true) { $watchMessage = ""; if ($verbose) { if ($message == "added") { $watchMessage = "<warning>" . $fileName . " was added to Pattern Lab. reload the website to see this change in the navigation...</warning>"; } elseif ($message == "removed") { $watchMessage = "<warning>" . $fileName . " was removed from Pattern Lab. reload the website to see this change reflected in the navigation...</warning>"; } elseif ($message == "hidden") { $watchMessage = "<warning>" . $fileName . " was hidden from Pattern Lab. reload the website to see this change reflected in the navigation...</warning>"; } else { $watchMessage = "<info>" . $fileName . " changed...</info>"; } } $options = $this->options; $options["watchVerbose"] = $verbose; $options["watchMessage"] = $watchMessage; $options["moveStatic"] = false; // clear the various data stores for re-population Data::clear(); PatternData::clear(); Annotations::clear(); $g = new Generator(); $g->generate($options); }
public function __construct($options = array()) { parent::__construct($options); $this->store = PatternData::get(); }