Skip to content

Commit

Permalink
Merge pull request #169 from jmolivas/add-new-validators
Browse files Browse the repository at this point in the history
Add new validators
  • Loading branch information
jmolivas committed Jul 17, 2014
2 parents 24bbc65 + 68f4463 commit 8848514
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 8 deletions.
11 changes: 11 additions & 0 deletions src/Command/ContainerAwareCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ public function validateServiceExist($service_name, $services = null)

public function validateModule($machine_name)
{
$machine_name = $this->validateMachineName($machine_name);
$modules = array_merge($this->getModules(true), $this->getModules());
if (in_array($machine_name, $modules)) {
throw new \InvalidArgumentException(sprintf('Module "%s" already exist.', $machine_name));
Expand All @@ -121,6 +122,16 @@ public function validateModulePath($module_path)
return $this->getValidator()->validateModulePath($module_path);
}

public function validateClassName($class_name)
{
return $this->getValidator()->validateClassName($class_name);
}

public function validateMachineName($machine_name)
{
return $this->getValidator()->validateMachineName($machine_name);
}

/**
* @return \Drupal\AppConsole\Utils\StringUtils
*/
Expand Down
12 changes: 9 additions & 3 deletions src/Command/GeneratorControllerCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,16 @@ protected function interact(InputInterface $input, OutputInterface $output)
// --class-name option
$class_name = $input->getOption('class-name');
if (!$class_name) {
$class_name = $dialog->ask(
$class_name = 'DefaultController';
$class_name = $dialog->askAndValidate(
$output,
$dialog->getQuestion('Enter the controller name', 'DefaultController'),
'DefaultController'
$dialog->getQuestion('Enter the controller class name', $class_name),
function ($class_name) {
return $this->validateClassName($class_name);
},
false,
$class_name,
null
);
}
$input->setOption('class-name', $class_name);
Expand Down
15 changes: 12 additions & 3 deletions src/Command/GeneratorModuleCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ protected function execute(InputInterface $input, OutputInterface $output)
}
}

$module = $this->validateModule($input->getOption('module'));
$module = $this->validateModuleName($input->getOption('module'));
$module_path = $this->validateModulePath($input->getOption('module-path'));
$description = $input->getOption('description');
$core = $input->getOption('core');
$package = $input->getOption('package');
$controller = $input->getOption('controller');
$tests = $input->getOption('tests');
$structure = $input->getOption('structure');
$machine_name = $input->getOption('machine-name');
$machine_name = $this->validateModule($input->getOption('machine-name'));

$generator = $this->getGenerator();
$generator->generate($module, $machine_name, $module_path, $description, $core, $package, $controller, $tests, $structure);
Expand Down Expand Up @@ -90,7 +90,16 @@ protected function interact(InputInterface $input, OutputInterface $output)
}

if (!$module) {
$module = $dialog->ask($output, $dialog->getQuestion('Module name', ''));
$module = $dialog->askAndValidate(
$output,
$dialog->getQuestion('Module name', ''),
function ($module) {
return $this->validateModuleName($module);
},
false,
null,
null
);
}
$input->setOption('module', $module);

Expand Down
25 changes: 23 additions & 2 deletions src/Utils/Validators.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,37 @@
class Validators
{

const REGEX_CLASS_NAME = '/^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+$/';
const REGEX_MACHINE_NAME = '/^[a-z0-9_]+$/';

public function __construct()
{
}

public function validateModuleName($module)
{
if (!empty($module))
if (!empty($module)) {
return $module;
else
}
else {
throw new \InvalidArgumentException(sprintf('Module name "%s" is invalid.', $module));
}
}

public function validateClassName($class_name){
if (preg_match(self::REGEX_CLASS_NAME, $class_name)) {
return $class_name;
} else {
throw new \InvalidArgumentException(sprintf('Class name "%s" is invalid.', $class_name));
}
}

public function validateMachineName($machine_name){
if (preg_match(self::REGEX_MACHINE_NAME, $machine_name)) {
return $machine_name;
} else {
throw new \InvalidArgumentException(sprintf('Machine name "%s" is invalid.', $machine_name));
}
}

public function validateModulePath($module_path)
Expand Down

0 comments on commit 8848514

Please sign in to comment.