public static function parse($command, $params)
{
if (!is_array($params)) {
throw new DbPatch_Exception('params array expected');
}
$orgKeys = array_keys($params);
$keys = array_map(array('DbPatch_Core_Parser', 'mapKeyParam'), $orgKeys);
$values = array_values($params);
// remove empty tags first
preg_match_all('/({%([0-9A-Za-z_-]+)%})(.*?)({%\\2%})/', $command, $matches);
foreach ($matches[2] as $index => $key) {
if (in_array($key, $orgKeys) && !empty($params[$key])) {
$command = str_replace($matches[1][$index], '', $command);
continue;
}
$command = str_replace($matches[0][$index], '', $command);
}
$output = str_replace($keys, $values, $command);
return $output;
}