color = new Colors(); } /** * Control parameters. * Return true if JS:DEBUG is given and no other option or recursive option. * * @see FlowStackInterface::control() */ public function control( $argArray ) { if(isset($argArray[1]) && strtoupper($argArray[1]) == "JS:DEBUG"){ if(isset($argArray[2]) && (strtoupper($argArray[2]) == "-R" || strtoupper($argArray[2]) == "--RECURSIVE")){ $this->recursive = true; }else if(!isset($argArray[2])){ $this->recursive = false; }else{ return false; } return true; }else{ return false; } } /** * @see FlowStackInterface::getControlMethod() */ public function getControlMethod() { return 'debug'; } /** * Process method. * Control if each source file name is unique. */ public function debug(){ $config = new ConfigObject(); $config->autoLoad(); $jsArray = $config->getJsDirectory(); $filesArray = array(); $fileDir = array(); foreach ($jsArray as $directory) { foreach ($this->getFiles($directory) as $file) { $filesArray[] = $file[1]; if(!isset($fileDir[$file[1]])){ $fileDir[$file[1]] = $file[0]; }else{ $fileDir[$file[1]] .= " ".$file[0]; } } } $arrayCount = array_count_values($filesArray); foreach ($arrayCount as $key => $value) { if($value == 1){ echo $this->color->getColoredString($key, "green")."\n"; }else{ echo $this->color->getColoredString($key, "red")." multiple occurence ($value). File found in : \n"; foreach (explode(" " ,$fileDir[$key]) as $value) { echo "\t".$value."\n"; } } } } /** * Return each js source file on a directory. * * @param string $dirName * @return array */ public function getFiles($dirName) { $dir = dir($dirName); $filesArray = array(); if(!preg_match("/\/$/", $dirName)){ $dirName = trim($dirName)."/"; } while(($entry = $dir->read())){ if(is_file($dirName.$entry) && preg_match("/\.js$/", $entry)){ $filesArray[] = array($dirName, $entry); }else if($this->recursive && is_dir($dirName.$entry) && $entry != '.' && $entry != '..'){ foreach ($this->getFiles($dirName.$entry) as $recursiveFile) { $filesArray[] = $recursiveFile; } } } return $filesArray; } }