diff --git a/src/Symfony/Component/Console/Application.php b/src/Symfony/Component/Console/Application.php
index b5b7e1b751..62a8fab9e2 100644
--- a/src/Symfony/Component/Console/Application.php
+++ b/src/Symfony/Component/Console/Application.php
@@ -235,7 +235,7 @@ class Application
'Options:',
);
- foreach ($this->definition->getOptions() as $option) {
+ foreach ($this->getDefinition()->getOptions() as $option) {
$messages[] = sprintf(' %-29s %s %s',
'--'.$option->getName().'',
$option->getShortcut() ? '-'.$option->getShortcut().'' : ' ',
diff --git a/src/Symfony/Component/Console/Output/Output.php b/src/Symfony/Component/Console/Output/Output.php
index 8ad7a1c21c..f2045ea86c 100644
--- a/src/Symfony/Component/Console/Output/Output.php
+++ b/src/Symfony/Component/Console/Output/Output.php
@@ -68,6 +68,22 @@ abstract class Output implements OutputInterface
self::$styles[strtolower($name)] = $options;
}
+ /**
+ * Gets style options from style with specified name.
+ *
+ * @param string $name
+ *
+ * @return array
+ */
+ static public function getStyle($name)
+ {
+ if (!isset(self::$styles[strtolower($name)])) {
+ throw new \InvalidArgumentException('Undefined style: ' . $name);
+ }
+
+ return self::$styles[strtolower($name)];
+ }
+
/**
* Sets the decorated flag.
*
@@ -164,6 +180,26 @@ abstract class Output implements OutputInterface
*/
abstract public function doWrite($message, $newline);
+ /**
+ * Gets regex for a style start.
+ *
+ * @return string
+ */
+ protected function getBeginStyleRegex()
+ {
+ return '#<([a-z][a-z0-9\-_=;]+)>#i';
+ }
+
+ /**
+ * Gets regex for a style end.
+ *
+ * @return string
+ */
+ protected function getEndStyleRegex()
+ {
+ return '#([a-z][a-z0-9\-_]*)?>#i';
+ }
+
/**
* Formats a message according to the given styles.
*
@@ -173,9 +209,9 @@ abstract class Output implements OutputInterface
*/
protected function format($message)
{
- $message = preg_replace_callback('#<([a-z][a-z0-9\-_=;]+)>#i', array($this, 'replaceStartStyle'), $message);
+ $message = preg_replace_callback($this->getBeginStyleRegex(), array($this, 'replaceBeginStyle'), $message);
- return preg_replace_callback('#([a-z][a-z0-9\-_]*)?>#i', array($this, 'replaceEndStyle'), $message);
+ return preg_replace_callback($this->getEndStyleRegex(), array($this, 'replaceEndStyle'), $message);
}
/**
@@ -187,7 +223,7 @@ abstract class Output implements OutputInterface
*
* @throws \InvalidArgumentException When style is unknown
*/
- private function replaceStartStyle($match)
+ private function replaceBeginStyle($match)
{
if (!$this->decorated) {
return '';