public function generate(Rendering $rendering)
	{
		// Compile the templates to PHP
		$compiledTemplates = array_map([$this, 'compileTemplate'], $rendering->getTemplates());

		// Start the code right after the class name, we'll prepend the header when we're done
		$php = [];
		$php[] = ' extends \\s9e\\TextFormatter\\Renderers\\PHP';
		$php[] = '{';
		$php[] = '	protected $params=' . self::export($rendering->getAllParameters()) . ';';
		$php[] = '	protected function renderNode(\\DOMNode $node)';
		$php[] = '	{';
		$php[] = '		' . SwitchStatement::generate('$node->nodeName', $compiledTemplates, '$this->at($node);');
		$php[] = '	}';

		// Append the Quick renderer if applicable
		if ($this->enableQuickRenderer)
		{
			$php[] = Quick::getSource($compiledTemplates);
		}

		// Close the class definition
		$php[] = '}';

		// Assemble the source
		$php = implode("\n", $php);

		// Finally, optimize the control structures
		if (isset($this->controlStructuresOptimizer))
		{
			$php = $this->controlStructuresOptimizer->optimize($php);
		}

		// Generate a name for that class if necessary, and save it
		$className = (isset($this->className))
		           ? $this->className
		           : $this->defaultClassPrefix . sha1($php);
		$this->lastClassName = $className;

		// Prepare the header
		$header = "\n"
		        . "/**\n"
		        . "* @package   s9e\TextFormatter\n"
		        . "* @copyright Copyright (c) 2010-2019 The s9e Authors\n"
		        . "* @license   http://www.opensource.org/licenses/mit-license.php The MIT License\n"
		        . "*/\n";

		// Declare the namespace and class name
		$pos = strrpos($className, '\\');
		if ($pos !== false)
		{
			$header .= 'namespace ' . substr($className, 0, $pos) . ";\n\n";
			$className = substr($className, 1 + $pos);
		}

		// Prepend the header and the class name
		$php = $header . 'class ' . $className . $php;

		return $php;
	}
public function generate(Rendering $rendering)
	{
		// Compile the templates to PHP
		$compiledTemplates = array_map([$this, 'compileTemplate'], $rendering->getTemplates());

		// Start the code right after the class name, we'll prepend the header when we're done
		$php = [];
		$php[] = ' extends \\s9e\\TextFormatter\\Renderers\\PHP';
		$php[] = '{';
		$php[] = '	protected $params=' . self::export($rendering->getAllParameters()) . ';';
		$php[] = '	protected function renderNode(\\DOMNode $node)';
		$php[] = '	{';
		$php[] = '		' . SwitchStatement::generate('$node->nodeName', $compiledTemplates, '$this->at($node);');
		$php[] = '	}';

		// Append the Quick renderer if applicable
		if ($this->enableQuickRenderer)
		{
			$php[] = Quick::getSource($compiledTemplates);
		}

		// Close the class definition
		$php[] = '}';

		// Assemble the source
		$php = implode("\n", $php);

		// Finally, optimize the control structures
		if (isset($this->controlStructuresOptimizer))
		{
			$php = $this->controlStructuresOptimizer->optimize($php);
		}

		// Generate a name for that class if necessary, and save it
		$className = (isset($this->className))
		           ? $this->className
		           : $this->defaultClassPrefix . sha1($php);
		$this->lastClassName = $className;

		// Prepare the header
		$header = "\n"
		        . "/**\n"
		        . "* @package   s9e\TextFormatter\n"
		        . "* @copyright Copyright (c) 2010-2019 The s9e Authors\n"
		        . "* @license   http://www.opensource.org/licenses/mit-license.php The MIT License\n"
		        . "*/\n";

		// Declare the namespace and class name
		$pos = strrpos($className, '\\');
		if ($pos !== false)
		{
			$header .= 'namespace ' . substr($className, 0, $pos) . ";\n\n";
			$className = substr($className, 1 + $pos);
		}

		// Prepend the header and the class name
		$php = $header . 'class ' . $className . $php;

		return $php;
	}
public function generate ( Rendering $ rendering ) { // Compile the templates to PHP $ compiledTemplates = array_map ( [ $ this , 'compileTemplate' ] , $ rendering -> getTemplates ( ) ) ; // Start the code right after the class name, we'll prepend the header when we're done $ php = [ ] ; $ php [ ] = ' extends \\s9e\\TextFormatter\\Renderers\\PHP' ; $ php [ ] = '{' ; $ php [ ] = '	protected $params=' . self :: export ( $ rendering -> getAllParameters ( ) ) . ';' ; $ php [ ] = '	protected function renderNode(\\DOMNode $node)' ; $ php [ ] = '	{' ; $ php [ ] = '		' . SwitchStatement :: generate ( '$node->nodeName' , $ compiledTemplates , '$this->at($node);' ) ; $ php [ ] = '	}' ; // Append the Quick renderer if applicable if ( $ this -> enableQuickRenderer ) { $ php [ ] = Quick :: getSource ( $ compiledTemplates ) ; } // Close the class definition $ php [ ] = '}' ; // Assemble the source $ php = implode ( "\n" , $ php ) ; // Finally, optimize the control structures if ( isset ( $ this -> controlStructuresOptimizer ) ) { $ php = $ this -> controlStructuresOptimizer -> optimize ( $ php ) ; } // Generate a name for that class if necessary, and save it $ className = ( isset ( $ this -> className ) ) ? $ this -> className : $ this -> defaultClassPrefix . sha1 ( $ php ) ; $ this -> lastClassName = $ className ; // Prepare the header $ header = "\n" . "/**\n" . "* @package   s9e\TextFormatter\n" . "* @copyright Copyright (c) 2010-2019 The s9e Authors\n" . "* @license   http://www.opensource.org/licenses/mit-license.php The MIT License\n" . "*/\n" ; // Declare the namespace and class name $ pos = strrpos ( $ className , '\\' ) ; if ( $ pos !== false ) { $ header .= 'namespace ' . substr ( $ className , 0 , $ pos ) . ";\n\n" ; $ className = substr ( $ className , 1 + $ pos ) ; } // Prepend the header and the class name $ php = $ header . 'class ' . $ className . $ php ; return $ php ; }
Generate the source for a PHP class that renders an intermediate representation according to
given rendering configuration

@param  Rendering $rendering
@return string
Generate the source for a PHP class that renders an intermediate representation according to given rendering configuration