PHP 클래스 Haanga_Compiler

파일 보기 프로젝트 열기: crodas/haanga 1 사용 예제들

공개 프로퍼티들

프로퍼티 타입 설명
$safes
$var_is_safe Flag the current variable as safe. This means that escape won't be called if autoescape is activated (which is activated by default)

보호된 프로퍼티들

프로퍼티 타입 설명
$append
$autoescape * compiler options
$block_var properties {{{
$blocks
$check_function
$context Context at compile time
$debug Debug file
$dot_as_object
$echo_concat
$enable_load
$file
$forid
$forloop
$generator
$global_context
$if_empty
$in_block number of blocks :-)
$is_exec_enabled
$line
$name
$ob_start output buffers :-)
$prepend_op
$strip_whitespace
$sub_template
$var_alias Table which contains all variables aliases defined in the template

공개 메소드들

메소드 설명
Error ( $err ) Throw an exception and appends information about the template (the path and the last processed line).
__construct ( ) }}}
compile ( $code, $name = NULL, $file = NULL ) Compile ($code, $name=NULL) {{{
compile_file ( string $file, boolean $safe = FALSE, $context = [] ) : Generated Compile a file
do_filtering ( $name, $args )
do_print ( Haanga_AST $code, $stmt ) Print {{{
expr_call_base_template ( ) Generate code to call base template
generate_op_alias ( $details, &$body )
generate_op_autoescape ( $details, &$body ) autoescape ON|OFF {{{
generate_op_custom_tag ( $details, &$body ) Generate needed code for custom tags (tags that aren't handled by the compiler).
generate_op_filter ( $details, &$body )
generate_op_set ( $details, &$body ) }}}
generate_op_spacefull ( $details, &$body ) {% spacefull %} Set to OFF strip_whitespace for a block (the compiler option) {{{
generate_variable_name ( $variable, $special = true ) Get variable name {{{
getOpCodes ( string $code, string $file ) : Haanga_AST Compile the $code and return the "opcodes" (the Abstract syntax tree).
getOption ( $option ) getOption($option) {{{
getScopeVariable ( $part = NULL, $string = FALSE )
get_base_template ( array $base ) : string Handle {% base "" %} definition. By default only static (string) are supported, but this can be overrided on subclasses.
get_context ( $variable )
get_custom_filter ( $name ) Custom Filters {{{
get_custom_tag ( $name ) Custom Tags {{{
get_filtered_var ( array $variable, &$varname, boolean $accept_string = NULL ) : expr This method handles all the filtered variable (piped_list(X)'s output in the parser.
get_function_name ( $name ) get_function_name(string $name) {{{
get_template_name ( ) get_template_name() {{{
isMethod ( $varname, &$expr ) }}}
is_safe ( $name )
is_var_filter ( $cmd ) is_expr methods {{{
main_cli ( ) * }}}
ob_start ( &$body ) Start a new buffering
reset ( ) reset() {{{
setDebug ( $file ) setDebug($file) {{{
setOption ( $option, $value ) : void Set Compiler option.
set_context ( $varname, $value ) Variables context
set_safe ( $name ) * variable safety {{{
set_template_name ( $path ) Set template name {{{
set_unsafe ( $name )
var_is_object ( array $variable, $default = NULL )

보호된 메소드들

메소드 설명
check_expr ( &$expr ) Check the current expr {{{
compile_required_template ( $file ) Override template {{{
generate_op_base ( ) {% base "foo.html" %} {{{
generate_op_block ( $details, &$body ) {% block 'name' %} .
generate_op_code ( $parsed, &$body ) Main Loop {{{
generate_op_comment ( $details, &$body ) {# something #} {{{
generate_op_html ( $details, &$body ) Handle HTML code {{{
generate_op_if ( $details, &$body ) {% if %} HTML {% else %} TWO {% endif $} {{{
generate_op_ifchanged ( $details, &$body ) ifchanged [
generate_op_ifequal ( $details, &$body ) ifequal|ifnot equal .
generate_op_include ( $details, &$body ) include "file.html" | include {{{
generate_op_loop ( $details, &$body ) for [,] in {{{
generate_op_print_var ( $details, &$body ) Generate code to print a variable with its filters, if there is any.
generate_op_regroup ( $details, &$body ) regroup by as {{{

메소드 상세

Error() 공개 메소드

Throw an exception and appends information about the template (the path and the last processed line).
public Error ( $err )

__construct() 공개 메소드

}}}
public __construct ( )

check_expr() 보호된 메소드

Check the current expr {{{
protected check_expr ( &$expr )

compile() 최종 공개 메소드

Compile ($code, $name=NULL) {{{
final public compile ( $code, $name = NULL, $file = NULL )

compile_file() 최종 공개 메소드

@param string $file File path
final public compile_file ( string $file, boolean $safe = FALSE, $context = [] ) : Generated
$file string
$safe boolean Whether or not add check if the function is already defined @return Generated PHP code
리턴 Generated

compile_required_template() 보호된 메소드

Override template {{{
protected compile_required_template ( $file )

do_filtering() 공개 메소드

public do_filtering ( $name, $args )

do_print() 공개 메소드

Print {{{
public do_print ( Haanga_AST $code, $stmt )
$code Haanga_AST

expr_call_base_template() 공개 메소드

Generate code to call base template

generate_op_alias() 공개 메소드

public generate_op_alias ( $details, &$body )

generate_op_autoescape() 공개 메소드

autoescape ON|OFF {{{
public generate_op_autoescape ( $details, &$body )

generate_op_base() 보호된 메소드

{% base "foo.html" %} {{{
protected generate_op_base ( )

generate_op_block() 보호된 메소드

.. {% endblock %} {{{
protected generate_op_block ( $details, &$body )

generate_op_code() 보호된 메소드

Main Loop {{{
protected generate_op_code ( $parsed, &$body )

generate_op_comment() 보호된 메소드

{# something #} {{{
protected generate_op_comment ( $details, &$body )

generate_op_custom_tag() 공개 메소드

Generate needed code for custom tags (tags that aren't handled by the compiler).
public generate_op_custom_tag ( $details, &$body )

generate_op_filter() 공개 메소드

public generate_op_filter ( $details, &$body )

generate_op_html() 보호된 메소드

Handle HTML code {{{
protected generate_op_html ( $details, &$body )

generate_op_if() 보호된 메소드

{% if %} HTML {% else %} TWO {% endif $} {{{
protected generate_op_if ( $details, &$body )

generate_op_ifchanged() 보호된 메소드

ifchanged [
protected generate_op_ifchanged ( $details, &$body )

generate_op_ifequal() 보호된 메소드

.. else ... {{{
protected generate_op_ifequal ( $details, &$body )

generate_op_include() 보호된 메소드

include "file.html" | include {{{
protected generate_op_include ( $details, &$body )

generate_op_loop() 보호된 메소드

for [,] in {{{
protected generate_op_loop ( $details, &$body )

generate_op_print_var() 보호된 메소드

All variable (except those flagged as |safe) are automatically escaped if autoescape is "on".
protected generate_op_print_var ( $details, &$body )

generate_op_regroup() 보호된 메소드

regroup by as {{{
protected generate_op_regroup ( $details, &$body )

generate_op_set() 공개 메소드

}}}
public generate_op_set ( $details, &$body )

generate_op_spacefull() 공개 메소드

{% spacefull %} Set to OFF strip_whitespace for a block (the compiler option) {{{
public generate_op_spacefull ( $details, &$body )

generate_variable_name() 공개 메소드

Get variable name {{{
public generate_variable_name ( $variable, $special = true )

getOpCodes() 공개 메소드

@param string $code Template content
public getOpCodes ( string $code, string $file ) : Haanga_AST
$code string
$file string File path (used for erro reporting) @return Haanga_AST
리턴 Haanga_AST

getOption() 공개 정적인 메소드

getOption($option) {{{
public static getOption ( $option )

getScopeVariable() 공개 메소드

public getScopeVariable ( $part = NULL, $string = FALSE )

get_base_template() 공개 메소드

This method load the base class, compile it and return the generated code.
public get_base_template ( array $base ) : string
$base array Base structure @return string Generated source code
리턴 string

get_context() 공개 메소드

public get_context ( $variable )

get_custom_filter() 공개 메소드

Custom Filters {{{
public get_custom_filter ( $name )

get_custom_tag() 공개 메소드

Custom Tags {{{
public get_custom_tag ( $name )

get_filtered_var() 공개 메소드

@param array $variable (Output of piped_list(B) (parser))
public get_filtered_var ( array $variable, &$varname, boolean $accept_string = NULL ) : expr
$variable array
$accept_string boolean
리턴 expr

get_function_name() 공개 메소드

get_function_name(string $name) {{{
public get_function_name ( $name )

get_template_name() 최종 공개 메소드

get_template_name() {{{
final public get_template_name ( )

isMethod() 공개 메소드

}}}
public isMethod ( $varname, &$expr )

is_safe() 공개 메소드

public is_safe ( $name )

is_var_filter() 공개 메소드

is_expr methods {{{
public is_var_filter ( $cmd )

main_cli() 최종 정적인 공개 메소드

* }}}
final static public main_cli ( )

ob_start() 공개 메소드

Start a new buffering
public ob_start ( &$body )

reset() 공개 메소드

reset() {{{
public reset ( )

setDebug() 공개 메소드

setDebug($file) {{{
public setDebug ( $file )

setOption() 공개 정적인 메소드

@return void
public static setOption ( $option, $value ) : void
리턴 void

set_context() 공개 메소드

These two functions are useful to detect if a variable separated by dot (foo.bar) is an array or object. To avoid overhead we decide it at compile time, rather than ask over and over at rendering time. foo.bar: + If foo exists at compile time, and it is an array, it would be foo['bar'] otherwise it'd be foo->bar. + If foo don't exists at compile time, it would be foo->bar if the compiler option dot_as_object is TRUE (by default) otherwise it'd be foo['bar']
저자: crodas @author gallir (ideas)
public set_context ( $varname, $value )

set_safe() 공개 메소드

* variable safety {{{
public set_safe ( $name )

set_template_name() 공개 메소드

Set template name {{{
public set_template_name ( $path )

set_unsafe() 공개 메소드

public set_unsafe ( $name )

var_is_object() 공개 메소드

public var_is_object ( array $variable, $default = NULL )
$variable array

프로퍼티 상세

$append 보호되어 있는 프로퍼티

protected $append

$autoescape 보호되어 있는 정적으로 프로퍼티

* compiler options
protected static $autoescape

$block_var 보호되어 있는 정적으로 프로퍼티

properties {{{
protected static $block_var

$blocks 보호되어 있는 프로퍼티

protected $blocks

$check_function 보호되어 있는 프로퍼티

protected $check_function

$context 보호되어 있는 프로퍼티

Context at compile time
protected $context

$debug 보호되어 있는 프로퍼티

Debug file
protected $debug

$dot_as_object 보호되어 있는 정적으로 프로퍼티

protected static $dot_as_object

$echo_concat 보호되어 있는 정적으로 프로퍼티

protected static $echo_concat

$enable_load 보호되어 있는 정적으로 프로퍼티

protected static $enable_load

$file 보호되어 있는 프로퍼티

protected $file

$forid 보호되어 있는 프로퍼티

protected $forid

$forloop 보호되어 있는 프로퍼티

protected $forloop

$generator 보호되어 있는 프로퍼티

protected $generator

$global_context 보호되어 있는 정적으로 프로퍼티

protected static $global_context

$if_empty 보호되어 있는 정적으로 프로퍼티

protected static $if_empty

$in_block 보호되어 있는 프로퍼티

number of blocks :-)
protected $in_block

$is_exec_enabled 보호되어 있는 정적으로 프로퍼티

protected static $is_exec_enabled

$line 보호되어 있는 프로퍼티

protected $line

$name 보호되어 있는 프로퍼티

protected $name

$ob_start 보호되어 있는 프로퍼티

output buffers :-)
protected $ob_start

$prepend_op 보호되어 있는 프로퍼티

protected $prepend_op

$safes 공개적으로 프로퍼티

public $safes

$strip_whitespace 보호되어 있는 정적으로 프로퍼티

protected static $strip_whitespace

$sub_template 보호되어 있는 프로퍼티

protected $sub_template

$var_alias 보호되어 있는 프로퍼티

Table which contains all variables aliases defined in the template
protected $var_alias

$var_is_safe 공개적으로 프로퍼티

Flag the current variable as safe. This means that escape won't be called if autoescape is activated (which is activated by default)
public $var_is_safe