/**
  * 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;
 }
示例#10
0
 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);
             }
         }
     }
 }
示例#19
0
 /**
  * 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;
 }
示例#25
0
 /**
  * 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();
 }