preparation release
This commit is contained in:
commit
f5e3a62ee8
196 changed files with 64314 additions and 0 deletions
218
HTML/Template/Flexy/Compiler/Standard/Flexy.php
Normal file
218
HTML/Template/Flexy/Compiler/Standard/Flexy.php
Normal file
|
|
@ -0,0 +1,218 @@
|
|||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4: */
|
||||
// +----------------------------------------------------------------------+
|
||||
// | PHP Version 4 |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Copyright (c) 1997-2003 The PHP Group |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | This source file is subject to version 2.02 of the PHP license, |
|
||||
// | that is bundled with this package in the file LICENSE, and is |
|
||||
// | available at through the world-wide-web at |
|
||||
// | http://www.php.net/license/2_02.txt. |
|
||||
// | If you did not receive a copy of the PHP license and are unable to |
|
||||
// | obtain it through the world-wide-web, please send a note to |
|
||||
// | license@php.net so we can mail you a copy immediately. |
|
||||
// +----------------------------------------------------------------------+
|
||||
// | Authors: Alan Knowles <alan@akkbhome.com> |
|
||||
// +----------------------------------------------------------------------+
|
||||
//
|
||||
// $Id: Flexy.php,v 1.15 2004/06/24 06:12:06 alan_k Exp $
|
||||
//
|
||||
// Handler code for the <flexy: namespace
|
||||
//
|
||||
|
||||
/**
|
||||
* the <flexy:XXXX namespace
|
||||
*
|
||||
*
|
||||
* at present it handles
|
||||
* <flexy:toJavascript flexy:prefix="Javascript_prefix" javscriptName="PHPvar" .....>
|
||||
* <flexy:include src="xxx.htm">
|
||||
*
|
||||
*
|
||||
*
|
||||
* @version $Id: Flexy.php,v 1.15 2004/06/24 06:12:06 alan_k Exp $
|
||||
*/
|
||||
|
||||
class HTML_Template_Flexy_Compiler_Standard_Flexy {
|
||||
|
||||
|
||||
/**
|
||||
* Parent Compiler for
|
||||
*
|
||||
* @var object HTML_Template_Flexy_Compiler
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
var $compiler;
|
||||
|
||||
|
||||
/**
|
||||
* The current element to parse..
|
||||
*
|
||||
* @var object
|
||||
* @access public
|
||||
*/
|
||||
var $element;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* toString - display tag, attributes, postfix and any code in attributes.
|
||||
* Relays into namspace::method to get results..
|
||||
*
|
||||
*
|
||||
* @see parent::toString()
|
||||
*/
|
||||
function toString($element)
|
||||
{
|
||||
|
||||
list($namespace,$method) = explode(':',$element->oTag);
|
||||
if (!strlen($method)) {
|
||||
return '';
|
||||
}
|
||||
// things we dont handle...
|
||||
if (!method_exists($this,$method.'ToString')) {
|
||||
return '';
|
||||
}
|
||||
return $this->{$method.'ToString'}($element);
|
||||
|
||||
}
|
||||
/**
|
||||
* toJavascript handler
|
||||
* <flexy:toJavascript flexy:prefix="some_prefix_" javascriptval="php.val" ....>
|
||||
*
|
||||
* @see parent::toString()
|
||||
*/
|
||||
|
||||
function toJavascriptToString($element)
|
||||
{
|
||||
$ret = $this->compiler->appendPhp( "require_once 'HTML/Javascript/Convert.php';");
|
||||
$ret .= $this->compiler->appendHTML("\n<script type='text/javascript'>\n");
|
||||
$prefix = ''. $element->getAttribute('FLEXY:PREFIX');
|
||||
|
||||
|
||||
foreach ($element->attributes as $k=>$v) {
|
||||
// skip directives..
|
||||
if (strpos($k,':')) {
|
||||
continue;
|
||||
}
|
||||
if ($k == '/') {
|
||||
continue;
|
||||
}
|
||||
$v = substr($v,1,-1);
|
||||
$ret .= $this->compiler->appendPhp(
|
||||
'$__tmp = HTML_Javascript_Convert::convertVar('.$element->toVar($v) .',\''.$prefix . $k.'\',true);'.
|
||||
'echo (is_a($__tmp,"PEAR_Error")) ? ("<pre>".print_r($__tmp,true)."</pre>") : $__tmp;');
|
||||
$ret .= $this->compiler->appendHTML("\n");
|
||||
}
|
||||
$ret .= $this->compiler->appendHTML("</script>");
|
||||
return $ret;
|
||||
}
|
||||
/**
|
||||
* include handler
|
||||
* <flexy:include src="test.html">
|
||||
*
|
||||
* @see parent::toString()
|
||||
*/
|
||||
function includeToString($element)
|
||||
{
|
||||
// this is disabled by default...
|
||||
// we ignore modifier pre/suffix
|
||||
|
||||
|
||||
|
||||
|
||||
$arg = $element->getAttribute('SRC');
|
||||
if (!$arg) {
|
||||
return $this->compiler->appendHTML("<B>Flexy:Include without a src=filename</B>");
|
||||
}
|
||||
// ideally it would be nice to embed the results of one template into another.
|
||||
// however that would involve some complex test which would have to stat
|
||||
// the child templates anyway..
|
||||
// compile the child template....
|
||||
// output... include $this->options['compiled_templates'] . $arg . $this->options['locale'] . '.php'
|
||||
return $this->compiler->appendPHP( "\n".
|
||||
"\$x = new HTML_Template_Flexy(\$this->options);\n".
|
||||
"\$x->compile('{$arg}');\n".
|
||||
"\$x->outputObject(\$t);\n"
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert flexy tokens to HTML_Template_Flexy_Elements.
|
||||
*
|
||||
* @param object token to convert into a element.
|
||||
* @return object HTML_Template_Flexy_Element
|
||||
* @access public
|
||||
*/
|
||||
function toElement($element)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handler for User defined functions in templates..
|
||||
* <flexy:function name="xxxxx">.... </flexy:block> // equivilant to function xxxxx() {
|
||||
* <flexy:function call="{xxxxx}">.... </flexy:block> // equivilant to function {$xxxxx}() {
|
||||
* <flexy:function call="xxxxx">.... </flexy:block> // equivilant to function {$xxxxx}() {
|
||||
*
|
||||
* This will not handle nested blocks initially!! (and may cause even more problems with
|
||||
* if /foreach stuff..!!
|
||||
*
|
||||
* @param object token to convert into a element.
|
||||
* @access public
|
||||
*/
|
||||
|
||||
|
||||
function functionToString($element)
|
||||
{
|
||||
|
||||
if ($arg = $element->getAttribute('NAME')) {
|
||||
// this is a really kludgy way of doing this!!!
|
||||
// hopefully the new Template Package will have a sweeter method..
|
||||
$GLOBALS['_HTML_TEMPLATE_FLEXY']['prefixOutput'] .=
|
||||
$this->compiler->appendPHP(
|
||||
"\nfunction _html_template_flexy_compiler_standard_flexy_{$arg}(\$t,\$this) {\n").
|
||||
$element->compileChildren($this->compiler) .
|
||||
$this->compiler->appendPHP( "\n}\n");
|
||||
|
||||
return '';
|
||||
}
|
||||
if (!isset($element->ucAttributes['CALL'])) {
|
||||
|
||||
return HTML_Template_Flexy::raiseError(
|
||||
' tag flexy:function needs an argument call or name'.
|
||||
" Error on Line {$element->line} <{$element->tag}>",
|
||||
null, HTML_TEMPLATE_FLEXY_ERROR_DIE);
|
||||
}
|
||||
// call is a stirng : nice and simple..
|
||||
if (is_string($element->ucAttributes['CALL'])) {
|
||||
$arg = $element->getAttribute('CALL');
|
||||
return $this->compiler->appendPHP(
|
||||
"if (function_exists('_html_template_flexy_compiler_standard_flexy_'.{$arg})) " .
|
||||
" _html_template_flexy_compiler_standard_flexy_{$arg}(\$t,\$this);");
|
||||
}
|
||||
|
||||
// we make a big assumption here.. - it should really be error checked..
|
||||
// that the {xxx} element is item 1 in the list...
|
||||
$e=$element->ucAttributes['CALL'][1];
|
||||
$add = $e->toVar($e->value);
|
||||
if (is_a($add,'PEAR_Error')) {
|
||||
return $add;
|
||||
}
|
||||
return $this->compiler->appendPHP(
|
||||
"if (function_exists('_html_template_flexy_compiler_standard_flexy_'.{$add})) ".
|
||||
"call_user_func_array('_html_template_flexy_compiler_standard_flexy_'.{$add},array(\$t,\$this));");
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue