Browse Source

Extracting methods from nasty Debugger::output().

Mark Story 14 years ago
parent
commit
35fc8352ce
1 changed files with 47 additions and 21 deletions
  1. 47 21
      lib/Cake/Utility/Debugger.php

+ 47 - 21
lib/Cake/Utility/Debugger.php

@@ -554,14 +554,24 @@ class Debugger {
 	}
 
 /**
- * Switches output format, updates format strings. 
- * Can be used to switch the active output format:
+ * Get/Set the output format for Debugger error rendering.
  *
- * `Debugger::output('js');`
- *
- * Can be used to add new output types to debugger.
+ * @param string $format The format you want errors to be output as.
+ *   Leave null to get the current format.
+ * @return void
+ */
+	public static function outputAs($format = null) {
+		$self = Debugger::getInstance();
+		if ($format === null) {
+			return $self->_outputFormat;
+		}
+		$self->_outputFormat = $format;
+	}
+
+/**
+ * Add an output format or update a format in Debugger.
  *
- * `Debugger::output('custom', $data);`
+ * `Debugger::addFormat('custom', $data);`
  *
  * Where $data is an array of strings that use String::insert() variable 
  * replacement.  The template vars should be in a `{:id}` style.  
@@ -584,29 +594,45 @@ class Debugger {
  * @param string $format Format to use, including 'js' for JavaScript-enhanced HTML, 'html' for
  *    straight HTML output, or 'txt' for unformatted text.
  * @param array $strings Template strings to be used for the output format.
+ * @return The resulting format string set.
+ */
+	public static function addFormat($format, array $strings) {
+		$self = Debugger::getInstance();
+		if (isset($self->_templates[$format])) {
+			if (isset($strings['links'])) {
+				$self->_templates[$format]['links'] = array_merge(
+					$self->_templates[$format]['links'],
+					$strings['links']
+				);
+				unset($strings['links']);
+			}
+			$self->_templates[$format] = array_merge($self->_templates[$format], $strings);
+		} else {
+			$self->_templates[$format] = $strings;
+		}
+		return $self->_templates[$format];
+	}
+
+/**
+ * Switches output format, updates format strings. 
+ * Can be used to switch the active output format:
+ *
+ * @param string $format Format to use, including 'js' for JavaScript-enhanced HTML, 'html' for
+ *    straight HTML output, or 'txt' for unformatted text.
+ * @param array $strings Template strings to be used for the output format.
+ * @deprecated Use Debugger::outputFormat() and  Debugger::addFormat(). Will be removed 
+ *   in 3.0
  */
 	public function output($format = null, $strings = array()) {
 		$_this = Debugger::getInstance();
 		$data = null;
 
 		if (is_null($format)) {
-			return $_this->_outputFormat;
+			return Debugger::outputAs();
 		}
 
 		if (!empty($strings)) {
-			if (isset($_this->_templates[$format])) {
-				if (isset($strings['links'])) {
-					$_this->_templates[$format]['links'] = array_merge(
-						$_this->_templates[$format]['links'],
-						$strings['links']
-					);
-					unset($strings['links']);
-				}
-				$_this->_templates[$format] = array_merge($_this->_templates[$format], $strings);
-			} else {
-				$_this->_templates[$format] = $strings;
-			}
-			return $_this->_templates[$format];
+			return Debugger::addFormat($format, $strings);
 		}
 
 		if ($format === true && !empty($_this->_data)) {
@@ -614,7 +640,7 @@ class Debugger {
 			$_this->_data = array();
 			$format = false;
 		}
-		$_this->_outputFormat = $format;
+		Debugger::outputAs($format);
 
 		return $data;
 	}