diff --git a/library/log4php/helpers/LoggerPatternParser.php b/library/log4php/helpers/LoggerPatternParser.php new file mode 100644 --- /dev/null +++ b/library/log4php/helpers/LoggerPatternParser.php @@ -0,0 +1,237 @@ +It is this class that parses conversion patterns and creates + * a chained list of {@link LoggerPatternConverter} converters.

+ * + * @version $Revision: 1395467 $ + * @package log4php + * @subpackage helpers + * + * @since 0.3 + */ +class LoggerPatternParser { + + /** Escape character for conversion words in the conversion pattern. */ + const ESCAPE_CHAR = '%'; + + /** Maps conversion words to relevant converters. */ + private $converterMap; + + /** Conversion pattern used in layout. */ + private $pattern; + + /** Regex pattern used for parsing the conversion pattern. */ + private $regex; + + /** + * First converter in the chain. + * @var LoggerPatternConverter + */ + private $head; + + /** Last converter in the chain. */ + private $tail; + + public function __construct($pattern, $converterMap) { + $this->pattern = $pattern; + $this->converterMap = $converterMap; + + // Construct the regex pattern + $this->regex = + '/' . // Starting regex pattern delimiter + self::ESCAPE_CHAR . // Character which marks the start of the conversion pattern + '(?P[0-9.-]*)' . // Format modifiers (optional) + '(?P[a-zA-Z]+)' . // The conversion word + '(?P