public function generate(Resource $resource, array $data)
{
$method = $data['method'];
$expected = $data['expected'];
$code = $this->filesystem->getFileContents($resource->getSrcFilename());
$values = array('%constant%' => var_export($expected, true));
if (!($content = $this->templates->render('method', $values))) {
$content = $this->templates->renderString($this->getTemplate(), $values);
}
$pattern = '/' . '(function\\s+' . preg_quote($method, '/') . '\\s*\\([^\\)]*\\))\\s+{[^}]*?}/';
$replacement = '$1' . $content;
$modifiedCode = preg_replace($pattern, $replacement, $code);
$this->filesystem->putFileContents($resource->getSrcFilename(), $modifiedCode);
$this->io->writeln(sprintf("<info>Method <value>%s::%s()</value> has been modified.</info>\n", $resource->getSrcClassname(), $method), 2);
}