Definition at line 62 of file Templification.class.php.
Public Member Functions | |
& | Templification () |
Constructor - Set internal variables appropriately. | |
ChangeMode ($NewModes=array()) | |
Set engine choices. | |
GetModes () | |
Get the modes for ChangeMode(). | |
GetErrors () | |
Return an array of strings describing any errors. | |
Compile ($Input) | |
Perform actual tag replacement. | |
Private Member Functions | |
_CheckPosition ($SkipPositionCheck=FALSE) | |
Find if position is still valid relative to the input. | |
_MatchStart ($Needle) | |
See if the current position matches the needle, and if so progress past the needle. | |
_ConvertPhpTags () | |
If you want to be really anal about your templates and keep them strictly TEMPLATES, turn this option on to get rid of PHP tags. | |
_SimpleCopyChar () | |
This is the fallback operation. When no other operation has anything to do with the current character, this will simply copy it to the output and increment the position marker. | |
_RemoveNewlines () | |
If the current character is a newline, remove it. Simple, neh? | |
_RemoveTabs () | |
If the current character is a tab, remove it. Simple, neh? | |
_CompressWhite () | |
If we encounter white-space (space or tab), compress it down to a single space (regardless of location). | |
_OutputExpr () | |
Find {| ... |} tags and appropriately escape them. | |
_IncludeExpr () | |
Find {+ ... +} tags and appropriately escape them. | |
_ForeachExpr () | |
Find {@ ... @} ... {@} tags and appropriately escape them. | |
_IfBlockExpr () | |
Find and replace {? ... ?} ... {! ... !} ... {!} ... {?} blocks with appropriate PHP. | |
Private Attributes | |
$_input | |
String that we want to convert. | |
$_position | |
Integer storage of position within $this->_input for processing. Processing complete when this position is past the end of the input. | |
$_output | |
Output string to be generated one character at a time from the input by the other member functions of this class. | |
$_errors | |
An array of warning messages generated about the template. | |
$_CallConvertPhpTags | |
Boolean optionally use _ConvertPhpTags(). | |
$_CallRemoveNewlines | |
Boolean optionally remove newlines from output. | |
$_CallRemoveTabs | |
Boolean optionally remove tabs from output. | |
$_CallCompressWhite | |
Boolean optionally compress white-space in output. | |
$_CallOutputExpr | |
Boolean optionally convert output expressions (why would you turn this off?). | |
$_CallIncludeExpr | |
Boolean optionally convert include expressions (why would you turn this off?). | |
$_CallForeachExpr | |
Boolean optionally convert foreach expressions (why would you turn this off?). | |
$_CallIfBlockExpr | |
Boolean optionally convert ifblock expressions (why would you turn this off?). |
|
Constructor - Set internal variables appropriately.
Definition at line 189 of file Templification.class.php. 00190 { 00191 // Initialize required variables 00192 $this->_input = "" ; 00193 $this->_output = "" ; 00194 $this->_position = 0 ; 00195 $this->_errors = array() ; 00196 00197 // Initialize engine choice 00198 $this->_CallConvertPhpTags = TRUE ; 00199 $this->_CallRemoveNewlines = FALSE ; 00200 $this->_CallRemoveTabs = TRUE ; 00201 $this->_CallCompressWhite = TRUE ; 00202 $this->_CallOutputExpr = TRUE ; 00203 $this->_CallIncludeExpr = TRUE ; 00204 $this->_CallForeachExpr = TRUE ; 00205 $this->_CallIfBlockExpr = TRUE ; 00206 00207 // Return self 00208 return($this); 00209 }
|
|
Find if position is still valid relative to the input.
Definition at line 425 of file Templification.class.php. Referenced by _CompressWhite(), _ConvertPhpTags(), _ForeachExpr(), _IfBlockExpr(), _IncludeExpr(), _MatchStart(), _OutputExpr(), _RemoveNewlines(), _RemoveTabs(), and _SimpleCopyChar(). 00426 { 00427 // Locally reference variables 00428 $I =& $this->_input; 00429 $P =& $this->_position; 00430 $O =& $this->_output; 00431 $E =& $this->_errors; 00432 00433 // Check variables 00434 if( !is_string($I) 00435 || !is_string($O) 00436 || !is_array($E) 00437 || !is_int($P) 00438 || !is_bool($this->_CallConvertPhpTags) 00439 || !is_bool($this->_CallRemoveNewlines) 00440 || !is_bool($this->_CallRemoveTabs ) 00441 || !is_bool($this->_CallCompressWhite ) 00442 || !is_bool($this->_CallOutputExpr ) 00443 || !is_bool($this->_CallIncludeExpr ) 00444 || !is_bool($this->_CallForeachExpr ) 00445 || !is_bool($this->_CallIfBlockExpr ) 00446 || strlen($I) == 0 00447 ) 00448 { 00449 return(FALSE); 00450 } 00451 if(FALSE === $SkipPositionCheck && strlen($I) <= $P) 00452 { 00453 return(FALSE); 00454 } 00455 00456 // No problems found so far 00457 return(TRUE); 00458 }
|
|
If we encounter white-space (space or tab), compress it down to a single space (regardless of location).
Definition at line 713 of file Templification.class.php. References _CheckPosition(). Referenced by Compile(). 00714 { 00715 // Check sanity 00716 if(!$this->_CheckPosition()) 00717 { 00718 return(FALSE); 00719 } 00720 00721 // Check if we should be running 00722 if(!$this->_CallCompressWhite) 00723 { 00724 return(FALSE); 00725 } 00726 00727 // Locally reference variables 00728 $I =& $this->_input; 00729 $P =& $this->_position; 00730 $O =& $this->_output; 00731 $E =& $this->_errors; 00732 00733 // Check for whitespace 00734 if($I[$P] == " " || $I[$P] == "\t") 00735 { 00736 while($P < strlen($I) && ($I[$P] == " " || $I[$P] == "\t")) 00737 { 00738 $P++; 00739 } 00740 $O .= " "; 00741 return(TRUE); 00742 } 00743 00744 // Not handled 00745 return(FALSE); 00746 }
|
Here is the call graph for this function:
|
If you want to be really anal about your templates and keep them strictly TEMPLATES, turn this option on to get rid of PHP tags. This will replace the less-than in the opening php tag with the html acceptable ampersand-a-m-p-semicolon, and likewise the greater-than in the closing tag.
Definition at line 525 of file Templification.class.php. References _CheckPosition(), and _MatchStart(). Referenced by Compile(). 00526 { 00527 // Check sanity 00528 if(!$this->_CheckPosition()) 00529 { 00530 return(FALSE); 00531 } 00532 00533 // Check if we should be running 00534 if(!$this->_CallConvertPhpTags) 00535 { 00536 return(FALSE); 00537 } 00538 00539 // Locally reference variables 00540 $I =& $this->_input; 00541 $P =& $this->_position; 00542 $O =& $this->_output; 00543 $E =& $this->_errors; 00544 00545 // Check php tags 00546 if($this->_MatchStart("<"."?")) 00547 { 00548 $E[$P] = "Found opening PHP tag"; 00549 $O .= "<?"; 00550 $P += 2; 00551 return(TRUE); 00552 } 00553 if($this->_MatchStart("?".">")) 00554 { 00555 $E[$P] = "Found closing PHP tag"; 00556 $O .= "?>"; 00557 $P += 2; 00558 return(TRUE); 00559 } 00560 00561 // Check asp tags 00562 if($this->_MatchStart("<"."%")) 00563 { 00564 $E[$P] = "Found opening ASP tag"; 00565 $O .= "<%"; 00566 $P += 2; 00567 return(TRUE); 00568 } 00569 if($this->_MatchStart("%".">")) 00570 { 00571 $E[$P] = "Found closing ASP tag"; 00572 $O .= "%>"; 00573 $P += 2; 00574 return(TRUE); 00575 } 00576 00577 // Not handled 00578 return(FALSE); 00579 }
|
Here is the call graph for this function:
|
Find {@ ... @} ... {@} tags and appropriately escape them. This one is a little complex, as we have to catch orphan tags, but allow nesting within the content area. The logic is as follows:
Definition at line 943 of file Templification.class.php. References _CheckPosition(), and _MatchStart(). Referenced by Compile(). 00944 { 00945 // Statically store start locations 00946 static $start_pos = array(); 00947 00948 // Check sanity 00949 if(!$this->_CheckPosition(TRUE)) 00950 { 00951 return(FALSE); 00952 } 00953 00954 // Check if we should be running 00955 if(!$this->_CallForeachExpr) 00956 { 00957 return(FALSE); 00958 } 00959 00960 // Locally reference variables 00961 $I =& $this->_input; 00962 $P =& $this->_position; 00963 $O =& $this->_output; 00964 $E =& $this->_errors; 00965 00966 // Reference since we can't just smack these in place 00967 $o = '<'.'?php'; 00968 $c = '?'.'>'; 00969 00970 // If EOF with nest level > 0: Report open-ended loops 00971 if(strlen($I) <= $P && 0 < count($start_pos)) 00972 { 00973 foreach($start_pos as $p) 00974 { 00975 $E[$p] = "Foreach expression missing close"; 00976 } 00977 $O = ""; 00978 $start_pos = array(); 00979 return(FALSE); 00980 } 00981 00982 // We skipped this in the sanity check so we could report 00983 // open-ended loops, so now we need to perform the check. 00984 if(!$this->_CheckPosition()) 00985 { 00986 return(FALSE); 00987 } 00988 00989 // If we find a closing tag and we're in a nested level, close 00990 // that level, otherwise we found an orphan 00991 if($this->_MatchStart("{@}")) 00992 { 00993 if(0 < count($start_pos)) 00994 { 00995 array_pop($start_pos); 00996 $O .= "$o } $c"; 00997 $P += 3; 00998 return(TRUE); 00999 } 01000 else 01001 { 01002 $E[$P] = "Found orphan loop-close"; 01003 $O = ""; 01004 $P = strlen($I); 01005 return(TRUE); 01006 } 01007 } 01008 01009 // If we found an orphan expression-close 01010 if($this->_MatchStart("@}")) 01011 { 01012 $E[$P] = "Found orphan loop-expression-close"; 01013 $O = ""; 01014 $P = strlen($I); 01015 return(TRUE); 01016 } 01017 01018 // If we found a loop-expression-start 01019 if($this->_MatchStart("{@")) 01020 { 01021 // Always skip the tag, even if we end up reporting it 01022 // is an orphan 01023 $start = $P; 01024 $P += 2; 01025 $temp_output = ""; 01026 01027 // Scan to end tag or EOF using temporary position 01028 while($P < strlen($I) && !$this->_MatchStart("@}")) 01029 { 01030 $temp_output .= $I[$P++]; 01031 } 01032 01033 // If we hit a close-tag instead of close-expression, skip 01034 // the ENTIRE thing 01035 $P--; 01036 if($this->_MatchStart("{@}")) 01037 { 01038 $E[$start] = "Open-ended loop-expression (close)"; 01039 $O = ""; 01040 $P = strlen($I); 01041 return(TRUE); 01042 } 01043 01044 // If we hit EOF, it's an orphan open tag 01045 $P++; 01046 if(!$this->_MatchStart("@}")) 01047 { 01048 $E[$start] = "Open-ended loop-expression (EOF)"; 01049 $O = ""; 01050 $P = strlen($I); 01051 return(TRUE); 01052 } 01053 01054 // We did find the close tag successfully 01055 $O .= "$o foreach ( "; 01056 $O .= $temp_output; 01057 $O .= " ) { $c"; 01058 $P += 2; 01059 array_push($start_pos, $start); 01060 return(TRUE); 01061 } 01062 }
|
Here is the call graph for this function:
|
Find and replace {? ... ?} ... {! ... !} ... {!} ... {?} blocks with appropriate PHP. This one is horribly insideous. We have to allow nesting, but intelligently capture missing tags. The logic for this one is going to hurt, but here we go: Here are the states:
Definition at line 1112 of file Templification.class.php. References _CheckPosition(), and _MatchStart(). Referenced by Compile(). 01113 { 01114 // Reference 01115 $o = '<'.'?php'; 01116 $c = '?'.'>'; 01117 $tagorder = array("{?}" , "{?" , "?}" , "{!}" , "{!" , "!}"); 01118 $nestinc = array( 01119 "{?}" => -1, 01120 "{?" => 1, 01121 "?}" => 0, 01122 "{!}" => 0, 01123 "{!" => 0, 01124 "!}" => 0, 01125 ); 01126 $allow = array( 01127 "{?}" => array( 2 , 4 , 5 , ), 01128 "{?" => array( 0 , 2 , 4 , 5 ), 01129 "?}" => array( 1 ), 01130 "{!}" => array( 2 , 4 ), 01131 "{!" => array( 2 , 4 ), 01132 "!}" => array( 3 ), 01133 ); 01134 $newstate = array( 01135 "{?}" => 0, 01136 "{?" => 1, 01137 "?}" => 2, 01138 "{!}" => 5, 01139 "{!" => 3, 01140 "!}" => 4, 01141 ); 01142 $replace = array( 01143 "{?}" => "$o } $c" , # Close if block 01144 "{?" => "$o if( " , # Open if expression 01145 "?}" => " ) { $c" , # Enter if block 01146 "{!}" => "$o } else { $c" , # Enter else block 01147 "{!" => "$o } elseif( " , # Open elseif expression 01148 "!}" => " ) { $c" , # Enter elseif block 01149 ); 01150 01151 // Statically store nesting info 01152 static $nest = array(); 01153 01154 // Check sanity 01155 if(!$this->_CheckPosition(TRUE)) 01156 { 01157 return(FALSE); 01158 } 01159 01160 // Check if we should be running 01161 if(!$this->_CallIfBlockExpr) 01162 { 01163 return(FALSE); 01164 } 01165 01166 // Locally reference variables 01167 $I =& $this->_input; 01168 $P =& $this->_position; 01169 $O =& $this->_output; 01170 $E =& $this->_errors; 01171 01172 // Find most recent addition to nest 01173 if($level = count($nest)) 01174 { 01175 $start =& $nest[$level]["start"]; 01176 $state =& $nest[$level]["state"]; 01177 } 01178 else 01179 { 01180 $start = 0; 01181 $state = 0; 01182 } 01183 01184 // Special case: EOF 01185 if(strlen($I) <= $P && $level) 01186 { 01187 foreach($nest as $level) 01188 { 01189 $name = ""; 01190 switch($level["state"]) 01191 { 01192 case 1: $name = "If expression" ; break; 01193 case 2: $name = "If block" ; break; 01194 case 3: $name = "ElseIf expression" ; break; 01195 case 4: $name = "ElseIf block" ; break; 01196 case 5: $name = "Else block" ; break; 01197 } 01198 01199 $E[$level["start"]] = "$name missing close"; 01200 } 01201 $O = ""; 01202 $P = strlen($I); 01203 $nest = array(); 01204 return(TRUE); 01205 } 01206 01207 // We skipped this in the sanity check so we could report 01208 // open-ended loops, so now we need to perform the check. 01209 if(!$this->_CheckPosition()) 01210 { 01211 return(FALSE); 01212 } 01213 01214 // For each tag, check current character 01215 foreach($tagorder as $tag) 01216 { 01217 // If we have a match 01218 if($this->_MatchStart($tag)) 01219 { 01220 // If we're allowed at this point to use this tag 01221 if(in_array($state, $allow[$tag])) 01222 { 01223 // Bump nesting level up 01224 if(1 == $nestinc[$tag]) 01225 { 01226 $level = count($nest)+1; 01227 $start =& $nest[$level]["start"]; 01228 $state =& $nest[$level]["state"]; 01229 } 01230 01231 // Record tag location 01232 $start = $P; 01233 $state = $newstate[$tag]; 01234 01235 // Record in output 01236 $O .= $replace[$tag]; 01237 $P += strlen($tag); 01238 01239 // Drop nesting level down 01240 if(-1 == $nestinc[$tag]) 01241 { 01242 array_pop($nest); 01243 } 01244 01245 return(TRUE); 01246 } 01247 else 01248 { 01249 $E[$P] = "Invalid use of $tag"; 01250 $O = ""; 01251 $P = strlen($I); 01252 return(TRUE); 01253 } 01254 } 01255 } 01256 01257 return(FALSE); 01258 }
|
Here is the call graph for this function:
|
Find {+ ... +} tags and appropriately escape them.
Definition at line 842 of file Templification.class.php. References _CheckPosition(), and _MatchStart(). Referenced by Compile(). 00843 { 00844 // Check sanity 00845 if(!$this->_CheckPosition()) 00846 { 00847 return(FALSE); 00848 } 00849 00850 // Check if we should be running 00851 if(!$this->_CallIncludeExpr) 00852 { 00853 return(FALSE); 00854 } 00855 00856 // Locally reference variables 00857 $I =& $this->_input; 00858 $P =& $this->_position; 00859 $O =& $this->_output; 00860 $E =& $this->_errors; 00861 00862 // Record the start position for if this is a tag 00863 $start_pos = $P; 00864 00865 // Reference since we can't just smack these in place 00866 $o = '<'.'?php'; 00867 $c = '?'.'>'; 00868 00869 // Check for orphans first 00870 if($this->_MatchStart("+}")) 00871 { 00872 $E[$P] = "Orphan +}"; 00873 $O = ""; 00874 $P = strlen($I); 00875 return(TRUE); 00876 } 00877 00878 // Check for opening tag 00879 if($this->_MatchStart("{+")) 00880 { 00881 // Store output for success case only 00882 $temp_output = ""; 00883 00884 // We'll always skip the open tag itself 00885 $start = $P; 00886 $P += 2; 00887 00888 // Scan to end tag or EOF using temporary position 00889 while($P < strlen($I) && !$this->_MatchStart("+}")) 00890 { 00891 $temp_output .= $I[$P++]; 00892 } 00893 00894 // If end tag found then close, else record error 00895 if($this->_MatchStart("+}")) 00896 { 00897 $O .= "$o include ( "; 00898 $O .= $temp_output; 00899 $O .= " ); $c"; 00900 $P += 2; 00901 } 00902 else 00903 { 00904 $E[$start] = "{+ Missing its closing tag"; 00905 $O = ""; 00906 $P = strlen($I); 00907 return(TRUE); 00908 } 00909 00910 // Either way we DID handle this 00911 return(TRUE); 00912 } 00913 00914 // Didn't find a tag 00915 return(FALSE); 00916 }
|
Here is the call graph for this function:
|
See if the current position matches the needle, and if so progress past the needle.
Definition at line 474 of file Templification.class.php. References _CheckPosition(). Referenced by _ConvertPhpTags(), _ForeachExpr(), _IfBlockExpr(), _IncludeExpr(), and _OutputExpr(). 00475 { 00476 // Check sanity 00477 if(!$this->_CheckPosition(TRUE)) 00478 { 00479 return(FALSE); 00480 } 00481 00482 // Locally reference variables 00483 $I =& $this->_input; 00484 $P =& $this->_position; 00485 $O =& $this->_output; 00486 $E =& $this->_errors; 00487 00488 // First check raw size problems 00489 if((strlen($I) - $P) < strlen($Needle)) 00490 { 00491 return(FALSE); 00492 } 00493 00494 // Step across needle 00495 for($x = 0; $x < strlen($Needle); $x++) 00496 { 00497 if($I[$P+$x] != $Needle[$x]) 00498 { 00499 return(FALSE); 00500 } 00501 } 00502 00503 // Didn't fail, so beginning matches 00504 return(TRUE); 00505 }
|
Here is the call graph for this function:
|
Find {| ... |} tags and appropriately escape them.
Definition at line 757 of file Templification.class.php. References _CheckPosition(), and _MatchStart(). Referenced by Compile(). 00758 { 00759 // Check sanity 00760 if(!$this->_CheckPosition()) 00761 { 00762 return(FALSE); 00763 } 00764 00765 // Check if we should be running 00766 if(!$this->_CallOutputExpr) 00767 { 00768 return(FALSE); 00769 } 00770 00771 // Locally reference variables 00772 $I =& $this->_input; 00773 $P =& $this->_position; 00774 $O =& $this->_output; 00775 $E =& $this->_errors; 00776 00777 // Record the start position for if this is a tag 00778 $start_pos = $P; 00779 00780 // Reference since we can't just smack these in place 00781 $o = '<'.'?php'; 00782 $c = '?'.'>'; 00783 00784 // Check for orphans first 00785 if($this->_MatchStart("|}")) 00786 { 00787 $E[$P] = "Orphan |}"; 00788 $O = ""; 00789 $P = strlen($I); 00790 return(TRUE); 00791 } 00792 00793 // Check for opening tag 00794 if($this->_MatchStart("{|")) 00795 { 00796 // Store output for success case only 00797 $temp_output = ""; 00798 00799 // We'll always skip the open tag itself 00800 $start = $P; 00801 $P += 2; 00802 00803 // Scan to end tag or EOF using temporary position 00804 while($P < strlen($I) && !$this->_MatchStart("|}")) 00805 { 00806 $temp_output .= $I[$P++]; 00807 } 00808 00809 // If end tag found then close, else record error 00810 if($this->_MatchStart("|}")) 00811 { 00812 $O .= "$o print ( "; 00813 $O .= $temp_output; 00814 $O .= " ); $c"; 00815 $P += 2; 00816 } 00817 else 00818 { 00819 $E[$start] = "{| Missing closing tag"; 00820 $O = ""; 00821 $P = strlen($I); 00822 return(TRUE); 00823 } 00824 00825 // Either way we DID handle this 00826 return(TRUE); 00827 } 00828 00829 // Didn't find a tag 00830 return(FALSE); 00831 }
|
Here is the call graph for this function:
|
If the current character is a newline, remove it. Simple, neh?
Definition at line 625 of file Templification.class.php. References _CheckPosition(). Referenced by Compile(). 00626 { 00627 // Check sanity 00628 if(!$this->_CheckPosition()) 00629 { 00630 return(FALSE); 00631 } 00632 00633 // Check if we should be running 00634 if(!$this->_CallRemoveNewlines) 00635 { 00636 return(FALSE); 00637 } 00638 00639 // Locally reference variables 00640 $I =& $this->_input; 00641 $P =& $this->_position; 00642 $O =& $this->_output; 00643 $E =& $this->_errors; 00644 00645 // Check if current character is newline 00646 if("\n" == $I[$P]) 00647 { 00648 $P++; 00649 return(TRUE); 00650 } 00651 00652 // Not handled 00653 return(FALSE); 00654 }
|
Here is the call graph for this function:
|
If the current character is a tab, remove it. Simple, neh?
Definition at line 669 of file Templification.class.php. References _CheckPosition(). Referenced by Compile(). 00670 { 00671 // Check sanity 00672 if(!$this->_CheckPosition()) 00673 { 00674 return(FALSE); 00675 } 00676 00677 // Check if we should be running 00678 if(!$this->_CallRemoveTabs) 00679 { 00680 return(FALSE); 00681 } 00682 00683 // Locally reference variables 00684 $I =& $this->_input; 00685 $P =& $this->_position; 00686 $O =& $this->_output; 00687 $E =& $this->_errors; 00688 00689 // Check if current character is newline 00690 if("\t" == $I[$P]) 00691 { 00692 $P++; 00693 return(TRUE); 00694 } 00695 00696 // Not handled 00697 return(FALSE); 00698 }
|
Here is the call graph for this function:
|
This is the fallback operation. When no other operation has anything to do with the current character, this will simply copy it to the output and increment the position marker.
Definition at line 592 of file Templification.class.php. References _CheckPosition(). Referenced by Compile(). 00593 { 00594 // Check sanity 00595 if(!$this->_CheckPosition()) 00596 { 00597 return(FALSE); 00598 } 00599 00600 // Locally reference variables 00601 $I =& $this->_input; 00602 $P =& $this->_position; 00603 $O =& $this->_output; 00604 $E =& $this->_errors; 00605 00606 // Copy character and increment position 00607 $O .= $I[$P]; 00608 $P++; 00609 return(TRUE); 00610 }
|
Here is the call graph for this function:
|
Set engine choices.
Definition at line 224 of file Templification.class.php. 00225 { 00226 $name_conversion = array( 00227 "php" => "_CallConvertPhpTags" , 00228 "rmnl" => "_CallRemoveNewlines" , 00229 "rmtb" => "_CallRemoveTabs" , 00230 "rmws" => "_CallCompressWhite" , 00231 "out" => "_CallOutputExpr" , 00232 "inc" => "_CallIncludeExpr" , 00233 "for" => "_CallForeachExpr" , 00234 "if" => "_CallIfBlockExpr" , 00235 ); 00236 00237 if(!is_array($NewModes)) 00238 { 00239 return(FALSE); 00240 } 00241 00242 foreach($NewModes as $Name => $Value) 00243 { 00244 if(!isset($name_conversion[$Name])) 00245 { 00246 return(FALSE); 00247 } 00248 00249 if(!is_bool($Value)) 00250 { 00251 return(FALSE); 00252 } 00253 00254 $Name = $name_conversion[$Name]; 00255 $this->$Name = $Value; 00256 } 00257 00258 return(TRUE); 00259 }
|
|
Perform actual tag replacement.
Definition at line 367 of file Templification.class.php. References _CompressWhite(), _ConvertPhpTags(), _ForeachExpr(), _IfBlockExpr(), _IncludeExpr(), _OutputExpr(), _RemoveNewlines(), _RemoveTabs(), and _SimpleCopyChar(). 00368 { 00369 // Locally reference variables 00370 $I =& $this->_input; 00371 $P =& $this->_position; 00372 $O =& $this->_output; 00373 $E =& $this->_errors; 00374 00375 // Re-initialize with input 00376 $I = $Input; 00377 $P = 0; 00378 $O = ""; 00379 $E = array(); 00380 00381 // Check sanity 00382 if(!is_string($Input)) 00383 { 00384 $E[0] = "Template not a string"; 00385 $I = ""; 00386 $O = ""; 00387 $P = 0; 00388 } 00389 00390 // Run each engine 00391 while( $this-> _ConvertPhpTags () 00392 || $this-> _RemoveNewlines () 00393 || $this-> _RemoveTabs () 00394 || $this-> _CompressWhite () 00395 || $this-> _OutputExpr () 00396 || $this-> _IncludeExpr () 00397 || $this-> _ForeachExpr () 00398 || $this-> _IfBlockExpr () 00399 || $this-> _SimpleCopyChar () 00400 ); 00401 00402 // Sanity check 00403 if(strlen($I) > $P) 00404 { 00405 $E[0] = "Template not completely parsed!"; 00406 $O = ""; 00407 } 00408 00409 // Return output 00410 return($O); 00411 }
|
Here is the call graph for this function:
|
Return an array of strings describing any errors.
Definition at line 334 of file Templification.class.php. 00335 { 00336 // Sanity checks 00337 if(!is_array($this->_errors)) 00338 { 00339 return(array("Error getting errors... WTF")); 00340 } 00341 foreach($this->_errors as $err) 00342 { 00343 if(!is_string($err)) 00344 { 00345 return(array("Error getting errors... WTF")); 00346 } 00347 } 00348 00349 // Simple accessor return 00350 return($this->_errors); 00351 }
|
|
Get the modes for ChangeMode().
Definition at line 271 of file Templification.class.php. 00272 { 00273 return(array( 00274 array( 00275 "Name" => "php", 00276 "Default" => TRUE, 00277 "Description" => 00278 "Allow raw PHP in the templates" 00279 ), 00280 array( 00281 "Name" => "rmnl", 00282 "Default" => FALSE, 00283 "Description" => 00284 "Remove all newlines" 00285 ), 00286 array( 00287 "Name" => "rmtb", 00288 "Default" => TRUE, 00289 "Description" => 00290 "Remove all tabs" 00291 ), 00292 array( 00293 "Name" => "rmws", 00294 "Default" => TRUE, 00295 "Description" => 00296 "Remove extra whitespace" 00297 ), 00298 array( 00299 "Name" => "out", 00300 "Default" => TRUE, 00301 "Description" => 00302 "Process {||} tags" 00303 ), 00304 array( 00305 "Name" => "inc", 00306 "Default" => TRUE, 00307 "Description" => 00308 "Process {++} tags" 00309 ), 00310 array( 00311 "Name" => "for", 00312 "Default" => TRUE, 00313 "Description" => 00314 "Process {@@} tags" 00315 ), 00316 array( 00317 "Name" => "if", 00318 "Default" => TRUE, 00319 "Description" => 00320 "Process {??} tags" 00321 ), 00322 )); 00323 }
|
|
Boolean optionally compress white-space in output.
Definition at line 138 of file Templification.class.php. |
|
Boolean optionally use _ConvertPhpTags().
Definition at line 111 of file Templification.class.php. |
|
Boolean optionally convert foreach expressions (why would you turn this off?).
Definition at line 168 of file Templification.class.php. |
|
Boolean optionally convert ifblock expressions (why would you turn this off?).
Definition at line 178 of file Templification.class.php. |
|
Boolean optionally convert include expressions (why would you turn this off?).
Definition at line 158 of file Templification.class.php. |
|
Boolean optionally convert output expressions (why would you turn this off?).
Definition at line 148 of file Templification.class.php. |
|
Boolean optionally remove newlines from output.
Definition at line 120 of file Templification.class.php. |
|
Boolean optionally remove tabs from output.
Definition at line 129 of file Templification.class.php. |
|
An array of warning messages generated about the template.
Definition at line 102 of file Templification.class.php. |
|
String that we want to convert.
Definition at line 71 of file Templification.class.php. |
|
Output string to be generated one character at a time from the input by the other member functions of this class.
Definition at line 92 of file Templification.class.php. |
|
Integer storage of position within $this->_input for processing. Processing complete when this position is past the end of the input.
Definition at line 82 of file Templification.class.php. |