From: Roland Häder <roland@mxchange.org>
Date: Wed, 2 Dec 2020 07:18:15 +0000 (+0100)
Subject: Continued:
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=74b4f2c1770c622cbdbb1f84ac27771da18a0427;p=core.git

Continued:
- introduced CompileableXmlTemplate class
- also BaseXmlTemplateEngine needs a trait

Signed-off-by: Roland Häder <roland@mxchange.org>
---

diff --git a/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php b/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php
index b4c51bf9..b119daaf 100644
--- a/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php
+++ b/framework/main/classes/decorator/template/class_XmlRewriterTemplateDecorator.php
@@ -5,7 +5,7 @@ namespace Org\Mxchange\CoreFramework\Template\Xml;
 // Import framework stuff
 use Org\Mxchange\CoreFramework\Generic\BaseDecorator;
 use Org\Mxchange\CoreFramework\Response\Responseable;
-use Org\Mxchange\CoreFramework\Template\CompileableTemplate;
+use Org\Mxchange\CoreFramework\Template\Xml\CompileableXmlTemplate;
 use Org\Mxchange\CoreFramework\Traits\Template\CompileableTemplateTrait;
 
 /**
@@ -31,7 +31,7 @@ use Org\Mxchange\CoreFramework\Traits\Template\CompileableTemplateTrait;
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-class XmlRewriterTemplateDecorator extends BaseDecorator implements CompileableTemplate {
+class XmlRewriterTemplateDecorator extends BaseDecorator implements CompileableXmlTemplate {
 	// Load traits
 	use CompileableTemplateTrait;
 
@@ -48,10 +48,10 @@ class XmlRewriterTemplateDecorator extends BaseDecorator implements CompileableT
 	/**
 	 * Creates an instance of the class TemplateEngine and prepares it for usage
 	 *
-	 * @param	$innerTemplateInstance	A CompileableTemplate instance
+	 * @param	$innerTemplateInstance	A CompileableXmlTemplate instance
 	 * @return	$templateInstance	An instance of TemplateEngine
 	 */
-	public static final function createXmlRewriterTemplateDecorator (CompileableTemplate $innerTemplateInstance) {
+	public static final function createXmlRewriterTemplateDecorator (CompileableXmlTemplate $innerTemplateInstance) {
 		// Get a new instance
 		$templateInstance = new XmlRewriterTemplateDecorator();
 
@@ -416,7 +416,7 @@ class XmlRewriterTemplateDecorator extends BaseDecorator implements CompileableT
 	 * @return	void
 	 * @todo	Find something useful with this!
 	 */
-	public function characterHandler ($resource, $characters) {
+	public function characterHandler ($resource, string $characters) {
 		// Call the inner class' method but trim the characters before
 		$this->getTemplateInstance()->characterHandler($resource, trim($characters));
 	}
diff --git a/framework/main/classes/template/class_BaseTemplateEngine.php b/framework/main/classes/template/class_BaseTemplateEngine.php
index 2d30141e..8c09dfbf 100644
--- a/framework/main/classes/template/class_BaseTemplateEngine.php
+++ b/framework/main/classes/template/class_BaseTemplateEngine.php
@@ -170,11 +170,6 @@ abstract class BaseTemplateEngine extends BaseFrameworkSystem {
 	 */
 	private $languageSupport = true;
 
-	/**
-	 * XML compacting is disabled by default
-	 */
-	private $xmlCompacting = false;
-
 	/**
 	 * Protected constructor
 	 *
@@ -1548,33 +1543,6 @@ abstract class BaseTemplateEngine extends BaseFrameworkSystem {
 		$this->setRawTemplateData($rawData);
 	}
 
-	/**
-	 * Renders the given XML content
-	 *
-	 * @param	$content	Valid XML content or if not set the current loaded raw content
-	 * @return	void
-	 * @throws	XmlParserException	If an XML error was found
-	 */
-	public function renderXmlContent (string $content = NULL) {
-		// Is the content set?
-		if (is_null($content)) {
-			// Get current content
-			$content = $this->getRawTemplateData();
-		}
-
-		// Get a XmlParser instance
-		$parserInstance = ObjectFactory::createObjectByConfiguredName('xml_parser_class', array($this));
-
-		// Check if XML compacting is enabled
-		if ($this->isXmlCompactingEnabled()) {
-			// Yes, so get a decorator class for transparent compacting
-			$parserInstance = ObjectFactory::createObjectByConfiguredName('deco_compacting_xml_parser_class', array($parserInstance));
-		}
-
-		// Parse the XML document
-		$parserInstance->parseXmlContent($content);
-	}
-
 	/**
 	 * Enables or disables language support
 	 *
@@ -1594,25 +1562,6 @@ abstract class BaseTemplateEngine extends BaseFrameworkSystem {
 		return $this->languageSupport;
 	}
 
-	/**
-	 * Enables or disables XML compacting
-	 *
-	 * @param	$xmlCompacting	New XML compacting setting
-	 * @return	void
-	 */
-	public final function enableXmlCompacting (bool $xmlCompacting = true) {
-		$this->xmlCompacting = $xmlCompacting;
-	}
-
-	/**
-	 * Checks whether XML compacting is enabled
-	 *
-	 * @return	$xmlCompacting	Whether XML compacting is enabled or disabled
-	 */
-	public final function isXmlCompactingEnabled () {
-		return $this->xmlCompacting;
-	}
-
 	/**
 	 * Removes all commentd, tabs and new-line characters to compact the content
 	 *
diff --git a/framework/main/classes/template/image/class_ImageTemplateEngine.php b/framework/main/classes/template/image/class_ImageTemplateEngine.php
index 6eeedefa..07ba19bf 100644
--- a/framework/main/classes/template/image/class_ImageTemplateEngine.php
+++ b/framework/main/classes/template/image/class_ImageTemplateEngine.php
@@ -256,7 +256,7 @@ class ImageTemplateEngine extends BaseTemplateEngine implements CompileableTempl
 	 * @return	void
 	 * @todo	Find something usefull with this!
 	 */
-	public function characterHandler ($resource, $characters) {
+	public function characterHandler ($resource, string $characters) {
 		// Trim all spaces away
 		$characters = trim($characters);
 
diff --git a/framework/main/classes/template/mail/class_MailTemplateEngine.php b/framework/main/classes/template/mail/class_MailTemplateEngine.php
index 7406248e..6734da32 100644
--- a/framework/main/classes/template/mail/class_MailTemplateEngine.php
+++ b/framework/main/classes/template/mail/class_MailTemplateEngine.php
@@ -226,7 +226,7 @@ class MailTemplateEngine extends BaseTemplateEngine implements CompileableTempla
 	 * @param	$characters		Characters to handle
 	 * @return	void
 	 */
-	public function characterHandler ($resource, $characters) {
+	public function characterHandler ($resource, string $characters) {
 		// Trim all spaces away
 		$characters = trim($characters);
 
diff --git a/framework/main/classes/template/menu/class_MenuTemplateEngine.php b/framework/main/classes/template/menu/class_MenuTemplateEngine.php
index 442f9290..dcdf8cad 100644
--- a/framework/main/classes/template/menu/class_MenuTemplateEngine.php
+++ b/framework/main/classes/template/menu/class_MenuTemplateEngine.php
@@ -343,7 +343,7 @@ class MenuTemplateEngine extends BaseTemplateEngine implements CompileableTempla
 	 * @return	void
 	 * @todo	Find something useful with this!
 	 */
-	public function characterHandler ($resource, $characters) {
+	public function characterHandler ($resource, string $characters) {
 		// Trim all spaces away
 		$characters = trim($characters);
 
diff --git a/framework/main/classes/template/xml/class_BaseXmlTemplateEngine.php b/framework/main/classes/template/xml/class_BaseXmlTemplateEngine.php
index bf631266..e8676377 100644
--- a/framework/main/classes/template/xml/class_BaseXmlTemplateEngine.php
+++ b/framework/main/classes/template/xml/class_BaseXmlTemplateEngine.php
@@ -9,7 +9,9 @@ use Org\Mxchange\CoreFramework\Factory\Template\XmlTemplateEngineFactory;
 use Org\Mxchange\CoreFramework\Registry\GenericRegistry;
 use Org\Mxchange\CoreFramework\Template\CompileableTemplate;
 use Org\Mxchange\CoreFramework\Template\Engine\BaseTemplateEngine;
+use Org\Mxchange\CoreFramework\Template\Xml\CompileableXmlTemplate;
 use Org\Mxchange\CoreFramework\Traits\Stacker\StackableTrait;
+use Org\Mxchange\CoreFramework\Traits\Template\CompileableTemplateTrait;
 use Org\Mxchange\CoreFramework\Utils\String\StringUtils;
 
 // Import SPL stuff
@@ -38,8 +40,9 @@ use \InvalidArgumentException;
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-abstract class BaseXmlTemplateEngine extends BaseTemplateEngine {
+abstract class BaseXmlTemplateEngine extends BaseTemplateEngine implements CompileableXmlTemplate {
 	// Load traits
+	use CompileableTemplateTrait;
 	use StackableTrait;
 
 	/**
@@ -78,9 +81,9 @@ abstract class BaseXmlTemplateEngine extends BaseTemplateEngine {
 	protected $dependencyContent = [];
 
 	/**
-	 * Template engine instance
+	 * XML compacting is disabled by default
 	 */
-	private $templateInstance = NULL;
+	private $xmlCompacting = false;
 
 	/**
 	 * Protected constructor
@@ -237,25 +240,6 @@ abstract class BaseXmlTemplateEngine extends BaseTemplateEngine {
 		return $this->subNodes;
 	}
 
-	/**
-	 * Setter for template engine instances
-	 *
-	 * @param	$templateInstance	An instance of a template engine class
-	 * @return	void
-	 */
-	protected final function setTemplateInstance (CompileableTemplate $templateInstance) {
-		$this->templateInstance = $templateInstance;
-	}
-
-	/**
-	 * Getter for template engine instances
-	 *
-	 * @return	$templateInstance	An instance of a template engine class
-	 */
-	protected final function getTemplateInstance () {
-		return $this->templateInstance;
-	}
-
 	/**
 	 * Read XML variables by calling readVariable() with 'general' as
 	 * variable stack.
@@ -374,4 +358,50 @@ abstract class BaseXmlTemplateEngine extends BaseTemplateEngine {
 		call_user_func_array(array($this, $methodName), array());
 	}
 
+	/**
+	 * Renders the given XML content
+	 *
+	 * @param	$content	Valid XML content or if not set the current loaded raw content
+	 * @return	void
+	 * @throws	XmlParserException	If an XML error was found
+	 */
+	public function renderXmlContent (string $content = NULL) {
+		// Is the content set?
+		if (is_null($content)) {
+			// Get current content
+			$content = $this->getRawTemplateData();
+		}
+
+		// Get a XmlParser instance
+		$parserInstance = ObjectFactory::createObjectByConfiguredName('xml_parser_class', array($this));
+
+		// Check if XML compacting is enabled
+		if ($this->isXmlCompactingEnabled()) {
+			// Yes, so get a decorator class for transparent compacting
+			$parserInstance = ObjectFactory::createObjectByConfiguredName('deco_compacting_xml_parser_class', array($parserInstance));
+		}
+
+		// Parse the XML document
+		$parserInstance->parseXmlContent($content);
+	}
+
+	/**
+	 * Enables or disables XML compacting
+	 *
+	 * @param	$xmlCompacting	New XML compacting setting
+	 * @return	void
+	 */
+	public final function enableXmlCompacting (bool $xmlCompacting = true) {
+		$this->xmlCompacting = $xmlCompacting;
+	}
+
+	/**
+	 * Checks whether XML compacting is enabled
+	 *
+	 * @return	$xmlCompacting	Whether XML compacting is enabled or disabled
+	 */
+	public final function isXmlCompactingEnabled () {
+		return $this->xmlCompacting;
+	}
+
 }
diff --git a/framework/main/interfaces/template/class_CompileableTemplate.php b/framework/main/interfaces/template/class_CompileableTemplate.php
index 0c6636a1..82ab8927 100644
--- a/framework/main/interfaces/template/class_CompileableTemplate.php
+++ b/framework/main/interfaces/template/class_CompileableTemplate.php
@@ -159,15 +159,6 @@ interface CompileableTemplate extends FrameworkInterface {
 	 */
 	function renameVariable (string $oldName, string $newName);
 
-	/**
-	 * Renders the given XML content
-	 *
-	 * @param	$content	Valid XML content or if not set the current loaded raw content
-	 * @return	void
-	 * @throws	XmlParserException	If an XML error was found
-	 */
-	function renderXmlContent (string $content = NULL);
-
 	/**
 	 * Enables or disables language support
 	 *
@@ -183,29 +174,6 @@ interface CompileableTemplate extends FrameworkInterface {
 	 */
 	function isLanguageSupportEnabled ();
 
-	/**
-	 * Enables or disables XML compacting
-	 *
-	 * @param	$xmlCompacting	New XML compacting setting
-	 * @return	void
-	 */
-	function enableXmlCompacting (bool $xmlCompacting = true);
-
-	/**
-	 * Checks whether XML compacting is enabled
-	 *
-	 * @return	$xmlCompacting	Whether XML compacting is enabled or disabled
-	 */
-	function isXmlCompactingEnabled ();
-
-	/**
-	 * Removes all comments, tabs and new-line charcters to compact the content
-	 *
-	 * @param	$uncompactedContent		The uncompacted content
-	 * @return	$compactedContent		The compacted content
-	 */
-	function compactContent (string $uncompactedContent);
-
 	/**
 	 * Getter for given variable group
 	 *
diff --git a/framework/main/interfaces/template/xml/class_CompileableXmlTemplate.php b/framework/main/interfaces/template/xml/class_CompileableXmlTemplate.php
new file mode 100644
index 00000000..7321a348
--- /dev/null
+++ b/framework/main/interfaces/template/xml/class_CompileableXmlTemplate.php
@@ -0,0 +1,64 @@
+<?php
+// Own namespace
+namespace Org\Mxchange\CoreFramework\Template\Xml;
+
+// Import framework stuff
+use Org\Mxchange\CoreFramework\Template\CompileableTemplate;
+
+/**
+ * An interface for template engines
+ *
+ * @author		Roland Haeder <webmaster@shipsimu.org>
+ * @version		0.0.0
+ * @copyright	Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2020 Core Developer Team
+ * @license		GNU GPL 3.0 or any newer version
+ * @link		http://www.shipsimu.org
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+interface CompileableXmlTemplate extends CompileableTemplate {
+
+	/**
+	 * Renders the given XML content
+	 *
+	 * @param	$content	Valid XML content or if not set the current loaded raw content
+	 * @return	void
+	 * @throws	XmlParserException	If an XML error was found
+	 */
+	function renderXmlContent (string $content = NULL);
+
+	/**
+	 * Enables or disables XML compacting
+	 *
+	 * @param	$xmlCompacting	New XML compacting setting
+	 * @return	void
+	 */
+	function enableXmlCompacting (bool $xmlCompacting = true);
+
+	/**
+	 * Checks whether XML compacting is enabled
+	 *
+	 * @return	$xmlCompacting	Whether XML compacting is enabled or disabled
+	 */
+	function isXmlCompactingEnabled ();
+
+	/**
+	 * Removes all comments, tabs and new-line charcters to compact the content
+	 *
+	 * @param	$uncompactedContent		The uncompacted content
+	 * @return	$compactedContent		The compacted content
+	 */
+	function compactContent (string $uncompactedContent);
+
+}