/** * doExecute * * @return mixed */ public function doExecute() { // Load SQL file. @($installFile = file_get_contents($this->config['dir.src'] . '/sql/install.sql')); @($uninstallFile = file_get_contents($this->config['dir.src'] . '/sql/uninstall.sql')); $installSql = StringHelper::parseVariable($installFile, $this->config['replace']); $uninstallSql = StringHelper::parseVariable($uninstallFile, $this->config['replace']); // Prevent import twice $table = '#__' . $this->config['name'] . '_' . $this->config['replace.controller.list.name.lower']; $db = Container::getInstance()->get('db'); try { $db->getTableColumns($table); } catch (\RuntimeException $e) { // Import sql $this->controller->out('Importing SQL to table: ' . $table); $this->executeSql($installSql); $this->controller->out('Imported'); } if (!strpos($installSql, $table)) { // Write SQL file to project. @($fp = fopen($this->config['dir.dest'] . '/sql/install.sql', 'a+')); @fputs($fp, "\n\n\n" . $installSql); @fclose($fp); @($fp = fopen($this->config['dir.dest'] . '/sql/uninstall.sql', 'a+')); @fputs($fp, "\n\n" . $uninstallSql); @fclose($fp); } }
/** * Do this execute. * * @return mixed */ protected function doExecute() { $tmpl = file_get_contents(GENERATOR_BUNDLE_PATH . '/Template/test/testClass.php'); $file = StringHelper::parseVariable($tmpl, $this->replace); Folder::create(dirname($this->config['replace.test.class.file'])); file_put_contents($this->config['replace.test.class.file'], $file); }
/** * copyFile * * @param string $src * @param string $dest * @param array $replace * * @return void */ protected function copyFile($src, $dest, $replace = array()) { // Replace dest file name. $dest = StringHelper::parseVariable($dest, $replace); if (is_file($dest)) { $this->io->out('File exists: ' . $dest); } else { $content = StringHelper::parseVariable(file_get_contents($src), $replace); if (File::write($dest, $content)) { $this->io->out('File created: ' . $dest); } } }
/** * convertPath * * @param string $path * * @return string */ protected function convertPath($path) { $user = Container::getInstance()->get('user'); $date = DateHelper::getDate(); $replace = array('username' => $user->username, 'name' => $user->name, 'session' => \JFactory::getSession()->getId(), 'year' => $date->year, 'month' => $date->month, 'day' => $date->day); return StringHelper::parseVariable($path, $replace); }
/** * Execute the controller. * * @return boolean True if controller finished execution, false if the controller did not * finish execution. A controller might return false if some precondition for * the controller to run has not been satisfied. * * @throws \LogicException * @throws \RuntimeException */ public function execute() { $package = $this->io->getArgument(0, new ValidatePrompter('Enter package name: ')); $class = $this->io->getArgument(1, new ValidatePrompter('Enter class name: ')); $class = StringNormalise::toClassNamespace($class); $target = $this->io->getArgument(2, $package . '\\' . $class . 'Test'); $target = StringNormalise::toClassNamespace($target); $package = ucfirst($package); if (!class_exists($class)) { $class = 'Windwalker\\' . $package . '\\' . $class; } if (!class_exists($class)) { $this->out('Class not exists: ' . $class); exit; } $replace = $this->replace; $ref = new \ReflectionClass($class); $replace['origin.class.dir'] = dirname($ref->getFileName()); $replace['origin.class.file'] = $ref->getFileName(); $replace['origin.class.name'] = $ref->getName(); $replace['origin.class.shortname'] = $ref->getShortName(); $replace['origin.class.namespace'] = $ref->getNamespaceName(); $replace['test.dir'] = WINDWALKER_ROOT . DIRECTORY_SEPARATOR . 'test'; $replace['test.class.name'] = 'Windwalker\\Test\\' . $target; $replace['test.class.file'] = Path::clean($replace['test.dir'] . DIRECTORY_SEPARATOR . $target . '.php'); $replace['test.class.dir'] = dirname($replace['test.class.file']); $replace['test.class.shortname'] = $this->getShortname(StringNormalise::toClassNamespace($replace['test.class.name'])); $replace['test.class.namespace'] = $this->getNamespace($replace['test.class.name']); $this->replace = $replace; $config = new Registry(); // Set replace to config. foreach ($this->replace as $key => $val) { $config->set('replace.' . $key, $val); } $methods = $ref->getMethods(\ReflectionMethod::IS_PUBLIC); $methodTmpl = file_get_contents(GENERATOR_BUNDLE_PATH . '/Template/test/testMethod.php'); $methodCodes = array(); foreach ($methods as $method) { $config['replace.origin.method'] = $method->getName(); $config['replace.test.method'] = ucfirst($method->getName()); $methodCodes[] = StringHelper::parseVariable($methodTmpl, $config->get('replace')); } $config['replace.test.methods'] = implode("", $methodCodes); $this->replace = $config->get('replace'); $this->config = $config; $this->doAction(new GenClassAction()); $this->out('Generate test class: ' . $replace['test.class.name'] . ' to file: ' . $replace['test.class.file'])->out(); return true; }
/** * getSubsystemText * * @param \SplFileinfo $file * * @return string */ protected function getSubsystemText(\SplFileinfo $file) { $text = file_get_contents($file); $text = substr($text, strpos($text, '; {{controller.item.name.cap}}') - strlen($text)); return StringHelper::parseVariable($text, $this->config['replace']); }
/** * Method to test parseVariable(). * * @return void * * @covers Windwalker\String\StringHelper::parseVariable */ public function testParseVariable() { $data['foo']['bar']['baz'] = 'Flower'; $this->assertEquals('This is Flower', StringHelper::parseVariable('This is {{ foo.bar.baz }}', $data)); $this->assertEquals('This is ', StringHelper::parseVariable('This is {{ foo.yoo }}', $data)); $this->assertEquals('This is Flower', StringHelper::parseVariable('This is [ foo.bar.baz ]', $data, array('[', ']'))); }