diff options
62 files changed, 3580 insertions, 94 deletions
diff --git a/docu/index.html b/docu/index.html new file mode 100644 index 0000000..f1e0f86 --- /dev/null +++ b/docu/index.html @@ -0,0 +1,37 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en"> +<head> + <title>Stupid Template Engine</title> + <style type="text/css" media="screen"> + code, code pre { + font-family: monospace; + background: #eee; + } + * { + font-family: sans-serif; + } + table { + border-collapse: collapse; + } + table td, table th { + border: thin solid #ccc; + padding: 1mm; + margin: 0mm; + } + table th { + font-weight: bold; + background: #eee; + } + </style> +</head> +<body> + <h1>Stupid Template Engine</h1> + <p>This documentation is splitted in two parts:</p> + <ol> + <li><a href="language_definition.html">The definition of the STE Template/Programming language</a>, including the documentation of the <a href="language_definition.html#builtin">builtin tags</a> and the <a href="language_definition.html#stdlib">standard library</a></li> + <li><a href="nd">The documentation of the PHP implementation</a></li> + </ol> + <p>It could also be helpful to take a look at the example program (the "example" directory).</p> +</body> +</html> diff --git a/language_definition.html b/docu/language_definition.html index b1964a9..58d2abd 100644 --- a/language_definition.html +++ b/docu/language_definition.html @@ -67,6 +67,17 @@ <li><a href="#builtin_mktag">ste:mktag</a></li> </ol> </li> + <li> + <a href="#stdlib">Standard Library</a> + <ol> + <li><a href="#stdlib_escape">ste:escape</a></li> + <li><a href="#stdlib_strlen">ste:strlen</a></li> + <li><a href="#stdlib_arraylen">ste:arraylen</a></li> + <li><a href="#stdlib_inc">ste:inc</a></li> + <li><a href="#stdlib_dec">ste:dec</a></li> + <li><a href="#stdlib_date">ste:date</a></li> + </ol> + </li> </ol> <h2 id="basic_elems">Basic Elements</h2> @@ -459,6 +470,7 @@ Example:<br /> <code><![CDATA[<ste:calc>(2+3+4) * (1.5 - (-0.5))</ste:calc>]]></code> will return <code>18</code>. </p> + <p>This Tag is pretty slow, because the formula is not transcompiled and only evaluated at runtime. For some simple increment and decrement operations it is better to use the <a href="#stdlib_inc">ste:inc</a> and <a href="#stdlib_dec">ste:dec</a> Tags from the <a href="#stdlib">standard library</a>.</p> <h3 id="builtin_mktag">ste:mktag</h3> <p>ste:mktag allows you to define own <a href="#basic_elems_tag">Tags</a> using <acronym>STE T/PL</acronym>.</p> @@ -487,5 +499,37 @@ 2<br /> 0<br />]]></pre></code> </p> + + <h2 id="stdlib">Standard Library</h2> + <p>The Standard Library contains some useful tags, which are not <a href="#builtin">builtin</a> but still always available.</p> + <h3 id="stdlib_escape">ste:escape</h3> + <p>Escapes characters that are reserved for HTML (e.g. <code><</code>, <code>></code>, <code>"</code>, <code>&</code>). The text to escape ist the tag's content. + <p> + Example:<br /> + <code><pre><![CDATA[<ste:escape>Foo & bar...</ste:escape>]]></pre></code> + Result:<br /> + <code><pre><![CDATA[<ste:escape>Foo & bar...</ste:escape>]]></pre></code> + </p> + + <h3 id="stdlib_strlen">ste:strlen</h3> + <p>Returns the length of then content.</p> + + <h3 id="stdlib_arraylen">ste:arraylen</h3> + <p>Returns the number of elements in the array (variable name given by parameter <code>array</code>).</p> + + <h3 id="stdlib_inc">ste:inc</h3> + <p>Increments (i.e. add 1) a variable (variable name given by parameter <code>var</code>).</p> + + <h3 id="stdlib_dec">ste:dec</h3> + <p>Decrements (i.e. substract 1) a variable (variable name given by parameter <code>var</code>).</p> + + <h3 id="stdlib_date">ste:date</h3> + <p>Formats a time using PHPs <a href="http://php.net/manual/en/function.date.php">date format [ext. Link]</a>. The format is given in the tag's content. You can specify a time (unix timestamp) using the <code>timestamp</code> parameter (defaults to the current time).</p> + <p> + Example:<br /> + <code><pre><![CDATA[<ste:date timestamp="1316357360">d. M. Y, H:i:s</ste:date>]]></pre></code> + Result:<br /> + <code><pre><![CDATA[18. Sep. 2011, 16:49:20]]></pre></code> + </p> </body> </html> diff --git a/docu/nd/Data/ClassHierarchy.nd b/docu/nd/Data/ClassHierarchy.nd Binary files differnew file mode 100644 index 0000000..2e0591a --- /dev/null +++ b/docu/nd/Data/ClassHierarchy.nd diff --git a/docu/nd/Data/ConfigFileInfo.nd b/docu/nd/Data/ConfigFileInfo.nd Binary files differnew file mode 100644 index 0000000..36e0d8c --- /dev/null +++ b/docu/nd/Data/ConfigFileInfo.nd diff --git a/docu/nd/Data/FileInfo.nd b/docu/nd/Data/FileInfo.nd new file mode 100644 index 0000000..b0f91a4 --- /dev/null +++ b/docu/nd/Data/FileInfo.nd @@ -0,0 +1,3 @@ +1.4 +PHP +/home/skadu/public_html/stupid_template_engine/stupid_template_engine.php 1316548283 1 stupid_template_engine.php diff --git a/docu/nd/Data/ImageFileInfo.nd b/docu/nd/Data/ImageFileInfo.nd Binary files differnew file mode 100644 index 0000000..e6ccf0d --- /dev/null +++ b/docu/nd/Data/ImageFileInfo.nd diff --git a/docu/nd/Data/ImageReferenceTable.nd b/docu/nd/Data/ImageReferenceTable.nd Binary files differnew file mode 100644 index 0000000..ad9b847 --- /dev/null +++ b/docu/nd/Data/ImageReferenceTable.nd diff --git a/docu/nd/Data/IndexInfo.nd b/docu/nd/Data/IndexInfo.nd Binary files differnew file mode 100644 index 0000000..bd66e34 --- /dev/null +++ b/docu/nd/Data/IndexInfo.nd diff --git a/docu/nd/Data/PreviousMenuState.nd b/docu/nd/Data/PreviousMenuState.nd Binary files differnew file mode 100644 index 0000000..7c0aeba --- /dev/null +++ b/docu/nd/Data/PreviousMenuState.nd diff --git a/docu/nd/Data/PreviousSettings.nd b/docu/nd/Data/PreviousSettings.nd Binary files differnew file mode 100644 index 0000000..d319ede --- /dev/null +++ b/docu/nd/Data/PreviousSettings.nd diff --git a/docu/nd/Data/SymbolTable.nd b/docu/nd/Data/SymbolTable.nd Binary files differnew file mode 100644 index 0000000..00e4146 --- /dev/null +++ b/docu/nd/Data/SymbolTable.nd diff --git a/docu/nd/Languages.txt b/docu/nd/Languages.txt new file mode 100644 index 0000000..be96913 --- /dev/null +++ b/docu/nd/Languages.txt @@ -0,0 +1,113 @@ +Format: 1.4 + +# This is the Natural Docs languages file for this project. If you change +# anything here, it will apply to THIS PROJECT ONLY. If you'd like to change +# something for all your projects, edit the Languages.txt in Natural Docs' +# Config directory instead. + + +# You can prevent certain file extensions from being scanned like this: +# Ignore Extensions: [extension] [extension] ... + + +#------------------------------------------------------------------------------- +# SYNTAX: +# +# Unlike other Natural Docs configuration files, in this file all comments +# MUST be alone on a line. Some languages deal with the # character, so you +# cannot put comments on the same line as content. +# +# Also, all lists are separated with spaces, not commas, again because some +# languages may need to use them. +# +# Language: [name] +# Alter Language: [name] +# Defines a new language or alters an existing one. Its name can use any +# characters. If any of the properties below have an add/replace form, you +# must use that when using Alter Language. +# +# The language Shebang Script is special. It's entry is only used for +# extensions, and files with those extensions have their shebang (#!) lines +# read to determine the real language of the file. Extensionless files are +# always treated this way. +# +# The language Text File is also special. It's treated as one big comment +# so you can put Natural Docs content in them without special symbols. Also, +# if you don't specify a package separator, ignored prefixes, or enum value +# behavior, it will copy those settings from the language that is used most +# in the source tree. +# +# Extensions: [extension] [extension] ... +# [Add/Replace] Extensions: [extension] [extension] ... +# Defines the file extensions of the language's source files. You can +# redefine extensions found in the main languages file. You can use * to +# mean any undefined extension. +# +# Shebang Strings: [string] [string] ... +# [Add/Replace] Shebang Strings: [string] [string] ... +# Defines a list of strings that can appear in the shebang (#!) line to +# designate that it's part of the language. You can redefine strings found +# in the main languages file. +# +# Ignore Prefixes in Index: [prefix] [prefix] ... +# [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ... +# +# Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ... +# [Add/Replace] Ignored [Topic Type] Prefixes in Index: [prefix] [prefix] ... +# Specifies prefixes that should be ignored when sorting symbols in an +# index. Can be specified in general or for a specific topic type. +# +#------------------------------------------------------------------------------ +# For basic language support only: +# +# Line Comments: [symbol] [symbol] ... +# Defines a space-separated list of symbols that are used for line comments, +# if any. +# +# Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ... +# Defines a space-separated list of symbol pairs that are used for block +# comments, if any. +# +# Package Separator: [symbol] +# Defines the default package separator symbol. The default is a dot. +# +# [Topic Type] Prototype Enders: [symbol] [symbol] ... +# When defined, Natural Docs will attempt to get a prototype from the code +# immediately following the topic type. It stops when it reaches one of +# these symbols. Use \n for line breaks. +# +# Line Extender: [symbol] +# Defines the symbol that allows a prototype to span multiple lines if +# normally a line break would end it. +# +# Enum Values: [global|under type|under parent] +# Defines how enum values are referenced. The default is global. +# global - Values are always global, referenced as 'value'. +# under type - Values are under the enum type, referenced as +# 'package.enum.value'. +# under parent - Values are under the enum's parent, referenced as +# 'package.value'. +# +# Perl Package: [perl package] +# Specifies the Perl package used to fine-tune the language behavior in ways +# too complex to do in this file. +# +#------------------------------------------------------------------------------ +# For full language support only: +# +# Full Language Support: [perl package] +# Specifies the Perl package that has the parsing routines necessary for full +# language support. +# +#------------------------------------------------------------------------------- + +# The following languages are defined in the main file, if you'd like to alter +# them: +# +# Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python, +# PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile, +# ActionScript, ColdFusion, R, Fortran + +# If you add a language that you think would be useful to other developers +# and should be included in Natural Docs by default, please e-mail it to +# languages [at] naturaldocs [dot] org. diff --git a/docu/nd/Menu.txt b/docu/nd/Menu.txt new file mode 100644 index 0000000..85c51af --- /dev/null +++ b/docu/nd/Menu.txt @@ -0,0 +1,60 @@ +Format: 1.4 + + +# You can add a title and sub-title to your menu like this: +# Title: [project name] +# SubTitle: [subtitle] + +# You can add a footer to your documentation like this: +# Footer: [text] +# If you want to add a copyright notice, this would be the place to do it. + +# You can add a timestamp to your documentation like one of these: +# Timestamp: Generated on month day, year +# Timestamp: Updated mm/dd/yyyy +# Timestamp: Last updated mon day +# +# m - One or two digit month. January is "1" +# mm - Always two digit month. January is "01" +# mon - Short month word. January is "Jan" +# month - Long month word. January is "January" +# d - One or two digit day. 1 is "1" +# dd - Always two digit day. 1 is "01" +# day - Day with letter extension. 1 is "1st" +# yy - Two digit year. 2006 is "06" +# yyyy - Four digit year. 2006 is "2006" +# year - Four digit year. 2006 is "2006" + + +# -------------------------------------------------------------------------- +# +# Cut and paste the lines below to change the order in which your files +# appear on the menu. Don't worry about adding or removing files, Natural +# Docs will take care of that. +# +# You can further organize the menu by grouping the entries. Add a +# "Group: [name] {" line to start a group, and add a "}" to end it. +# +# You can add text and web links to the menu by adding "Text: [text]" and +# "Link: [name] ([URL])" lines, respectively. +# +# The formatting and comments are auto-generated, so don't worry about +# neatness when editing the file. Natural Docs will clean it up the next +# time it is run. When working with groups, just deal with the braces and +# forget about the indentation and comments. +# +# -------------------------------------------------------------------------- + + +File: stupid_template_engine.php (stupid_template_engine.php) + +Group: Index { + + Index: Everything + Class Index: Classes + Constant Index: Constants + File Index: Files + Function Index: Functions + Variable Index: Variables + } # Group: Index + diff --git a/docu/nd/Topics.txt b/docu/nd/Topics.txt new file mode 100644 index 0000000..b1a9b93 --- /dev/null +++ b/docu/nd/Topics.txt @@ -0,0 +1,81 @@ +Format: 1.4 + +# This is the Natural Docs topics file for this project. If you change anything +# here, it will apply to THIS PROJECT ONLY. If you'd like to change something +# for all your projects, edit the Topics.txt in Natural Docs' Config directory +# instead. + + +# If you'd like to prevent keywords from being recognized by Natural Docs, you +# can do it like this: +# Ignore Keywords: [keyword], [keyword], ... +# +# Or you can use the list syntax like how they are defined: +# Ignore Keywords: +# [keyword] +# [keyword], [plural keyword] +# ... + + +#------------------------------------------------------------------------------- +# SYNTAX: +# +# Topic Type: [name] +# Alter Topic Type: [name] +# Creates a new topic type or alters one from the main file. Each type gets +# its own index and behavior settings. Its name can have letters, numbers, +# spaces, and these charaters: - / . ' +# +# Plural: [name] +# Sets the plural name of the topic type, if different. +# +# Keywords: +# [keyword] +# [keyword], [plural keyword] +# ... +# Defines or adds to the list of keywords for the topic type. They may only +# contain letters, numbers, and spaces and are not case sensitive. Plural +# keywords are used for list topics. You can redefine keywords found in the +# main topics file. +# +# Index: [yes|no] +# Whether the topics get their own index. Defaults to yes. Everything is +# included in the general index regardless of this setting. +# +# Scope: [normal|start|end|always global] +# How the topics affects scope. Defaults to normal. +# normal - Topics stay within the current scope. +# start - Topics start a new scope for all the topics beneath it, +# like class topics. +# end - Topics reset the scope back to global for all the topics +# beneath it. +# always global - Topics are defined as global, but do not change the scope +# for any other topics. +# +# Class Hierarchy: [yes|no] +# Whether the topics are part of the class hierarchy. Defaults to no. +# +# Page Title If First: [yes|no] +# Whether the topic's title becomes the page title if it's the first one in +# a file. Defaults to no. +# +# Break Lists: [yes|no] +# Whether list topics should be broken into individual topics in the output. +# Defaults to no. +# +# Can Group With: [type], [type], ... +# Defines a list of topic types that this one can possibly be grouped with. +# Defaults to none. +#------------------------------------------------------------------------------- + +# The following topics are defined in the main file, if you'd like to alter +# their behavior or add keywords: +# +# Generic, Class, Interface, Section, File, Group, Function, Variable, +# Property, Type, Constant, Enumeration, Event, Delegate, Macro, +# Database, Database Table, Database View, Database Index, Database +# Cursor, Database Trigger, Cookie, Build Target + +# If you add something that you think would be useful to other developers +# and should be included in Natural Docs by default, please e-mail it to +# topics [at] naturaldocs [dot] org. diff --git a/docu/nd/files/stupid_template_engine-php.html b/docu/nd/files/stupid_template_engine-php.html new file mode 100644 index 0000000..025f28b --- /dev/null +++ b/docu/nd/files/stupid_template_engine-php.html @@ -0,0 +1,88 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><title>stupid_template_engine.php</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="ContentPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Content><div class="CFile"><div class=CTopic id=MainTopic><h1 class=CTitle><a name="stupid_template_engine.php"></a>stupid_template_engine.php</h1><div class=CBody><p>The implementation of the Stupid Template Engine.</p><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SMain"><td class=SEntry><a href="#stupid_template_engine.php" >stupid_template_engine.php</a></td><td class=SDescription>The implementation of the Stupid Template Engine.</td></tr><tr class="SClass"><td class=SEntry><a href="#ste" >ste</a></td><td class=SDescription>Everything in this file is in this namespace.</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#ste.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#ste.parse" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')">parse</a></td><td class=SDescription>Parsing a STE T/PL template. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#ste.transcompile" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')">transcompile</a></td><td class=SDescription>Transcompiles an abstract syntax tree to PHP.</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#ste.Constants" >Constants</a></td><td class=SDescription></td></tr><tr class="SConstant SIndent2 SMarked"><td class=SEntry><a href="#ste.Template_modes" >Template modes</a></td><td class=SDescription></td></tr><tr class="SClass"><td class=SEntry><a href="#StorageAccess" >StorageAccess</a></td><td class=SDescription>An interface. </td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#StorageAccess.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#StorageAccess.load" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')">load</a></td><td class=SDescription>Loading a template.</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#StorageAccess.save" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')">save</a></td><td class=SDescription>Saves a template.</td></tr><tr class="SClass"><td class=SEntry><a href="#FilesystemStorageAccess" >FilesystemStorageAccess</a></td><td class=SDescription>The default <a href="#StorageAccess" class=LClass id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')">StorageAccess</a> implementation for loading / saving templates into a directory structure.</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#FilesystemStorageAccess.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#FilesystemStorageAccess.__construct" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')">__construct</a></td><td class=SDescription></td></tr><tr class="SClass"><td class=SEntry><a href="#STECore" >STECore</a></td><td class=SDescription>The Core of STE</td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#STECore.Variables" >Variables</a></td><td class=SDescription></td></tr><tr class="SVariable SIndent2 SMarked"><td class=SEntry><a href="#STECore.Public_variables" >Public variables</a></td><td class=SDescription></td></tr><tr class="SGroup SIndent1"><td class=SEntry><a href="#STECore.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#STECore.__construct" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')">__construct</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#STECore.register_tag" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')">register_tag</a></td><td class=SDescription>Register a custom tag.</td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#STECore.call_tag" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')">call_tag</a></td><td class=SDescription>Calling a custom tag (builtin ones can not be called)</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#STECore.exectemplate" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')">exectemplate</a></td><td class=SDescription>Executes a template and returns the result. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#STECore.get_var_reference" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')">get_var_reference</a></td><td class=SDescription>Get a reference to a template variable using a variable name. </td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#STECore.get_var_by_name" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')">get_var_by_name</a></td><td class=SDescription>Get a template variable by its name. </td></tr><tr class="SFunction SIndent2 SMarked"><td class=SEntry><a href="#STECore.load" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')">load</a></td><td class=SDescription>Load a template and return its result (blocks not included, use <a href="#STECore.exectemplate" class=LFunction id=link14 onMouseOver="ShowTip(event, 'tt10', 'link14')" onMouseOut="HideTip('tt10')">exectemplate</a> for this).</td></tr><tr class="SFunction SIndent2"><td class=SEntry><a href="#STECore.evalbool" id=link15 onMouseOver="ShowTip(event, 'tt14', 'link15')" onMouseOut="HideTip('tt14')">evalbool</a></td><td class=SDescription>Test, if a text represents false (an empty / only whitespace text) or true (everything else).</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div> + +<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="ste"></a>ste</h2><div class=CBody><p>Everything in this file is in this namespace.</p><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SGroup"><td class=SEntry><a href="#ste.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#ste.parse" id=link16 onMouseOver="ShowTip(event, 'tt1', 'link16')" onMouseOut="HideTip('tt1')">parse</a></td><td class=SDescription>Parsing a STE T/PL template. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#ste.transcompile" id=link17 onMouseOver="ShowTip(event, 'tt2', 'link17')" onMouseOut="HideTip('tt2')">transcompile</a></td><td class=SDescription>Transcompiles an abstract syntax tree to PHP.</td></tr><tr class="SGroup"><td class=SEntry><a href="#ste.Constants" >Constants</a></td><td class=SDescription></td></tr><tr class="SConstant SIndent1 SMarked"><td class=SEntry><a href="#ste.Template_modes" >Template modes</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div> + +<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ste.Functions"></a>Functions</h3></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="ste.parse"></a>parse</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function parse(</td><td class=PParameter nowrap>$code</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Parsing a STE T/PL template. You only need this function, if you want to manually transcompile a template.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$code</td><td class=CDLDescription>The STE T/PL code.</td></tr></table><h4 class=CHeading>Returns</h4><p>An abstract syntax tree, whic can be used with <a href="#ste.transcompile" class=LFunction id=link18 onMouseOver="ShowTip(event, 'tt2', 'link18')" onMouseOut="HideTip('tt2')">transcompile</a>.</p></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="ste.transcompile"></a>transcompile</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function transcompile(</td><td class=PParameter nowrap>$ast</td><td class=PAfterParameters nowrap>) /* Transcompile and add some boilerplate code. */</td></tr></table></td></tr></table></blockquote><p>Transcompiles an abstract syntax tree to PHP.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$ast</td><td class=CDLDescription>The abstract syntax tree to transcompile.</td></tr></table><h4 class=CHeading>Returns</h4><p>PHP code. The PHP code is an anonymous function expecting a <a href="#STECore" class=LClass id=link19 onMouseOver="ShowTip(event, 'tt15', 'link19')" onMouseOut="HideTip('tt15')">STECore</a> instance as its parameter and returns a string (everything that was not pached into a section).</p></div></div></div> + +<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="ste.Constants"></a>Constants</h3></div></div> + +<div class="CConstant"><div class=CTopic><h3 class=CTitle><a name="ste.Template_modes"></a>Template modes</h3><div class=CBody><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry><a name="MODE_SOURCE"></a>MODE_SOURCE</td><td class=CDLDescription>The Templates source</td></tr><tr><td class=CDLEntry><a name="MODE_TRANSCOMPILED"></a>MODE_TRANSCOMPILED</td><td class=CDLDescription>The transcompiled template</td></tr></table></div></div></div> + +<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="StorageAccess"></a>StorageAccess</h2><div class=CBody><p>An interface. A StorageAccess implementation is used to access the templates from any storage. This means, that you are not limited to store the Templates inside directories, you can also use a database or something else.</p><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SGroup"><td class=SEntry><a href="#StorageAccess.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#StorageAccess.load" id=link20 onMouseOver="ShowTip(event, 'tt3', 'link20')" onMouseOut="HideTip('tt3')">load</a></td><td class=SDescription>Loading a template.</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#StorageAccess.save" id=link21 onMouseOver="ShowTip(event, 'tt4', 'link21')" onMouseOut="HideTip('tt4')">save</a></td><td class=SDescription>Saves a template.</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div> + +<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="StorageAccess.Functions"></a>Functions</h3></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="StorageAccess.load"></a>load</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function load(</td><td class=PParameterPrefix nowrap></td><td class=PParameter nowrap>$tpl,</td></tr><tr><td></td><td class=PParameterPrefix nowrap>&</td><td class=PParameter nowrap>$mode</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Loading a template.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$tpl</td><td class=CDLDescription>The name of the template.</td></tr><tr><td class=CDLEntry>&$mode</td><td class=CDLDescription>Which mode is preferred? One of the <Template modes>. If <MODE_SOURCE>, the raw sourcecode is expected, if <MODE_TRANSCOMPILED> the transcompiled template <b>as a callable function</b> (expecting an <a href="#STECore" class=LClass id=link22 onMouseOver="ShowTip(event, 'tt15', 'link22')" onMouseOut="HideTip('tt15')">STECore</a> instance as first parameter) is expected. If the transcompiled version is not available or older than the source, you can set this parameter to <MODE_SOURCE> and return the source.</td></tr></table><h4 class=CHeading>Returns</h4><p>Either the sourcecode or a callable function (first, and only parameter: an <a href="#STECore" class=LClass id=link23 onMouseOver="ShowTip(event, 'tt15', 'link23')" onMouseOut="HideTip('tt15')">STECore</a> instance).</p></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="StorageAccess.save"></a>save</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function save(</td><td class=PParameter nowrap>$tpl,</td></tr><tr><td></td><td class=PParameter nowrap>$data,</td></tr><tr><td></td><td class=PParameter nowrap>$mode</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Saves a template.</p><h4 class=CHeading>Parameters</h4><p>$tpl -The name of the template. $data - The data to be saved. $mode - A <Template mode> constant.</p></div></div></div> + +<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="FilesystemStorageAccess"></a>FilesystemStorageAccess</h2><div class=CBody><p>The default <a href="#StorageAccess" class=LClass id=link25 onMouseOver="ShowTip(event, 'tt5', 'link25')" onMouseOut="HideTip('tt5')">StorageAccess</a> implementation for loading / saving templates into a directory structure.</p><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SGroup"><td class=SEntry><a href="#FilesystemStorageAccess.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#FilesystemStorageAccess.__construct" id=link24 onMouseOver="ShowTip(event, 'tt6', 'link24')" onMouseOut="HideTip('tt6')">__construct</a></td><td class=SDescription></td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div> + +<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="FilesystemStorageAccess.Functions"></a>Functions</h3></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="FilesystemStorageAccess.__construct"></a>__construct</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function __construct(</td><td class=PParameter nowrap>$src,</td></tr><tr><td></td><td class=PParameter nowrap>$transc</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$src</td><td class=CDLDescription>The directory with the sources (Writing permissions are not mandatory, because STE does not save template sources).</td></tr><tr><td class=CDLEntry>$transc</td><td class=CDLDescription>The directory with the transcompiled templates (the PHP instance / the HTTP Server needs writing permissions to this directory).</td></tr></table></div></div></div> + +<div class="CClass"><div class=CTopic><h2 class=CTitle><a name="STECore"></a>STECore</h2><div class=CBody><p>The Core of STE</p><!--START_ND_SUMMARY--><div class=Summary><div class=STitle>Summary</div><div class=SBorder><table border=0 cellspacing=0 cellpadding=0 class=STable><tr class="SGroup"><td class=SEntry><a href="#STECore.Variables" >Variables</a></td><td class=SDescription></td></tr><tr class="SVariable SIndent1 SMarked"><td class=SEntry><a href="#STECore.Public_variables" >Public variables</a></td><td class=SDescription></td></tr><tr class="SGroup"><td class=SEntry><a href="#STECore.Functions" >Functions</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#STECore.__construct" id=link26 onMouseOver="ShowTip(event, 'tt7', 'link26')" onMouseOut="HideTip('tt7')">__construct</a></td><td class=SDescription></td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#STECore.register_tag" id=link27 onMouseOver="ShowTip(event, 'tt8', 'link27')" onMouseOut="HideTip('tt8')">register_tag</a></td><td class=SDescription>Register a custom tag.</td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#STECore.call_tag" id=link28 onMouseOver="ShowTip(event, 'tt9', 'link28')" onMouseOut="HideTip('tt9')">call_tag</a></td><td class=SDescription>Calling a custom tag (builtin ones can not be called)</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#STECore.exectemplate" id=link29 onMouseOver="ShowTip(event, 'tt10', 'link29')" onMouseOut="HideTip('tt10')">exectemplate</a></td><td class=SDescription>Executes a template and returns the result. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#STECore.get_var_reference" id=link30 onMouseOver="ShowTip(event, 'tt11', 'link30')" onMouseOut="HideTip('tt11')">get_var_reference</a></td><td class=SDescription>Get a reference to a template variable using a variable name. </td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#STECore.get_var_by_name" id=link31 onMouseOver="ShowTip(event, 'tt12', 'link31')" onMouseOut="HideTip('tt12')">get_var_by_name</a></td><td class=SDescription>Get a template variable by its name. </td></tr><tr class="SFunction SIndent1 SMarked"><td class=SEntry><a href="#STECore.load" id=link32 onMouseOver="ShowTip(event, 'tt13', 'link32')" onMouseOut="HideTip('tt13')">load</a></td><td class=SDescription>Load a template and return its result (blocks not included, use <a href="#STECore.exectemplate" class=LFunction id=link33 onMouseOver="ShowTip(event, 'tt10', 'link33')" onMouseOut="HideTip('tt10')">exectemplate</a> for this).</td></tr><tr class="SFunction SIndent1"><td class=SEntry><a href="#STECore.evalbool" id=link34 onMouseOver="ShowTip(event, 'tt14', 'link34')" onMouseOut="HideTip('tt14')">evalbool</a></td><td class=SDescription>Test, if a text represents false (an empty / only whitespace text) or true (everything else).</td></tr></table></div></div><!--END_ND_SUMMARY--></div></div></div> + +<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="STECore.Variables"></a>Variables</h3></div></div> + +<div class="CVariable"><div class=CTopic><h3 class=CTitle><a name="STECore.Public_variables"></a>Public variables</h3><div class=CBody><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry><a name="$blocks"></a>$blocks</td><td class=CDLDescription>Associative array of blocks (see the language definition).</td></tr><tr><td class=CDLEntry><a name="$blockorder"></a>$blockorder</td><td class=CDLDescription>The order of the blocks (an array)</td></tr><tr><td class=CDLEntry><a name="$vars"></a>$vars</td><td class=CDLDescription>Associative array of all template variables. Use this to pass data to your templates.</td></tr></table></div></div></div> + +<div class="CGroup"><div class=CTopic><h3 class=CTitle><a name="STECore.Functions"></a>Functions</h3></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="STECore.__construct"></a>__construct</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function __construct(</td><td class=PParameter nowrap>$storage_access</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$storage_access</td><td class=CDLDescription>An Instance of a <a href="#StorageAccess" class=LClass id=link35 onMouseOver="ShowTip(event, 'tt5', 'link35')" onMouseOut="HideTip('tt5')">StorageAccess</a> implementation.</td></tr></table></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="STECore.register_tag"></a>register_tag</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function register_tag(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$callback</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Register a custom tag.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$name</td><td class=CDLDescription>The name of the tag.</td></tr><tr><td class=CDLEntry>$callback</td><td class=CDLDescription>A callable function (This must tage three parameters: The <a href="#STECore" class=LClass id=link36 onMouseOver="ShowTip(event, 'tt15', 'link36')" onMouseOut="HideTip('tt15')">STECore</a> instance, an associative array of parameters, and a function representing the tags content(This expects the <a href="#STECore" class=LClass id=link37 onMouseOver="ShowTip(event, 'tt15', 'link37')" onMouseOut="HideTip('tt15')">STECore</a> instance as its only parameter and returns its text result, i.e to get the text, you neeed to call this function with the <a href="#STECore" class=LClass id=link38 onMouseOver="ShowTip(event, 'tt15', 'link38')" onMouseOut="HideTip('tt15')">STECore</a> instance as a parameter)).</td></tr></table></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="STECore.call_tag"></a>call_tag</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function call_tag(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$params,</td></tr><tr><td></td><td class=PParameter nowrap>$sub</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Calling a custom tag (builtin ones can not be called)</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$name</td><td class=CDLDescription>The Tag’s name</td></tr><tr><td class=CDLEntry>$params</td><td class=CDLDescription>Associative array of parameters</td></tr><tr><td class=CDLEntry>$sub</td><td class=CDLDescription>A callable function (expecting an <a href="#STECore" class=LClass id=link39 onMouseOver="ShowTip(event, 'tt15', 'link39')" onMouseOut="HideTip('tt15')">STECore</a> instance as it’s parameter) that represents the tag’s content.</td></tr></table><h4 class=CHeading>Returns</h4><p>The output of the tag.</p></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="STECore.exectemplate"></a>exectemplate</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function exectemplate(</td><td class=PParameter nowrap>$tpl</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Executes a template and returns the result. The huge difference to <a href="#STECore.load" class=LFunction id=link40 onMouseOver="ShowTip(event, 'tt13', 'link40')" onMouseOut="HideTip('tt13')">load</a> is that this function will also output all blocks.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$tpl</td><td class=CDLDescription>The name of the template to execute.</td></tr></table><h4 class=CHeading>Returns</h4><p>The output of the template.</p></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="STECore.get_var_reference"></a>get_var_reference</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function &get_var_reference(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$create_if_not_exist</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get a reference to a template variable using a variable name. This can be used,if your custom tag takes a variable name as a parameter.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$name</td><td class=CDLDescription>The variables name.</td></tr><tr><td class=CDLEntry>$create_if_not_exist</td><td class=CDLDescription>Should the variable be created, if it does not exist? Otherwise NULL will be returned, if the variable does not exist.</td></tr></table><h4 class=CHeading>Returns</h4><p>A Reference to the variable.</p></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="STECore.get_var_by_name"></a>get_var_by_name</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function get_var_by_name(</td><td class=PParameter nowrap>$name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Get a template variable by its name. This can be used,if your custom tag takes a variable name as a parameter.</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$name</td><td class=CDLDescription>The variables name.</td></tr></table><h4 class=CHeading>Returns</h4><p>The variables value.</p></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="STECore.load"></a>load</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function load(</td><td class=PParameter nowrap>$tpl,</td><td class=PDefaultValuePrefix> </td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PParameter nowrap>$quiet</td><td class=PDefaultValuePrefix> = </td><td class=PDefaultValue width=100%>False</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Load a template and return its result (blocks not included, use <a href="#STECore.exectemplate" class=LFunction id=link41 onMouseOver="ShowTip(event, 'tt10', 'link41')" onMouseOut="HideTip('tt10')">exectemplate</a> for this).</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$tpl</td><td class=CDLDescription>The name of the template to be loaded.</td></tr><tr><td class=CDLEntry>$quiet</td><td class=CDLDescription>If true, do not output anything and do notmodify the blocks. This can be useful to load custom tags that are programmed in STE T/PL. Default: false.</td></tr></table><h4 class=CHeading>Returns</h4><p>The result of the template (if $quiet == false).</p></div></div></div> + +<div class="CFunction"><div class=CTopic><h3 class=CTitle><a name="STECore.evalbool"></a>evalbool</h3><div class=CBody><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function evalbool(</td><td class=PParameter nowrap>$txt</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote><p>Test, if a text represents false (an empty / only whitespace text) or true (everything else).</p><h4 class=CHeading>Parameters</h4><table border=0 cellspacing=0 cellpadding=0 class=CDescriptionList><tr><td class=CDLEntry>$txt</td><td class=CDLDescription>The text to test.</td></tr></table><h4 class=CHeading>Returns</h4><p>true/false.</p></div></div></div> + +</div><!--Content--> + + +<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer--> + + +<div id=Menu><div class=MEntry><div class=MFile id=MSelected>stupid_template_engine.php</div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="../index/General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="../index/Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!-- +var searchPanel = new SearchPanel("searchPanel", "HTML", "../search"); +--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div></div><!--Menu--> + + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function parse(</td><td class=PParameter nowrap>$code</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Parsing a STE T/PL template. </div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function transcompile(</td><td class=PParameter nowrap>$ast</td><td class=PAfterParameters nowrap>) /* Transcompile and add some boilerplate code. */</td></tr></table></td></tr></table></blockquote>Transcompiles an abstract syntax tree to PHP.</div></div><div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function load(</td><td class=PParameterPrefix nowrap></td><td class=PParameter nowrap>$tpl,</td></tr><tr><td></td><td class=PParameterPrefix nowrap>&</td><td class=PParameter nowrap>$mode</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Loading a template.</div></div><div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function save(</td><td class=PParameter nowrap>$tpl,</td></tr><tr><td></td><td class=PParameter nowrap>$data,</td></tr><tr><td></td><td class=PParameter nowrap>$mode</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Saves a template.</div></div><div class=CToolTip id="tt5"><div class=CClass>An interface. </div></div><div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function __construct(</td><td class=PParameter nowrap>$src,</td></tr><tr><td></td><td class=PParameter nowrap>$transc</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function __construct(</td><td class=PParameter nowrap>$storage_access</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function register_tag(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$callback</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Register a custom tag.</div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function call_tag(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$params,</td></tr><tr><td></td><td class=PParameter nowrap>$sub</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Calling a custom tag (builtin ones can not be called)</div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function exectemplate(</td><td class=PParameter nowrap>$tpl</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Executes a template and returns the result. </div></div><div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function &get_var_reference(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$create_if_not_exist</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get a reference to a template variable using a variable name. </div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function get_var_by_name(</td><td class=PParameter nowrap>$name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get a template variable by its name. </div></div><div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function load(</td><td class=PParameter nowrap>$tpl,</td><td class=PDefaultValuePrefix> </td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PParameter nowrap>$quiet</td><td class=PDefaultValuePrefix> = </td><td class=PDefaultValue width=100%>False</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Load a template and return its result (blocks not included, use exectemplate for this).</div></div><div class=CToolTip id="tt14"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function evalbool(</td><td class=PParameter nowrap>$txt</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Test, if a text represents false (an empty / only whitespace text) or true (everything else).</div></div><div class=CToolTip id="tt15"><div class=CClass>The Core of STE</div></div><!--END_ND_TOOLTIPS--> + + + + +<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div> + + +<script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/index.html b/docu/nd/index.html new file mode 100644 index 0000000..4427f51 --- /dev/null +++ b/docu/nd/index.html @@ -0,0 +1 @@ +<html><head><meta http-equiv="Refresh" CONTENT="0; URL=files/stupid_template_engine-php.html"></head></html>
\ No newline at end of file diff --git a/docu/nd/index/Classes.html b/docu/nd/index/Classes.html new file mode 100644 index 0000000..e61de72 --- /dev/null +++ b/docu/nd/index/Classes.html @@ -0,0 +1,37 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><title>Class Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=IPageTitle>Class Index</div><div class=INavigationBar>$#! · 0-9 · A · B · C · D · E · <a href="#F">F</a> · G · H · I · J · K · L · M · N · O · P · Q · R · <a href="#S">S</a> · T · U · V · W · X · Y · Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="F"></a>F</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>FilesystemStorageAccess</a></td></tr><tr><td class=IHeading><a name="S"></a>S</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>ste</a></td></tr><tr><td class=ISymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>STECore</a></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#StorageAccess" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>StorageAccess</a></td></tr></table> +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt1"><div class=CClass>The default StorageAccess implementation for loading / saving templates into a directory structure.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt2"><div class=CClass>Everything in this file is in this namespace.</div></div><div class=CToolTip id="tt3"><div class=CClass>The Core of STE</div></div><div class=CToolTip id="tt4"><div class=CClass>An interface. </div></div><!--END_ND_TOOLTIPS--> + +</div><!--Index--> + + +<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer--> + + +<div id=Menu><div class=MEntry><div class=MFile><a href="../files/stupid_template_engine-php.html">stupid_template_engine.php</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Classes</div></div><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!-- +var searchPanel = new SearchPanel("searchPanel", "HTML", "../search"); +--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div></div><!--Menu--> + + +<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div> + + +<script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/index/Constants.html b/docu/nd/index/Constants.html new file mode 100644 index 0000000..3e2d330 --- /dev/null +++ b/docu/nd/index/Constants.html @@ -0,0 +1,37 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><title>Constant Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=IPageTitle>Constant Index</div><div class=INavigationBar>$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · <a href="#M">M</a> · N · O · P · Q · R · S · <a href="#T">T</a> · U · V · W · X · Y · Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="M"></a>M</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.MODE_SOURCE" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>MODE_SOURCE</a>, <span class=IParent>ste</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.MODE_TRANSCOMPILED" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>MODE_TRANSCOMPILED</a>, <span class=IParent>ste</span></td></tr><tr><td class=IHeading><a name="T"></a>T</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.Template_modes" class=ISymbol>Template modes</a>, <span class=IParent>ste</span></td></tr></table> +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt1"><div class=CConstant>The Templates source</div></div><div class=CToolTip id="tt2"><div class=CConstant>The transcompiled template</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<!--END_ND_TOOLTIPS--> + +</div><!--Index--> + + +<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer--> + + +<div id=Menu><div class=MEntry><div class=MFile><a href="../files/stupid_template_engine-php.html">stupid_template_engine.php</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Constants</div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!-- +var searchPanel = new SearchPanel("searchPanel", "HTML", "../search"); +--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div></div><!--Menu--> + + +<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div> + + +<script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/index/Files.html b/docu/nd/index/Files.html new file mode 100644 index 0000000..59196fe --- /dev/null +++ b/docu/nd/index/Files.html @@ -0,0 +1,33 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><title>File Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=IPageTitle>File Index</div><div class=INavigationBar>$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · <a href="#S">S</a> · T · U · V · W · X · Y · Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="S"></a>S</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#stupid_template_engine.php" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>stupid_template_engine.php</a></td></tr></table> +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt1"><div class=CFile>The implementation of the Stupid Template Engine.</div></div><!--END_ND_TOOLTIPS--> + +</div><!--Index--> + + +<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer--> + + +<div id=Menu><div class=MEntry><div class=MFile><a href="../files/stupid_template_engine-php.html">stupid_template_engine.php</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Files</div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!-- +var searchPanel = new SearchPanel("searchPanel", "HTML", "../search"); +--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div></div><!--Menu--> + + +<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div> + + +<script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/index/Functions.html b/docu/nd/index/Functions.html new file mode 100644 index 0000000..0420685 --- /dev/null +++ b/docu/nd/index/Functions.html @@ -0,0 +1,65 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><title>Function Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=IPageTitle>Function Index</div><div class=INavigationBar><a href="#Symbols">$#!</a> · 0-9 · A · B · <a href="#C">C</a> · D · <a href="#E">E</a> · F · <a href="#G">G</a> · H · I · J · K · <a href="#L">L</a> · M · N · O · <a href="#P">P</a> · Q · <a href="#R">R</a> · <a href="#S">S</a> · <a href="#T">T</a> · U · V · W · X · Y · Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="Symbols"></a>$#!</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><span class=ISymbol>__construct</span><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess.__construct" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=IParent>FilesystemStorageAccess</a><a href="../files/stupid_template_engine-php.html#STECore.__construct" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=IParent>STECore</a></div></td></tr><tr><td class=IHeading><a name="C"></a>C</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.call_tag" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>call_tag</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="E"></a>E</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.evalbool" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>evalbool</a>, <span class=IParent>STECore</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.exectemplate" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')" class=ISymbol>exectemplate</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="G"></a>G</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.get_var_by_name" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')" class=ISymbol>get_var_by_name</a>, <span class=IParent>STECore</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.get_var_reference" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')" class=ISymbol>get_var_reference</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="L"></a>L</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><span class=ISymbol>load</span><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#STECore.load" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')" class=IParent>STECore</a><a href="../files/stupid_template_engine-php.html#StorageAccess.load" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')" class=IParent>StorageAccess</a></div></td></tr><tr><td class=IHeading><a name="P"></a>P</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.parse" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')" class=ISymbol>parse</a>, <span class=IParent>ste</span></td></tr><tr><td class=IHeading><a name="R"></a>R</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.register_tag" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')" class=ISymbol>register_tag</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="S"></a>S</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#StorageAccess.save" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')" class=ISymbol>save</a>, <span class=IParent>StorageAccess</span></td></tr><tr><td class=IHeading><a name="T"></a>T</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.transcompile" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')" class=ISymbol>transcompile</a>, <span class=IParent>ste</span></td></tr></table> +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function __construct(</td><td class=PParameter nowrap>$src,</td></tr><tr><td></td><td class=PParameter nowrap>$transc</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function __construct(</td><td class=PParameter nowrap>$storage_access</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt3"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function call_tag(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$params,</td></tr><tr><td></td><td class=PParameter nowrap>$sub</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Calling a custom tag (builtin ones can not be called)</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt4"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function evalbool(</td><td class=PParameter nowrap>$txt</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Test, if a text represents false (an empty / only whitespace text) or true (everything else).</div></div><div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function exectemplate(</td><td class=PParameter nowrap>$tpl</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Executes a template and returns the result. </div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function get_var_by_name(</td><td class=PParameter nowrap>$name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get a template variable by its name. </div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function &get_var_reference(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$create_if_not_exist</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get a reference to a template variable using a variable name. </div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt8"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function load(</td><td class=PParameter nowrap>$tpl,</td><td class=PDefaultValuePrefix> </td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PParameter nowrap>$quiet</td><td class=PDefaultValuePrefix> = </td><td class=PDefaultValue width=100%>False</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Load a template and return its result (blocks not included, use exectemplate for this).</div></div><div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function load(</td><td class=PParameterPrefix nowrap></td><td class=PParameter nowrap>$tpl,</td></tr><tr><td></td><td class=PParameterPrefix nowrap>&</td><td class=PParameter nowrap>$mode</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Loading a template.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function parse(</td><td class=PParameter nowrap>$code</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Parsing a STE T/PL template. </div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function register_tag(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$callback</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Register a custom tag.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function save(</td><td class=PParameter nowrap>$tpl,</td></tr><tr><td></td><td class=PParameter nowrap>$data,</td></tr><tr><td></td><td class=PParameter nowrap>$mode</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Saves a template.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt13"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function transcompile(</td><td class=PParameter nowrap>$ast</td><td class=PAfterParameters nowrap>) /* Transcompile and add some boilerplate code. */</td></tr></table></td></tr></table></blockquote>Transcompiles an abstract syntax tree to PHP.</div></div><!--END_ND_TOOLTIPS--> + +</div><!--Index--> + + +<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer--> + + +<div id=Menu><div class=MEntry><div class=MFile><a href="../files/stupid_template_engine-php.html">stupid_template_engine.php</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Functions</div></div><div class=MEntry><div class=MIndex><a href="Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!-- +var searchPanel = new SearchPanel("searchPanel", "HTML", "../search"); +--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div></div><!--Menu--> + + +<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div> + + +<script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/index/General.html b/docu/nd/index/General.html new file mode 100644 index 0000000..5760937 --- /dev/null +++ b/docu/nd/index/General.html @@ -0,0 +1,81 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><title>Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=IPageTitle>Index</div><div class=INavigationBar><a href="#Symbols">$#!</a> · 0-9 · A · <a href="#B">B</a> · <a href="#C">C</a> · D · <a href="#E">E</a> · <a href="#F">F</a> · <a href="#G">G</a> · H · I · J · K · <a href="#L">L</a> · <a href="#M">M</a> · N · O · <a href="#P">P</a> · Q · <a href="#R">R</a> · <a href="#S">S</a> · <a href="#T">T</a> · U · <a href="#V">V</a> · W · X · Y · Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="Symbols"></a>$#!</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><span class=ISymbol>__construct</span><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess.__construct" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=IParent>FilesystemStorageAccess</a><a href="../files/stupid_template_engine-php.html#STECore.__construct" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=IParent>STECore</a></div></td></tr><tr><td class=IHeading><a name="B"></a>B</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>$</td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.$blockorder" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>blockorder</a>, <span class=IParent>STECore</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>$</td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.$blocks" id=link4 onMouseOver="ShowTip(event, 'tt4', 'link4')" onMouseOut="HideTip('tt4')" class=ISymbol>blocks</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="C"></a>C</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.call_tag" id=link5 onMouseOver="ShowTip(event, 'tt5', 'link5')" onMouseOut="HideTip('tt5')" class=ISymbol>call_tag</a>, <span class=IParent>STECore</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.Constants" class=ISymbol>Constants</a>, <span class=IParent>ste</span></td></tr><tr><td class=IHeading><a name="E"></a>E</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.evalbool" id=link6 onMouseOver="ShowTip(event, 'tt6', 'link6')" onMouseOut="HideTip('tt6')" class=ISymbol>evalbool</a>, <span class=IParent>STECore</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.exectemplate" id=link7 onMouseOver="ShowTip(event, 'tt7', 'link7')" onMouseOut="HideTip('tt7')" class=ISymbol>exectemplate</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="F"></a>F</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess" id=link8 onMouseOver="ShowTip(event, 'tt8', 'link8')" onMouseOut="HideTip('tt8')" class=ISymbol>FilesystemStorageAccess</a></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><span class=ISymbol>Functions</span><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess.Functions" class=IParent>FilesystemStorageAccess</a><a href="../files/stupid_template_engine-php.html#ste.Functions" class=IParent>ste</a><a href="../files/stupid_template_engine-php.html#STECore.Functions" class=IParent>STECore</a><a href="../files/stupid_template_engine-php.html#StorageAccess.Functions" class=IParent>StorageAccess</a></div></td></tr><tr><td class=IHeading><a name="G"></a>G</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.get_var_by_name" id=link9 onMouseOver="ShowTip(event, 'tt9', 'link9')" onMouseOut="HideTip('tt9')" class=ISymbol>get_var_by_name</a>, <span class=IParent>STECore</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.get_var_reference" id=link10 onMouseOver="ShowTip(event, 'tt10', 'link10')" onMouseOut="HideTip('tt10')" class=ISymbol>get_var_reference</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="L"></a>L</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><span class=ISymbol>load</span><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#STECore.load" id=link11 onMouseOver="ShowTip(event, 'tt11', 'link11')" onMouseOut="HideTip('tt11')" class=IParent>STECore</a><a href="../files/stupid_template_engine-php.html#StorageAccess.load" id=link12 onMouseOver="ShowTip(event, 'tt12', 'link12')" onMouseOut="HideTip('tt12')" class=IParent>StorageAccess</a></div></td></tr><tr><td class=IHeading><a name="M"></a>M</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.MODE_SOURCE" id=link13 onMouseOver="ShowTip(event, 'tt13', 'link13')" onMouseOut="HideTip('tt13')" class=ISymbol>MODE_SOURCE</a>, <span class=IParent>ste</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.MODE_TRANSCOMPILED" id=link14 onMouseOver="ShowTip(event, 'tt14', 'link14')" onMouseOut="HideTip('tt14')" class=ISymbol>MODE_TRANSCOMPILED</a>, <span class=IParent>ste</span></td></tr><tr><td class=IHeading><a name="P"></a>P</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.parse" id=link15 onMouseOver="ShowTip(event, 'tt15', 'link15')" onMouseOut="HideTip('tt15')" class=ISymbol>parse</a>, <span class=IParent>ste</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.Public_variables" class=ISymbol>Public variables</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="R"></a>R</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.register_tag" id=link16 onMouseOver="ShowTip(event, 'tt16', 'link16')" onMouseOut="HideTip('tt16')" class=ISymbol>register_tag</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="S"></a>S</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#StorageAccess.save" id=link17 onMouseOver="ShowTip(event, 'tt17', 'link17')" onMouseOut="HideTip('tt17')" class=ISymbol>save</a>, <span class=IParent>StorageAccess</span></td></tr><tr><td class=ISymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste" id=link18 onMouseOver="ShowTip(event, 'tt18', 'link18')" onMouseOut="HideTip('tt18')" class=ISymbol>ste</a></td></tr><tr><td class=ISymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore" id=link19 onMouseOver="ShowTip(event, 'tt19', 'link19')" onMouseOut="HideTip('tt19')" class=ISymbol>STECore</a></td></tr><tr><td class=ISymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#StorageAccess" id=link20 onMouseOver="ShowTip(event, 'tt20', 'link20')" onMouseOut="HideTip('tt20')" class=ISymbol>StorageAccess</a></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#stupid_template_engine.php" id=link21 onMouseOver="ShowTip(event, 'tt21', 'link21')" onMouseOut="HideTip('tt21')" class=ISymbol>stupid_template_engine.php</a></td></tr><tr><td class=IHeading><a name="T"></a>T</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.Template_modes" class=ISymbol>Template modes</a>, <span class=IParent>ste</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#ste.transcompile" id=link22 onMouseOver="ShowTip(event, 'tt22', 'link22')" onMouseOut="HideTip('tt22')" class=ISymbol>transcompile</a>, <span class=IParent>ste</span></td></tr><tr><td class=IHeading><a name="V"></a>V</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.Variables" class=ISymbol>Variables</a>, <span class=IParent>STECore</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>$</td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.$vars" id=link23 onMouseOver="ShowTip(event, 'tt23', 'link23')" onMouseOut="HideTip('tt23')" class=ISymbol>vars</a>, <span class=IParent>STECore</span></td></tr></table> +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt1"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function __construct(</td><td class=PParameter nowrap>$src,</td></tr><tr><td></td><td class=PParameter nowrap>$transc</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><div class=CToolTip id="tt2"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function __construct(</td><td class=PParameter nowrap>$storage_access</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote></div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt3"><div class=CVariable>The order of the blocks (an array)</div></div><div class=CToolTip id="tt4"><div class=CVariable>Associative array of blocks (see the language definition).</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt5"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function call_tag(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$params,</td></tr><tr><td></td><td class=PParameter nowrap>$sub</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Calling a custom tag (builtin ones can not be called)</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt6"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function evalbool(</td><td class=PParameter nowrap>$txt</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Test, if a text represents false (an empty / only whitespace text) or true (everything else).</div></div><div class=CToolTip id="tt7"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function exectemplate(</td><td class=PParameter nowrap>$tpl</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Executes a template and returns the result. </div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt8"><div class=CClass>The default StorageAccess implementation for loading / saving templates into a directory structure.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt9"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function get_var_by_name(</td><td class=PParameter nowrap>$name</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get a template variable by its name. </div></div><div class=CToolTip id="tt10"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function &get_var_reference(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$create_if_not_exist</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Get a reference to a template variable using a variable name. </div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt11"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function load(</td><td class=PParameter nowrap>$tpl,</td><td class=PDefaultValuePrefix> </td><td class=PDefaultValue width=100%></td></tr><tr><td></td><td class=PParameter nowrap>$quiet</td><td class=PDefaultValuePrefix> = </td><td class=PDefaultValue width=100%>False</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Load a template and return its result (blocks not included, use exectemplate for this).</div></div><div class=CToolTip id="tt12"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function load(</td><td class=PParameterPrefix nowrap></td><td class=PParameter nowrap>$tpl,</td></tr><tr><td></td><td class=PParameterPrefix nowrap>&</td><td class=PParameter nowrap>$mode</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Loading a template.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt13"><div class=CConstant>The Templates source</div></div><div class=CToolTip id="tt14"><div class=CConstant>The transcompiled template</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt15"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function parse(</td><td class=PParameter nowrap>$code</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Parsing a STE T/PL template. </div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt16"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function register_tag(</td><td class=PParameter nowrap>$name,</td></tr><tr><td></td><td class=PParameter nowrap>$callback</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Register a custom tag.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt17"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>public function save(</td><td class=PParameter nowrap>$tpl,</td></tr><tr><td></td><td class=PParameter nowrap>$data,</td></tr><tr><td></td><td class=PParameter nowrap>$mode</td><td class=PAfterParameters nowrap>)</td></tr></table></td></tr></table></blockquote>Saves a template.</div></div><div class=CToolTip id="tt18"><div class=CClass>Everything in this file is in this namespace.</div></div><div class=CToolTip id="tt19"><div class=CClass>The Core of STE</div></div><div class=CToolTip id="tt20"><div class=CClass>An interface. </div></div><div class=CToolTip id="tt21"><div class=CFile>The implementation of the Stupid Template Engine.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt22"><div class=CFunction><blockquote><table border=0 cellspacing=0 cellpadding=0 class=Prototype><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td class=PBeforeParameters nowrap>function transcompile(</td><td class=PParameter nowrap>$ast</td><td class=PAfterParameters nowrap>) /* Transcompile and add some boilerplate code. */</td></tr></table></td></tr></table></blockquote>Transcompiles an abstract syntax tree to PHP.</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt23"><div class=CVariable>Associative array of all template variables. </div></div><!--END_ND_TOOLTIPS--> + +</div><!--Index--> + + +<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer--> + + +<div id=Menu><div class=MEntry><div class=MFile><a href="../files/stupid_template_engine-php.html">stupid_template_engine.php</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex id=MSelected>Everything</div></div><div class=MEntry><div class=MIndex><a href="Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex><a href="Variables.html">Variables</a></div></div></div></div></div><script type="text/javascript"><!-- +var searchPanel = new SearchPanel("searchPanel", "HTML", "../search"); +--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div></div><!--Menu--> + + +<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div> + + +<script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/index/Variables.html b/docu/nd/index/Variables.html new file mode 100644 index 0000000..96ac427 --- /dev/null +++ b/docu/nd/index/Variables.html @@ -0,0 +1,41 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><title>Variable Index</title><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script><script language=JavaScript src="../javascript/searchdata.js"></script></head><body class="IndexPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=IPageTitle>Variable Index</div><div class=INavigationBar>$#! · 0-9 · A · <a href="#B">B</a> · C · D · E · F · G · H · I · J · K · L · M · N · O · <a href="#P">P</a> · Q · R · S · T · U · <a href="#V">V</a> · W · X · Y · Z</div><table border=0 cellspacing=0 cellpadding=0><tr><td class=IHeading id=IFirstHeading><a name="B"></a>B</td><td></td></tr><tr><td class=ISymbolPrefix id=IFirstSymbolPrefix>$</td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.$blockorder" id=link1 onMouseOver="ShowTip(event, 'tt1', 'link1')" onMouseOut="HideTip('tt1')" class=ISymbol>blockorder</a>, <span class=IParent>STECore</span></td></tr><tr><td class=ISymbolPrefix id=ILastSymbolPrefix>$</td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.$blocks" id=link2 onMouseOver="ShowTip(event, 'tt2', 'link2')" onMouseOut="HideTip('tt2')" class=ISymbol>blocks</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="P"></a>P</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix> </td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.Public_variables" class=ISymbol>Public variables</a>, <span class=IParent>STECore</span></td></tr><tr><td class=IHeading><a name="V"></a>V</td><td></td></tr><tr><td class=ISymbolPrefix id=IOnlySymbolPrefix>$</td><td class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.$vars" id=link3 onMouseOver="ShowTip(event, 'tt3', 'link3')" onMouseOut="HideTip('tt3')" class=ISymbol>vars</a>, <span class=IParent>STECore</span></td></tr></table> +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt1"><div class=CVariable>The order of the blocks (an array)</div></div><div class=CToolTip id="tt2"><div class=CVariable>Associative array of blocks (see the language definition).</div></div><!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<!--END_ND_TOOLTIPS--> + + +<!--START_ND_TOOLTIPS--> +<div class=CToolTip id="tt3"><div class=CVariable>Associative array of all template variables. </div></div><!--END_ND_TOOLTIPS--> + +</div><!--Index--> + + +<div id=Footer><a href="http://www.naturaldocs.org">Generated by Natural Docs</a></div><!--Footer--> + + +<div id=Menu><div class=MEntry><div class=MFile><a href="../files/stupid_template_engine-php.html">stupid_template_engine.php</a></div></div><div class=MEntry><div class=MGroup><a href="javascript:ToggleMenu('MGroupContent1')">Index</a><div class=MGroupContent id=MGroupContent1><div class=MEntry><div class=MIndex><a href="General.html">Everything</a></div></div><div class=MEntry><div class=MIndex><a href="Classes.html">Classes</a></div></div><div class=MEntry><div class=MIndex><a href="Constants.html">Constants</a></div></div><div class=MEntry><div class=MIndex><a href="Files.html">Files</a></div></div><div class=MEntry><div class=MIndex><a href="Functions.html">Functions</a></div></div><div class=MEntry><div class=MIndex id=MSelected>Variables</div></div></div></div></div><script type="text/javascript"><!-- +var searchPanel = new SearchPanel("searchPanel", "HTML", "../search"); +--></script><div id=MSearchPanel class=MSearchPanelInactive><input type=text id=MSearchField value=Search onFocus="searchPanel.OnSearchFieldFocus(true)" onBlur="searchPanel.OnSearchFieldFocus(false)" onKeyUp="searchPanel.OnSearchFieldChange()"><select id=MSearchType onFocus="searchPanel.OnSearchTypeFocus(true)" onBlur="searchPanel.OnSearchTypeFocus(false)" onChange="searchPanel.OnSearchTypeChange()"><option id=MSearchEverything selected value="General">Everything</option><option value="Classes">Classes</option><option value="Constants">Constants</option><option value="Files">Files</option><option value="Functions">Functions</option><option value="Variables">Variables</option></select></div></div><!--Menu--> + + +<div id=MSearchResultsWindow><iframe src="" frameborder=0 name=MSearchResults id=MSearchResults></iframe><a href="javascript:searchPanel.CloseResultsWindow()" id=MSearchResultsWindowClose>Close</a></div> + + +<script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/javascript/main.js b/docu/nd/javascript/main.js new file mode 100644 index 0000000..91991f5 --- /dev/null +++ b/docu/nd/javascript/main.js @@ -0,0 +1,836 @@ +// This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL + + +// +// Browser Styles +// ____________________________________________________________________________ + +var agt=navigator.userAgent.toLowerCase(); +var browserType; +var browserVer; + +if (agt.indexOf("opera") != -1) + { + browserType = "Opera"; + + if (agt.indexOf("opera 7") != -1 || agt.indexOf("opera/7") != -1) + { browserVer = "Opera7"; } + else if (agt.indexOf("opera 8") != -1 || agt.indexOf("opera/8") != -1) + { browserVer = "Opera8"; } + else if (agt.indexOf("opera 9") != -1 || agt.indexOf("opera/9") != -1) + { browserVer = "Opera9"; } + } + +else if (agt.indexOf("applewebkit") != -1) + { + browserType = "Safari"; + + if (agt.indexOf("version/3") != -1) + { browserVer = "Safari3"; } + else if (agt.indexOf("safari/4") != -1) + { browserVer = "Safari2"; } + } + +else if (agt.indexOf("khtml") != -1) + { + browserType = "Konqueror"; + } + +else if (agt.indexOf("msie") != -1) + { + browserType = "IE"; + + if (agt.indexOf("msie 6") != -1) + { browserVer = "IE6"; } + else if (agt.indexOf("msie 7") != -1) + { browserVer = "IE7"; } + } + +else if (agt.indexOf("gecko") != -1) + { + browserType = "Firefox"; + + if (agt.indexOf("rv:1.7") != -1) + { browserVer = "Firefox1"; } + else if (agt.indexOf("rv:1.8)") != -1 || agt.indexOf("rv:1.8.0") != -1) + { browserVer = "Firefox15"; } + else if (agt.indexOf("rv:1.8.1") != -1) + { browserVer = "Firefox2"; } + } + + +// +// Support Functions +// ____________________________________________________________________________ + + +function GetXPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetLeft; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function GetYPosition(item) + { + var position = 0; + + if (item.offsetWidth != null) + { + while (item != document.body && item != null) + { + position += item.offsetTop; + item = item.offsetParent; + }; + }; + + return position; + }; + + +function MoveToPosition(item, x, y) + { + // Opera 5 chokes on the px extension, so it can use the Microsoft one instead. + + if (item.style.left != null) + { + item.style.left = x + "px"; + item.style.top = y + "px"; + } + else if (item.style.pixelLeft != null) + { + item.style.pixelLeft = x; + item.style.pixelTop = y; + }; + }; + + +// +// Menu +// ____________________________________________________________________________ + + +function ToggleMenu(id) + { + if (!window.document.getElementById) + { return; }; + + var display = window.document.getElementById(id).style.display; + + if (display == "none") + { display = "block"; } + else + { display = "none"; } + + window.document.getElementById(id).style.display = display; + } + +function HideAllBut(ids, max) + { + if (document.getElementById) + { + ids.sort( function(a,b) { return a - b; } ); + var number = 1; + + while (number < max) + { + if (ids.length > 0 && number == ids[0]) + { ids.shift(); } + else + { + document.getElementById("MGroupContent" + number).style.display = "none"; + }; + + number++; + }; + }; + } + + +// +// Tooltips +// ____________________________________________________________________________ + + +var tooltipTimer = 0; + +function ShowTip(event, tooltipID, linkID) + { + if (tooltipTimer) + { clearTimeout(tooltipTimer); }; + + var docX = event.clientX + window.pageXOffset; + var docY = event.clientY + window.pageYOffset; + + var showCommand = "ReallyShowTip('" + tooltipID + "', '" + linkID + "', " + docX + ", " + docY + ")"; + + tooltipTimer = setTimeout(showCommand, 1000); + } + +function ReallyShowTip(tooltipID, linkID, docX, docY) + { + tooltipTimer = 0; + + var tooltip; + var link; + + if (document.getElementById) + { + tooltip = document.getElementById(tooltipID); + link = document.getElementById(linkID); + } +/* else if (document.all) + { + tooltip = eval("document.all['" + tooltipID + "']"); + link = eval("document.all['" + linkID + "']"); + } +*/ + if (tooltip) + { + var left = GetXPosition(link); + var top = GetYPosition(link); + top += link.offsetHeight; + + + // The fallback method is to use the mouse X and Y relative to the document. We use a separate if and test if its a number + // in case some browser snuck through the above if statement but didn't support everything. + + if (!isFinite(top) || top == 0) + { + left = docX; + top = docY; + } + + // Some spacing to get it out from under the cursor. + + top += 10; + + // Make sure the tooltip doesnt get smushed by being too close to the edge, or in some browsers, go off the edge of the + // page. We do it here because Konqueror does get offsetWidth right even if it doesnt get the positioning right. + + if (tooltip.offsetWidth != null) + { + var width = tooltip.offsetWidth; + var docWidth = document.body.clientWidth; + + if (left + width > docWidth) + { left = docWidth - width - 1; } + + // If there's a horizontal scroll bar we could go past zero because it's using the page width, not the window width. + if (left < 0) + { left = 0; }; + } + + MoveToPosition(tooltip, left, top); + tooltip.style.visibility = "visible"; + } + } + +function HideTip(tooltipID) + { + if (tooltipTimer) + { + clearTimeout(tooltipTimer); + tooltipTimer = 0; + } + + var tooltip; + + if (document.getElementById) + { tooltip = document.getElementById(tooltipID); } + else if (document.all) + { tooltip = eval("document.all['" + tooltipID + "']"); } + + if (tooltip) + { tooltip.style.visibility = "hidden"; } + } + + +// +// Blockquote fix for IE +// ____________________________________________________________________________ + + +function NDOnLoad() + { + if (browserVer == "IE6") + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + if (scrollboxes.item(0)) + { + NDDoResize(); + window.onresize=NDOnResize; + }; + }; + }; + + +var resizeTimer = 0; + +function NDOnResize() + { + if (resizeTimer != 0) + { clearTimeout(resizeTimer); }; + + resizeTimer = setTimeout(NDDoResize, 250); + }; + + +function NDDoResize() + { + var scrollboxes = document.getElementsByTagName('blockquote'); + + var i; + var item; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = 100; + i++; + }; + + i = 0; + while (item = scrollboxes.item(i)) + { + item.style.width = item.parentNode.offsetWidth; + i++; + }; + + clearTimeout(resizeTimer); + resizeTimer = 0; + } + + + +/* ________________________________________________________________________________________________________ + + Class: SearchPanel + ________________________________________________________________________________________________________ + + A class handling everything associated with the search panel. + + Parameters: + + name - The name of the global variable that will be storing this instance. Is needed to be able to set timeouts. + mode - The mode the search is going to work in. Pass <NaturalDocs::Builder::Base->CommandLineOption()>, so the + value will be something like "HTML" or "FramedHTML". + + ________________________________________________________________________________________________________ +*/ + + +function SearchPanel(name, mode, resultsPath) + { + if (!name || !mode || !resultsPath) + { alert("Incorrect parameters to SearchPanel."); }; + + + // Group: Variables + // ________________________________________________________________________ + + /* + var: name + The name of the global variable that will be storing this instance of the class. + */ + this.name = name; + + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: resultsPath + The relative path from the current HTML page to the results page directory. + */ + this.resultsPath = resultsPath; + + /* + var: keyTimeout + The timeout used between a keystroke and when a search is performed. + */ + this.keyTimeout = 0; + + /* + var: keyTimeoutLength + The length of <keyTimeout> in thousandths of a second. + */ + this.keyTimeoutLength = 500; + + /* + var: lastSearchValue + The last search string executed, or an empty string if none. + */ + this.lastSearchValue = ""; + + /* + var: lastResultsPage + The last results page. The value is only relevant if <lastSearchValue> is set. + */ + this.lastResultsPage = ""; + + /* + var: deactivateTimeout + + The timeout used between when a control is deactivated and when the entire panel is deactivated. Is necessary + because a control may be deactivated in favor of another control in the same panel, in which case it should stay + active. + */ + this.deactivateTimout = 0; + + /* + var: deactivateTimeoutLength + The length of <deactivateTimeout> in thousandths of a second. + */ + this.deactivateTimeoutLength = 200; + + + + + // Group: DOM Elements + // ________________________________________________________________________ + + + // Function: DOMSearchField + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); }; + + // Function: DOMSearchType + this.DOMSearchType = function() + { return document.getElementById("MSearchType"); }; + + // Function: DOMPopupSearchResults + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); }; + + // Function: DOMPopupSearchResultsWindow + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); }; + + // Function: DOMSearchPanel + this.DOMSearchPanel = function() + { return document.getElementById("MSearchPanel"); }; + + + + + // Group: Event Handlers + // ________________________________________________________________________ + + + /* + Function: OnSearchFieldFocus + Called when focus is added or removed from the search field. + */ + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchFieldChange + Called when the content of the search field is changed. + */ + this.OnSearchFieldChange = function() + { + if (this.keyTimeout) + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + }; + + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) + { + if (searchValue != "") + { + this.keyTimeout = setTimeout(this.name + ".Search()", this.keyTimeoutLength); + } + else + { + if (this.mode == "HTML") + { this.DOMPopupSearchResultsWindow().style.display = "none"; }; + this.lastSearchValue = ""; + }; + }; + }; + + + /* + Function: OnSearchTypeFocus + Called when focus is added or removed from the search type. + */ + this.OnSearchTypeFocus = function(isActive) + { + this.Activate(isActive); + }; + + + /* + Function: OnSearchTypeChange + Called when the search type is changed. + */ + this.OnSearchTypeChange = function() + { + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != "") + { + this.Search(); + }; + }; + + + + // Group: Action Functions + // ________________________________________________________________________ + + + /* + Function: CloseResultsWindow + Closes the results window. + */ + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = "none"; + this.Activate(false, true); + }; + + + /* + Function: Search + Performs a search. + */ + this.Search = function() + { + this.keyTimeout = 0; + + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + var searchTopic = this.DOMSearchType().value; + + var pageExtension = searchValue.substr(0,1); + + if (pageExtension.match(/^[a-z]/i)) + { pageExtension = pageExtension.toUpperCase(); } + else if (pageExtension.match(/^[0-9]/)) + { pageExtension = 'Numbers'; } + else + { pageExtension = "Symbols"; }; + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + // indexSectionsWithContent is defined in searchdata.js + if (indexSectionsWithContent[searchTopic][pageExtension] == true) + { + resultsPage = this.resultsPath + '/' + searchTopic + pageExtension + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else + { + resultsPage = this.resultsPath + '/NoResults.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + }; + + var resultsFrame; + if (this.mode == "HTML") + { resultsFrame = window.frames.MSearchResults; } + else if (this.mode == "FramedHTML") + { resultsFrame = window.top.frames['Content']; }; + + + if (resultsPage != this.lastResultsPage || + + // Bug in IE. If everything becomes hidden in a run, none of them will be able to be reshown in the next for some + // reason. It counts the right number of results, and you can even read the display as "block" after setting it, but it + // just doesn't work in IE 6 or IE 7. So if we're on the right page but the previous search had no results, reload the + // page anyway to get around the bug. + (browserType == "IE" && hasResultsPage && + (!resultsFrame.searchResults || resultsFrame.searchResults.lastMatchCount == 0)) ) + + { + resultsFrame.location.href = resultsPageWithSearch; + } + + // So if the results page is right and there's no IE bug, reperform the search on the existing page. We have to check if there + // are results because NoResults.html doesn't have any JavaScript, and it would be useless to do anything on that page even + // if it did. + else if (hasResultsPage) + { + // We need to check if this exists in case the frame is present but didn't finish loading. + if (resultsFrame.searchResults) + { resultsFrame.searchResults.Search(searchValue); } + + // Otherwise just reload instead of waiting. + else + { resultsFrame.location.href = resultsPageWithSearch; }; + }; + + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (this.mode == "HTML" && domPopupSearchResultsWindow.style.display != "block") + { + var domSearchType = this.DOMSearchType(); + + var left = GetXPosition(domSearchType); + var top = GetYPosition(domSearchType) + domSearchType.offsetHeight; + + MoveToPosition(domPopupSearchResultsWindow, left, top); + domPopupSearchResultsWindow.style.display = 'block'; + }; + + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + }; + + + + // Group: Activation Functions + // Functions that handle whether the entire panel is active or not. + // ________________________________________________________________________ + + + /* + Function: Activate + + Activates or deactivates the search panel, resetting things to their default values if necessary. You can call this on every + control's OnBlur() and it will handle not deactivating the entire panel when focus is just switching between them transparently. + + Parameters: + + isActive - Whether you're activating or deactivating the panel. + ignoreDeactivateDelay - Set if you're positive the action will deactivate the panel and thus want to skip the delay. + */ + this.Activate = function(isActive, ignoreDeactivateDelay) + { + // We want to ignore isActive being false while the results window is open. + if (isActive || (this.mode == "HTML" && this.DOMPopupSearchResultsWindow().style.display == "block")) + { + if (this.inactivateTimeout) + { + clearTimeout(this.inactivateTimeout); + this.inactivateTimeout = 0; + }; + + this.DOMSearchPanel().className = 'MSearchPanelActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == 'Search') + { searchField.value = ""; } + } + else if (!ignoreDeactivateDelay) + { + this.inactivateTimeout = setTimeout(this.name + ".InactivateAfterTimeout()", this.inactivateTimeoutLength); + } + else + { + this.InactivateAfterTimeout(); + }; + }; + + + /* + Function: InactivateAfterTimeout + + Called by <inactivateTimeout>, which is set by <Activate()>. Inactivation occurs on a timeout because a control may + receive OnBlur() when focus is really transferring to another control in the search panel. In this case we don't want to + actually deactivate the panel because not only would that cause a visible flicker but it could also reset the search value. + So by doing it on a timeout instead, there's a short period where the second control's OnFocus() can cancel the deactivation. + */ + this.InactivateAfterTimeout = function() + { + this.inactivateTimeout = 0; + + this.DOMSearchPanel().className = 'MSearchPanelInactive'; + this.DOMSearchField().value = "Search"; + + this.lastSearchValue = ""; + this.lastResultsPage = ""; + }; + }; + + + + +/* ________________________________________________________________________________________________________ + + Class: SearchResults + _________________________________________________________________________________________________________ + + The class that handles everything on the search results page. + _________________________________________________________________________________________________________ +*/ + + +function SearchResults(name, mode) + { + /* + var: mode + The mode the search is going to work in, such as "HTML" or "FramedHTML". + */ + this.mode = mode; + + /* + var: lastMatchCount + The number of matches from the last run of <Search()>. + */ + this.lastMatchCount = 0; + + + /* + Function: Toggle + Toggles the visibility of the passed element ID. + */ + this.Toggle = function(id) + { + if (this.mode == "FramedHTML") + { return; }; + + var parentElement = document.getElementById(id); + + var element = parentElement.firstChild; + + while (element && element != parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'ISubIndex') + { + if (element.style.display == 'block') + { element.style.display = "none"; } + else + { element.style.display = 'block'; } + }; + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { element = element.firstChild; } + else if (element.nextSibling) + { element = element.nextSibling; } + else + { + do + { + element = element.parentNode; + } + while (element && element != parentElement && !element.nextSibling); + + if (element && element != parentElement) + { element = element.nextSibling; }; + }; + }; + }; + + + /* + Function: Search + + Searches for the passed string. If there is no parameter, it takes it from the URL query. + + Always returns true, since other documents may try to call it and that may or may not be possible. + */ + this.Search = function(search) + { + if (!search) + { + search = window.location.search; + search = search.substring(1); // Remove the leading ? + search = unescape(search); + }; + + search = search.replace(/^ +/, ""); + search = search.replace(/ +$/, ""); + search = search.toLowerCase(); + + if (search.match(/[^a-z0-9]/)) // Just a little speedup so it doesn't have to go through the below unnecessarily. + { + search = search.replace(/\_/g, "_und"); + search = search.replace(/\ +/gi, "_spc"); + search = search.replace(/\~/g, "_til"); + search = search.replace(/\!/g, "_exc"); + search = search.replace(/\@/g, "_att"); + search = search.replace(/\#/g, "_num"); + search = search.replace(/\$/g, "_dol"); + search = search.replace(/\%/g, "_pct"); + search = search.replace(/\^/g, "_car"); + search = search.replace(/\&/g, "_amp"); + search = search.replace(/\*/g, "_ast"); + search = search.replace(/\(/g, "_lpa"); + search = search.replace(/\)/g, "_rpa"); + search = search.replace(/\-/g, "_min"); + search = search.replace(/\+/g, "_plu"); + search = search.replace(/\=/g, "_equ"); + search = search.replace(/\{/g, "_lbc"); + search = search.replace(/\}/g, "_rbc"); + search = search.replace(/\[/g, "_lbk"); + search = search.replace(/\]/g, "_rbk"); + search = search.replace(/\:/g, "_col"); + search = search.replace(/\;/g, "_sco"); + search = search.replace(/\"/g, "_quo"); + search = search.replace(/\'/g, "_apo"); + search = search.replace(/\</g, "_lan"); + search = search.replace(/\>/g, "_ran"); + search = search.replace(/\,/g, "_com"); + search = search.replace(/\./g, "_per"); + search = search.replace(/\?/g, "_que"); + search = search.replace(/\//g, "_sla"); + search = search.replace(/[^a-z0-9\_]i/gi, "_zzz"); + }; + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); + + if (search.length <= rowMatchName.length && rowMatchName.substr(0, search.length) == search) + { + row.style.display = "block"; + matches++; + } + else + { row.style.display = "none"; }; + }; + + i++; + }; + + document.getElementById("Searching").style.display="none"; + + if (matches == 0) + { document.getElementById("NoMatches").style.display="block"; } + else + { document.getElementById("NoMatches").style.display="none"; } + + this.lastMatchCount = matches; + + return true; + }; + }; + diff --git a/docu/nd/javascript/searchdata.js b/docu/nd/javascript/searchdata.js new file mode 100644 index 0000000..985032f --- /dev/null +++ b/docu/nd/javascript/searchdata.js @@ -0,0 +1,182 @@ +var indexSectionsWithContent = { + "General": { + "Symbols": true, + "Numbers": false, + "A": false, + "B": true, + "C": true, + "D": false, + "E": true, + "F": true, + "G": true, + "H": false, + "I": false, + "J": false, + "K": false, + "L": true, + "M": true, + "N": false, + "O": false, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": false, + "V": true, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Variables": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": true, + "C": false, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": false, + "N": false, + "O": false, + "P": true, + "Q": false, + "R": false, + "S": false, + "T": false, + "U": false, + "V": true, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Functions": { + "Symbols": true, + "Numbers": false, + "A": false, + "B": false, + "C": true, + "D": false, + "E": true, + "F": false, + "G": true, + "H": false, + "I": false, + "J": false, + "K": false, + "L": true, + "M": false, + "N": false, + "O": false, + "P": true, + "Q": false, + "R": true, + "S": true, + "T": true, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Files": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": false, + "C": false, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": false, + "N": false, + "O": false, + "P": false, + "Q": false, + "R": false, + "S": true, + "T": false, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Classes": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": false, + "C": false, + "D": false, + "E": false, + "F": true, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": false, + "N": false, + "O": false, + "P": false, + "Q": false, + "R": false, + "S": true, + "T": false, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + }, + "Constants": { + "Symbols": false, + "Numbers": false, + "A": false, + "B": false, + "C": false, + "D": false, + "E": false, + "F": false, + "G": false, + "H": false, + "I": false, + "J": false, + "K": false, + "L": false, + "M": true, + "N": false, + "O": false, + "P": false, + "Q": false, + "R": false, + "S": false, + "T": true, + "U": false, + "V": false, + "W": false, + "X": false, + "Y": false, + "Z": false + } + }
\ No newline at end of file diff --git a/docu/nd/search/ClassesF.html b/docu/nd/search/ClassesF.html new file mode 100644 index 0000000..9c33ca5 --- /dev/null +++ b/docu/nd/search/ClassesF.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_FilesystemStorageAccess><div class=IEntry><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess" target=_parent class=ISymbol>FilesystemStorageAccess</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/ClassesS.html b/docu/nd/search/ClassesS.html new file mode 100644 index 0000000..15e616d --- /dev/null +++ b/docu/nd/search/ClassesS.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_ste><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste" target=_parent class=ISymbol>ste</a></div></div><div class=SRResult id=SR_STECore><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore" target=_parent class=ISymbol>STECore</a></div></div><div class=SRResult id=SR_StorageAccess><div class=IEntry><a href="../files/stupid_template_engine-php.html#StorageAccess" target=_parent class=ISymbol>StorageAccess</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/ConstantsM.html b/docu/nd/search/ConstantsM.html new file mode 100644 index 0000000..da4b5f8 --- /dev/null +++ b/docu/nd/search/ConstantsM.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_MODE_undSOURCE><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.MODE_SOURCE" target=_parent class=ISymbol>MODE_SOURCE</a>, <span class=IParent>ste</span></div></div><div class=SRResult id=SR_MODE_undTRANSCOMPILED><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.MODE_TRANSCOMPILED" target=_parent class=ISymbol>MODE_TRANSCOMPILED</a>, <span class=IParent>ste</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/ConstantsT.html b/docu/nd/search/ConstantsT.html new file mode 100644 index 0000000..4211788 --- /dev/null +++ b/docu/nd/search/ConstantsT.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Template_spcmodes><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.Template_modes" target=_parent class=ISymbol>Template modes</a>, <span class=IParent>ste</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FilesS.html b/docu/nd/search/FilesS.html new file mode 100644 index 0000000..b33f2d3 --- /dev/null +++ b/docu/nd/search/FilesS.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_stupid_undtemplate_undengine_perphp><div class=IEntry><a href="../files/stupid_template_engine-php.html#stupid_template_engine.php" target=_parent class=ISymbol>stupid_template_engine.php</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsC.html b/docu/nd/search/FunctionsC.html new file mode 100644 index 0000000..c5d0804 --- /dev/null +++ b/docu/nd/search/FunctionsC.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_call_undtag><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.call_tag" target=_parent class=ISymbol>call_tag</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsE.html b/docu/nd/search/FunctionsE.html new file mode 100644 index 0000000..053e88f --- /dev/null +++ b/docu/nd/search/FunctionsE.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_evalbool><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.evalbool" target=_parent class=ISymbol>evalbool</a>, <span class=IParent>STECore</span></div></div><div class=SRResult id=SR_exectemplate><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.exectemplate" target=_parent class=ISymbol>exectemplate</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsG.html b/docu/nd/search/FunctionsG.html new file mode 100644 index 0000000..1dd94fa --- /dev/null +++ b/docu/nd/search/FunctionsG.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_get_undvar_undby_undname><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.get_var_by_name" target=_parent class=ISymbol>get_var_by_name</a>, <span class=IParent>STECore</span></div></div><div class=SRResult id=SR_get_undvar_undreference><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.get_var_reference" target=_parent class=ISymbol>get_var_reference</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsL.html b/docu/nd/search/FunctionsL.html new file mode 100644 index 0000000..6dd84af --- /dev/null +++ b/docu/nd/search/FunctionsL.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_load><div class=IEntry><a href="javascript:searchResults.Toggle('SR_load')" class=ISymbol>load</a><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#STECore.load" target=_parent class=IParent>STECore</a><a href="../files/stupid_template_engine-php.html#StorageAccess.load" target=_parent class=IParent>StorageAccess</a></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsP.html b/docu/nd/search/FunctionsP.html new file mode 100644 index 0000000..c4b218e --- /dev/null +++ b/docu/nd/search/FunctionsP.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_parse><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.parse" target=_parent class=ISymbol>parse</a>, <span class=IParent>ste</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsR.html b/docu/nd/search/FunctionsR.html new file mode 100644 index 0000000..5a8fa29 --- /dev/null +++ b/docu/nd/search/FunctionsR.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_register_undtag><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.register_tag" target=_parent class=ISymbol>register_tag</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsS.html b/docu/nd/search/FunctionsS.html new file mode 100644 index 0000000..4e0fc1d --- /dev/null +++ b/docu/nd/search/FunctionsS.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_save><div class=IEntry><a href="../files/stupid_template_engine-php.html#StorageAccess.save" target=_parent class=ISymbol>save</a>, <span class=IParent>StorageAccess</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsSymbols.html b/docu/nd/search/FunctionsSymbols.html new file mode 100644 index 0000000..06ae917 --- /dev/null +++ b/docu/nd/search/FunctionsSymbols.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR__und_undconstruct><div class=IEntry><a href="javascript:searchResults.Toggle('SR__und_undconstruct')" class=ISymbol>__construct</a><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess.__construct" target=_parent class=IParent>FilesystemStorageAccess</a><a href="../files/stupid_template_engine-php.html#STECore.__construct" target=_parent class=IParent>STECore</a></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/FunctionsT.html b/docu/nd/search/FunctionsT.html new file mode 100644 index 0000000..0930a4e --- /dev/null +++ b/docu/nd/search/FunctionsT.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_transcompile><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.transcompile" target=_parent class=ISymbol>transcompile</a>, <span class=IParent>ste</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralB.html b/docu/nd/search/GeneralB.html new file mode 100644 index 0000000..2c27dd5 --- /dev/null +++ b/docu/nd/search/GeneralB.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_blockorder><div class=IEntry><span class=ISymbolPrefix>$</span><a href="../files/stupid_template_engine-php.html#STECore.$blockorder" target=_parent class=ISymbol>blockorder</a>, <span class=IParent>STECore</span></div></div><div class=SRResult id=SR_blocks><div class=IEntry><span class=ISymbolPrefix>$</span><a href="../files/stupid_template_engine-php.html#STECore.$blocks" target=_parent class=ISymbol>blocks</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralC.html b/docu/nd/search/GeneralC.html new file mode 100644 index 0000000..35cc684 --- /dev/null +++ b/docu/nd/search/GeneralC.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_call_undtag><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.call_tag" target=_parent class=ISymbol>call_tag</a>, <span class=IParent>STECore</span></div></div><div class=SRResult id=SR_Constants><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.Constants" target=_parent class=ISymbol>Constants</a>, <span class=IParent>ste</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralE.html b/docu/nd/search/GeneralE.html new file mode 100644 index 0000000..053e88f --- /dev/null +++ b/docu/nd/search/GeneralE.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_evalbool><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.evalbool" target=_parent class=ISymbol>evalbool</a>, <span class=IParent>STECore</span></div></div><div class=SRResult id=SR_exectemplate><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.exectemplate" target=_parent class=ISymbol>exectemplate</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralF.html b/docu/nd/search/GeneralF.html new file mode 100644 index 0000000..6f68074 --- /dev/null +++ b/docu/nd/search/GeneralF.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_FilesystemStorageAccess><div class=IEntry><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess" target=_parent class=ISymbol>FilesystemStorageAccess</a></div></div><div class=SRResult id=SR_Functions><div class=IEntry><a href="javascript:searchResults.Toggle('SR_Functions')" class=ISymbol>Functions</a><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess.Functions" target=_parent class=IParent>FilesystemStorageAccess</a><a href="../files/stupid_template_engine-php.html#ste.Functions" target=_parent class=IParent>ste</a><a href="../files/stupid_template_engine-php.html#STECore.Functions" target=_parent class=IParent>STECore</a><a href="../files/stupid_template_engine-php.html#StorageAccess.Functions" target=_parent class=IParent>StorageAccess</a></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralG.html b/docu/nd/search/GeneralG.html new file mode 100644 index 0000000..1dd94fa --- /dev/null +++ b/docu/nd/search/GeneralG.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_get_undvar_undby_undname><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.get_var_by_name" target=_parent class=ISymbol>get_var_by_name</a>, <span class=IParent>STECore</span></div></div><div class=SRResult id=SR_get_undvar_undreference><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.get_var_reference" target=_parent class=ISymbol>get_var_reference</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralL.html b/docu/nd/search/GeneralL.html new file mode 100644 index 0000000..6dd84af --- /dev/null +++ b/docu/nd/search/GeneralL.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_load><div class=IEntry><a href="javascript:searchResults.Toggle('SR_load')" class=ISymbol>load</a><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#STECore.load" target=_parent class=IParent>STECore</a><a href="../files/stupid_template_engine-php.html#StorageAccess.load" target=_parent class=IParent>StorageAccess</a></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralM.html b/docu/nd/search/GeneralM.html new file mode 100644 index 0000000..da4b5f8 --- /dev/null +++ b/docu/nd/search/GeneralM.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_MODE_undSOURCE><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.MODE_SOURCE" target=_parent class=ISymbol>MODE_SOURCE</a>, <span class=IParent>ste</span></div></div><div class=SRResult id=SR_MODE_undTRANSCOMPILED><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.MODE_TRANSCOMPILED" target=_parent class=ISymbol>MODE_TRANSCOMPILED</a>, <span class=IParent>ste</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralP.html b/docu/nd/search/GeneralP.html new file mode 100644 index 0000000..964ae42 --- /dev/null +++ b/docu/nd/search/GeneralP.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_parse><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.parse" target=_parent class=ISymbol>parse</a>, <span class=IParent>ste</span></div></div><div class=SRResult id=SR_Public_spcvariables><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.Public_variables" target=_parent class=ISymbol>Public variables</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralR.html b/docu/nd/search/GeneralR.html new file mode 100644 index 0000000..5a8fa29 --- /dev/null +++ b/docu/nd/search/GeneralR.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_register_undtag><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.register_tag" target=_parent class=ISymbol>register_tag</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralS.html b/docu/nd/search/GeneralS.html new file mode 100644 index 0000000..27694c7 --- /dev/null +++ b/docu/nd/search/GeneralS.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_save><div class=IEntry><a href="../files/stupid_template_engine-php.html#StorageAccess.save" target=_parent class=ISymbol>save</a>, <span class=IParent>StorageAccess</span></div></div><div class=SRResult id=SR_ste><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste" target=_parent class=ISymbol>ste</a></div></div><div class=SRResult id=SR_STECore><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore" target=_parent class=ISymbol>STECore</a></div></div><div class=SRResult id=SR_StorageAccess><div class=IEntry><a href="../files/stupid_template_engine-php.html#StorageAccess" target=_parent class=ISymbol>StorageAccess</a></div></div><div class=SRResult id=SR_stupid_undtemplate_undengine_perphp><div class=IEntry><a href="../files/stupid_template_engine-php.html#stupid_template_engine.php" target=_parent class=ISymbol>stupid_template_engine.php</a></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralSymbols.html b/docu/nd/search/GeneralSymbols.html new file mode 100644 index 0000000..06ae917 --- /dev/null +++ b/docu/nd/search/GeneralSymbols.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR__und_undconstruct><div class=IEntry><a href="javascript:searchResults.Toggle('SR__und_undconstruct')" class=ISymbol>__construct</a><div class=ISubIndex><a href="../files/stupid_template_engine-php.html#FilesystemStorageAccess.__construct" target=_parent class=IParent>FilesystemStorageAccess</a><a href="../files/stupid_template_engine-php.html#STECore.__construct" target=_parent class=IParent>STECore</a></div></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralT.html b/docu/nd/search/GeneralT.html new file mode 100644 index 0000000..6ee71ba --- /dev/null +++ b/docu/nd/search/GeneralT.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Template_spcmodes><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.Template_modes" target=_parent class=ISymbol>Template modes</a>, <span class=IParent>ste</span></div></div><div class=SRResult id=SR_transcompile><div class=IEntry><a href="../files/stupid_template_engine-php.html#ste.transcompile" target=_parent class=ISymbol>transcompile</a>, <span class=IParent>ste</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/GeneralV.html b/docu/nd/search/GeneralV.html new file mode 100644 index 0000000..1610bac --- /dev/null +++ b/docu/nd/search/GeneralV.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Variables><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.Variables" target=_parent class=ISymbol>Variables</a>, <span class=IParent>STECore</span></div></div><div class=SRResult id=SR_vars><div class=IEntry><span class=ISymbolPrefix>$</span><a href="../files/stupid_template_engine-php.html#STECore.$vars" target=_parent class=ISymbol>vars</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/NoResults.html b/docu/nd/search/NoResults.html new file mode 100644 index 0000000..02ce888 --- /dev/null +++ b/docu/nd/search/NoResults.html @@ -0,0 +1,15 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=NoMatches>No Matches</div></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/VariablesB.html b/docu/nd/search/VariablesB.html new file mode 100644 index 0000000..2c27dd5 --- /dev/null +++ b/docu/nd/search/VariablesB.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_blockorder><div class=IEntry><span class=ISymbolPrefix>$</span><a href="../files/stupid_template_engine-php.html#STECore.$blockorder" target=_parent class=ISymbol>blockorder</a>, <span class=IParent>STECore</span></div></div><div class=SRResult id=SR_blocks><div class=IEntry><span class=ISymbolPrefix>$</span><a href="../files/stupid_template_engine-php.html#STECore.$blocks" target=_parent class=ISymbol>blocks</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/VariablesP.html b/docu/nd/search/VariablesP.html new file mode 100644 index 0000000..63d4304 --- /dev/null +++ b/docu/nd/search/VariablesP.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_Public_spcvariables><div class=IEntry><a href="../files/stupid_template_engine-php.html#STECore.Public_variables" target=_parent class=ISymbol>Public variables</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/search/VariablesV.html b/docu/nd/search/VariablesV.html new file mode 100644 index 0000000..5461292 --- /dev/null +++ b/docu/nd/search/VariablesV.html @@ -0,0 +1,20 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + +<html><head><link rel="stylesheet" type="text/css" href="../styles/main.css"><script language=JavaScript src="../javascript/main.js"></script></head><body class="PopupSearchResultsPage" onLoad="NDOnLoad()"><script language=JavaScript><!-- +if (browserType) {document.write("<div class=" + browserType + ">");if (browserVer) {document.write("<div class=" + browserVer + ">"); }}// --></script> + +<!-- Generated by Natural Docs, version 1.4 --> +<!-- http://www.naturaldocs.org --> + +<!-- saved from url=(0026)http://www.naturaldocs.org --> + + + + +<div id=Index><div class=SRStatus id=Loading>Loading...</div><table border=0 cellspacing=0 cellpadding=0><div class=SRResult id=SR_vars><div class=IEntry><span class=ISymbolPrefix>$</span><a href="../files/stupid_template_engine-php.html#STECore.$vars" target=_parent class=ISymbol>vars</a>, <span class=IParent>STECore</span></div></div></table><div class=SRStatus id=Searching>Searching...</div><div class=SRStatus id=NoMatches>No Matches</div><script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults", "HTML"); +searchResults.Search(); +--></script></div><script language=JavaScript><!-- +if (browserType) {if (browserVer) {document.write("</div>"); }document.write("</div>");}// --></script></body></html>
\ No newline at end of file diff --git a/docu/nd/styles/main.css b/docu/nd/styles/main.css new file mode 100644 index 0000000..134199a --- /dev/null +++ b/docu/nd/styles/main.css @@ -0,0 +1,767 @@ +/* + IMPORTANT: If you're editing this file in the output directory of one of + your projects, your changes will be overwritten the next time you run + Natural Docs. Instead, copy this file to your project directory, make your + changes, and you can use it with -s. Even better would be to make a CSS + file in your project directory with only your changes, which you can then + use with -s [original style] [your changes]. + + On the other hand, if you're editing this file in the Natural Docs styles + directory, the changes will automatically be applied to all your projects + that use this style the next time Natural Docs is run on them. + + This file is part of Natural Docs, which is Copyright (C) 2003-2008 Greg Valure + Natural Docs is licensed under the GPL +*/ + +body { + font: 10pt Verdana, Arial, sans-serif; + color: #000000; + margin: 0; padding: 0; + } + +.ContentPage, +.IndexPage, +.FramedMenuPage { + background-color: #E8E8E8; + } +.FramedContentPage, +.FramedIndexPage, +.FramedSearchResultsPage, +.PopupSearchResultsPage { + background-color: #FFFFFF; + } + + +a:link, +a:visited { color: #900000; text-decoration: none } +a:hover { color: #900000; text-decoration: underline } +a:active { color: #FF0000; text-decoration: underline } + +td { + vertical-align: top } + +img { border: 0; } + + +/* + Comment out this line to use web-style paragraphs (blank line between + paragraphs, no indent) instead of print-style paragraphs (no blank line, + indented.) +*/ +p { + text-indent: 5ex; margin: 0 } + + +/* Opera doesn't break with just wbr, but will if you add this. */ +.Opera wbr:after { + content: "\00200B"; + } + + +/* Blockquotes are used as containers for things that may need to scroll. */ +blockquote { + padding: 0; + margin: 0; + overflow: auto; + } + + +.Firefox1 blockquote { + padding-bottom: .5em; + } + +/* Turn off scrolling when printing. */ +@media print { + blockquote { + overflow: visible; + } + .IE blockquote { + width: auto; + } + } + + + +#Menu { + font-size: 9pt; + padding: 10px 0 0 0; + } +.ContentPage #Menu, +.IndexPage #Menu { + position: absolute; + top: 0; + left: 0; + width: 31ex; + overflow: hidden; + } +.ContentPage .Firefox #Menu, +.IndexPage .Firefox #Menu { + width: 27ex; + } + + + .MTitle { + font-size: 16pt; font-weight: bold; font-variant: small-caps; + text-align: center; + padding: 5px 10px 15px 10px; + border-bottom: 1px dotted #000000; + margin-bottom: 15px } + + .MSubTitle { + font-size: 9pt; font-weight: normal; font-variant: normal; + margin-top: 1ex; margin-bottom: 5px } + + + .MEntry a:link, + .MEntry a:hover, + .MEntry a:visited { color: #606060; margin-right: 0 } + .MEntry a:active { color: #A00000; margin-right: 0 } + + + .MGroup { + font-variant: small-caps; font-weight: bold; + margin: 1em 0 1em 10px; + } + + .MGroupContent { + font-variant: normal; font-weight: normal } + + .MGroup a:link, + .MGroup a:hover, + .MGroup a:visited { color: #545454; margin-right: 10px } + .MGroup a:active { color: #A00000; margin-right: 10px } + + + .MFile, + .MText, + .MLink, + .MIndex { + padding: 1px 17px 2px 10px; + margin: .25em 0 .25em 0; + } + + .MText { + font-size: 8pt; font-style: italic } + + .MLink { + font-style: italic } + + #MSelected { + color: #000000; background-color: #FFFFFF; + /* Replace padding with border. */ + padding: 0 10px 0 10px; + border-width: 1px 2px 2px 0; border-style: solid; border-color: #000000; + margin-right: 5px; + } + + /* Close off the left side when its in a group. */ + .MGroup #MSelected { + padding-left: 9px; border-left-width: 1px } + + /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ + .Firefox #MSelected { + -moz-border-radius-topright: 10px; + -moz-border-radius-bottomright: 10px } + .Firefox .MGroup #MSelected { + -moz-border-radius-topleft: 10px; + -moz-border-radius-bottomleft: 10px } + + + #MSearchPanel { + padding: 0px 6px; + margin: .25em 0; + } + + + #MSearchField { + font: italic 9pt Verdana, sans-serif; + color: #606060; + background-color: #E8E8E8; + border: none; + padding: 2px 4px; + width: 100%; + } + /* Only Opera gets it right. */ + .Firefox #MSearchField, + .IE #MSearchField, + .Safari #MSearchField { + width: 94%; + } + .Opera9 #MSearchField, + .Konqueror #MSearchField { + width: 97%; + } + .FramedMenuPage .Firefox #MSearchField, + .FramedMenuPage .Safari #MSearchField, + .FramedMenuPage .Konqueror #MSearchField { + width: 98%; + } + + /* Firefox doesn't do this right in frames without #MSearchPanel added on. + It's presence doesn't hurt anything other browsers. */ + #MSearchPanel.MSearchPanelInactive:hover #MSearchField { + background-color: #FFFFFF; + border: 1px solid #C0C0C0; + padding: 1px 3px; + } + .MSearchPanelActive #MSearchField { + background-color: #FFFFFF; + border: 1px solid #C0C0C0; + font-style: normal; + padding: 1px 3px; + } + + #MSearchType { + visibility: hidden; + font: 8pt Verdana, sans-serif; + width: 98%; + padding: 0; + border: 1px solid #C0C0C0; + } + .MSearchPanelActive #MSearchType, + /* As mentioned above, Firefox doesn't do this right in frames without #MSearchPanel added on. */ + #MSearchPanel.MSearchPanelInactive:hover #MSearchType, + #MSearchType:focus { + visibility: visible; + color: #606060; + } + #MSearchType option#MSearchEverything { + font-weight: bold; + } + + .Opera8 .MSearchPanelInactive:hover, + .Opera8 .MSearchPanelActive { + margin-left: -1px; + } + + + iframe#MSearchResults { + width: 60ex; + height: 15em; + } + #MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000000; + background-color: #E8E8E8; + } + #MSearchResultsWindowClose { + font-weight: bold; + font-size: 8pt; + display: block; + padding: 2px 5px; + } + #MSearchResultsWindowClose:link, + #MSearchResultsWindowClose:visited { + color: #000000; + text-decoration: none; + } + #MSearchResultsWindowClose:active, + #MSearchResultsWindowClose:hover { + color: #800000; + text-decoration: none; + background-color: #F4F4F4; + } + + + + +#Content { + padding-bottom: 15px; + } + +.ContentPage #Content { + border-width: 0 0 1px 1px; + border-style: solid; + border-color: #000000; + background-color: #FFFFFF; + font-size: 9pt; /* To make 31ex match the menu's 31ex. */ + margin-left: 31ex; + } +.ContentPage .Firefox #Content { + margin-left: 27ex; + } + + + + .CTopic { + font-size: 10pt; + margin-bottom: 3em; + } + + + .CTitle { + font-size: 12pt; font-weight: bold; + border-width: 0 0 1px 0; border-style: solid; border-color: #A0A0A0; + margin: 0 15px .5em 15px } + + .CGroup .CTitle { + font-size: 16pt; font-variant: small-caps; + padding-left: 15px; padding-right: 15px; + border-width: 0 0 2px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + .CClass .CTitle, + .CInterface .CTitle, + .CDatabase .CTitle, + .CDatabaseTable .CTitle, + .CSection .CTitle { + font-size: 18pt; + color: #FFFFFF; background-color: #A0A0A0; + padding: 10px 15px 10px 15px; + border-width: 2px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + #MainTopic .CTitle { + font-size: 20pt; + color: #FFFFFF; background-color: #7070C0; + padding: 10px 15px 10px 15px; + border-width: 0 0 3px 0; border-color: #000000; + margin-left: 0; margin-right: 0 } + + .CBody { + margin-left: 15px; margin-right: 15px } + + + .CToolTip { + position: absolute; visibility: hidden; + left: 0; top: 0; + background-color: #FFFFE0; + padding: 5px; + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #000000; + font-size: 8pt; + } + + .Opera .CToolTip { + max-width: 98%; + } + + /* Scrollbars would be useless. */ + .CToolTip blockquote { + overflow: hidden; + } + .IE6 .CToolTip blockquote { + overflow: visible; + } + + .CHeading { + font-weight: bold; font-size: 10pt; + margin: 1.5em 0 .5em 0; + } + + .CBody pre { + font: 10pt "Courier New", Courier, monospace; + margin: 1em 0; + } + + .CBody ul { + /* I don't know why CBody's margin doesn't apply, but it's consistent across browsers so whatever. + Reapply it here as padding. */ + padding-left: 15px; padding-right: 15px; + margin: .5em 5ex .5em 5ex; + } + + .CDescriptionList { + margin: .5em 5ex 0 5ex } + + .CDLEntry { + font: 10pt "Courier New", Courier, monospace; color: #808080; + padding-bottom: .25em; + white-space: nowrap } + + .CDLDescription { + font-size: 10pt; /* For browsers that don't inherit correctly, like Opera 5. */ + padding-bottom: .5em; padding-left: 5ex } + + + .CTopic img { + text-align: center; + display: block; + margin: 1em auto; + } + .CImageCaption { + font-variant: small-caps; + font-size: 8pt; + color: #808080; + text-align: center; + position: relative; + top: 1em; + } + + .CImageLink { + color: #808080; + font-style: italic; + } + a.CImageLink:link, + a.CImageLink:visited, + a.CImageLink:hover { color: #808080 } + + + + + +.Prototype { + font: 10pt "Courier New", Courier, monospace; + padding: 5px 3ex; + border-width: 1px; border-style: solid; + margin: 0 5ex 1.5em 5ex; + } + + .Prototype td { + font-size: 10pt; + } + + .PDefaultValue, + .PDefaultValuePrefix, + .PTypePrefix { + color: #8F8F8F; + } + .PTypePrefix { + text-align: right; + } + .PAfterParameters { + vertical-align: bottom; + } + + .IE .Prototype table { + padding: 0; + } + + .CFunction .Prototype { + background-color: #F4F4F4; border-color: #D0D0D0 } + .CProperty .Prototype { + background-color: #F4F4FF; border-color: #C0C0E8 } + .CVariable .Prototype { + background-color: #FFFFF0; border-color: #E0E0A0 } + + .CClass .Prototype { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; + background-color: #F4F4F4; + } + .CInterface .Prototype { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0D0; + background-color: #F4F4FF; + } + + .CDatabaseIndex .Prototype, + .CConstant .Prototype { + background-color: #D0D0D0; border-color: #000000 } + .CType .Prototype, + .CEnumeration .Prototype { + background-color: #FAF0F0; border-color: #E0B0B0; + } + .CDatabaseTrigger .Prototype, + .CEvent .Prototype, + .CDelegate .Prototype { + background-color: #F0FCF0; border-color: #B8E4B8 } + + .CToolTip .Prototype { + margin: 0 0 .5em 0; + white-space: nowrap; + } + + + + + +.Summary { + margin: 1.5em 5ex 0 5ex } + + .STitle { + font-size: 12pt; font-weight: bold; + margin-bottom: .5em } + + + .SBorder { + background-color: #FFFFF0; + padding: 15px; + border: 1px solid #C0C060 } + + /* In a frame IE 6 will make them too long unless you set the width to 100%. Without frames it will be correct without a width + or slightly too long (but not enough to scroll) with a width. This arbitrary weirdness simply astounds me. IE 7 has the same + problem with frames, haven't tested it without. */ + .FramedContentPage .IE .SBorder { + width: 100% } + + /* A treat for Mozilla users. Blatantly non-standard. Will be replaced with CSS 3 attributes when finalized/supported. */ + .Firefox .SBorder { + -moz-border-radius: 20px } + + + .STable { + font-size: 9pt; width: 100% } + + .SEntry { + width: 30% } + .SDescription { + width: 70% } + + + .SMarked { + background-color: #F8F8D8 } + + .SDescription { padding-left: 2ex } + .SIndent1 .SEntry { padding-left: 1.5ex } .SIndent1 .SDescription { padding-left: 3.5ex } + .SIndent2 .SEntry { padding-left: 3.0ex } .SIndent2 .SDescription { padding-left: 5.0ex } + .SIndent3 .SEntry { padding-left: 4.5ex } .SIndent3 .SDescription { padding-left: 6.5ex } + .SIndent4 .SEntry { padding-left: 6.0ex } .SIndent4 .SDescription { padding-left: 8.0ex } + .SIndent5 .SEntry { padding-left: 7.5ex } .SIndent5 .SDescription { padding-left: 9.5ex } + + .SDescription a { color: #800000} + .SDescription a:active { color: #A00000 } + + .SGroup td { + padding-top: .5em; padding-bottom: .25em } + + .SGroup .SEntry { + font-weight: bold; font-variant: small-caps } + + .SGroup .SEntry a { color: #800000 } + .SGroup .SEntry a:active { color: #F00000 } + + + .SMain td, + .SClass td, + .SDatabase td, + .SDatabaseTable td, + .SSection td { + font-size: 10pt; + padding-bottom: .25em } + + .SClass td, + .SDatabase td, + .SDatabaseTable td, + .SSection td { + padding-top: 1em } + + .SMain .SEntry, + .SClass .SEntry, + .SDatabase .SEntry, + .SDatabaseTable .SEntry, + .SSection .SEntry { + font-weight: bold; + } + + .SMain .SEntry a, + .SClass .SEntry a, + .SDatabase .SEntry a, + .SDatabaseTable .SEntry a, + .SSection .SEntry a { color: #000000 } + + .SMain .SEntry a:active, + .SClass .SEntry a:active, + .SDatabase .SEntry a:active, + .SDatabaseTable .SEntry a:active, + .SSection .SEntry a:active { color: #A00000 } + + + + + +.ClassHierarchy { + margin: 0 15px 1em 15px } + + .CHEntry { + border-width: 1px 2px 2px 1px; border-style: solid; border-color: #A0A0A0; + margin-bottom: 3px; + padding: 2px 2ex; + font-size: 10pt; + background-color: #F4F4F4; color: #606060; + } + + .Firefox .CHEntry { + -moz-border-radius: 4px; + } + + .CHCurrent .CHEntry { + font-weight: bold; + border-color: #000000; + color: #000000; + } + + .CHChildNote .CHEntry { + font-style: italic; + font-size: 8pt; + } + + .CHIndent { + margin-left: 3ex; + } + + .CHEntry a:link, + .CHEntry a:visited, + .CHEntry a:hover { + color: #606060; + } + .CHEntry a:active { + color: #800000; + } + + + + + +#Index { + background-color: #FFFFFF; + } + +/* As opposed to .PopupSearchResultsPage #Index */ +.IndexPage #Index, +.FramedIndexPage #Index, +.FramedSearchResultsPage #Index { + padding: 15px; + } + +.IndexPage #Index { + border-width: 0 0 1px 1px; + border-style: solid; + border-color: #000000; + font-size: 9pt; /* To make 27ex match the menu's 27ex. */ + margin-left: 27ex; + } + + + .IPageTitle { + font-size: 20pt; font-weight: bold; + color: #FFFFFF; background-color: #7070C0; + padding: 10px 15px 10px 15px; + border-width: 0 0 3px 0; border-color: #000000; border-style: solid; + margin: -15px -15px 0 -15px } + + .FramedSearchResultsPage .IPageTitle { + margin-bottom: 15px; + } + + .INavigationBar { + font-size: 10pt; + text-align: center; + background-color: #FFFFF0; + padding: 5px; + border-bottom: solid 1px black; + margin: 0 -15px 15px -15px; + } + + .INavigationBar a { + font-weight: bold } + + .IHeading { + font-size: 16pt; font-weight: bold; + padding: 2.5em 0 .5em 0; + text-align: center; + width: 3.5ex; + } + #IFirstHeading { + padding-top: 0; + } + + .IEntry { + font-size: 10pt; + padding-left: 1ex; + } + .PopupSearchResultsPage .IEntry { + font-size: 8pt; + padding: 1px 5px; + } + .PopupSearchResultsPage .Opera9 .IEntry, + .FramedSearchResultsPage .Opera9 .IEntry { + text-align: left; + } + .FramedSearchResultsPage .IEntry { + padding: 0; + } + + .ISubIndex { + padding-left: 3ex; padding-bottom: .5em } + .PopupSearchResultsPage .ISubIndex { + display: none; + } + + /* While it may cause some entries to look like links when they aren't, I found it's much easier to read the + index if everything's the same color. */ + .ISymbol { + font-weight: bold; color: #900000 } + + .IndexPage .ISymbolPrefix, + .FramedIndexPage .ISymbolPrefix { + font-size: 10pt; + text-align: right; + color: #C47C7C; + background-color: #F8F8F8; + border-right: 3px solid #E0E0E0; + border-left: 1px solid #E0E0E0; + padding: 0 1px 0 2px; + } + .PopupSearchResultsPage .ISymbolPrefix, + .FramedSearchResultsPage .ISymbolPrefix { + color: #900000; + } + .PopupSearchResultsPage .ISymbolPrefix { + font-size: 8pt; + } + + .IndexPage #IFirstSymbolPrefix, + .FramedIndexPage #IFirstSymbolPrefix { + border-top: 1px solid #E0E0E0; + } + .IndexPage #ILastSymbolPrefix, + .FramedIndexPage #ILastSymbolPrefix { + border-bottom: 1px solid #E0E0E0; + } + .IndexPage #IOnlySymbolPrefix, + .FramedIndexPage #IOnlySymbolPrefix { + border-top: 1px solid #E0E0E0; + border-bottom: 1px solid #E0E0E0; + } + + a.IParent, + a.IFile { + display: block; + } + + .PopupSearchResultsPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + } + .FramedSearchResultsPage .SRStatus { + font-size: 10pt; + font-style: italic; + } + + .SRResult { + display: none; + } + + + +#Footer { + font-size: 8pt; + color: #989898; + text-align: right; + } + +#Footer p { + text-indent: 0; + margin-bottom: .5em; + } + +.ContentPage #Footer, +.IndexPage #Footer { + text-align: right; + margin: 2px; + } + +.FramedMenuPage #Footer { + text-align: center; + margin: 5em 10px 10px 10px; + padding-top: 1em; + border-top: 1px solid #C8C8C8; + } + + #Footer a:link, + #Footer a:hover, + #Footer a:visited { color: #989898 } + #Footer a:active { color: #A00000 } + diff --git a/example/index.php b/example/index.php new file mode 100644 index 0000000..3d2b1ca --- /dev/null +++ b/example/index.php @@ -0,0 +1,58 @@ +<?php + +# Example program to demonstrate the STE... + +require_once(dirname(__FILE__) . "/../stupid_template_engine.php"); + +# Initialize an STECore instance +$ste = new \ste\STECore( + new \ste\FilesystemStorageAccess( # The STECore needs a StorageAccess implementation, we are using the FilesystemStorageAccess, which comes with STE. + dirname(__FILE__) . "/templates/src", # FilesystemStorageAccess needs a directory, where the Templates are... + dirname(__FILE__) . "/templates/transc" # ...and a directory for the transcompiled templates (write permissions needed). + ) +); + +# First, lets define some custom tags. + +# <ste:uppercase> will exchange all letters with their uppercase complement +$ste->register_tag("uppercase", + function($ste, $params, $sub) + { + $text = $sub($ste); # Get the tags content + return strtoupper($text); # Return the new text. + } +); + +# <ste:repeat> will repeat its content n times (<ste:for> could be used too, but i needed more examples :-P ) +$ste->register_tag("repeat", + function($ste, $params, $sub) + { + $output = ""; + if(!is_numeric($params["n"])) + throw new Exception("Sorry, but parameter n must be a number..."); + + for($i = 0; $i < $params["n"]; ++$i) + $output .= $sub($ste); + + return $output; + } +); + +# assign some data +$ste->vars["users"] = array( + array("name" => "Foo", "username" => "foo", "online" => true), + array("name" => "Bar", "username" => "bar", "online" => false), + array("name" => "Baz", "username" => "baz", "online" => true) +); +$ste->vars["title"] = "cool"; +$ste->vars["articles"] = array( + array("author" => "foo", "title" => "cool article", "timestamp" => 1316553353, "excerpt" => "bla", "full" => "blablabla"), + array("author" => "bar", "title" => "awesome", "timestamp" => 1316552000, "excerpt" => "...", "full" => ".........."), + array("author" => "baz", "title" => "<ingenious", "timestamp" => 1316551000, "excerpt" => "...", "full" => ".........."), + array("author" => "baz", "title" => "whatever...", "timestamp" => 1316550000, "excerpt" => "...", "full" => "..........") +); + +# Execute the template and output the result +echo $ste->exectemplate("articles.html"); + +?> diff --git a/example/templates/src/articles.html b/example/templates/src/articles.html new file mode 100644 index 0000000..e007f3e --- /dev/null +++ b/example/templates/src/articles.html @@ -0,0 +1,49 @@ +<ste:load name="custom_tags.tpl" /> +<ste:load name="master.html" /> +<ste:comment>Lets overwrite the content section</ste:comment> +<ste:block name="content"> + <h2>Some Articles</h2> + <ste:foreach_limit array="articles" value="article" max="3" counter="i"> + <h3><ste:uppercase><ste:escape>$article[title]</ste:escape></ste:uppercase></h3> + <div class="author">Author: <ste:escape>$article[author]</ste:escape></div> + <div class="date"><ste:date timestamp="$article[timestamp]">d. M. Y, H:i:s</ste:date></div> + <div class="article_content"> + <ste:if> + <ste:cmp var_a="i" op="eq" text_b="0" /> + <ste:then> + <ste:comment>First entry, lets show the whole text</ste:comment> + $article[full] + </ste:then> + <ste:else> + $article[excerpt] + </ste:else> + </ste:if> + </div> + <hr /> + </ste:foreach_limit> + <ste:comment>There are more than 3 articles?</ste:comment> + <ste:set var="articles_n"><ste:arraylen array="articles" /></ste:set> + <ste:if> + <ste:cmp var_a="articles_n" op="gt" text_b="3" /> + <ste:then> + <p>There are <a href="#">more articles</a>.</p> + </ste:then> + </ste:if> + + <h2>Some more useless demo stuff...</h2> + <h3>Counting from 10 to 0...</h3> + <p>but take only the even ones and multiply by 5...</p> + <ste:for start="10" stop="0" step="-1" counter="i"> + <ste:if> + <ste:even>$i</ste:even> + <ste:then> + <ste:calc>$i * 5</ste:calc><br /> + </ste:then> + </ste:if> + </ste:for> + + <h3>Repeat some text...</h3> + <ste:repeat n="10"> + <p>Bla</p> + </ste:repeat> +</ste:block> diff --git a/example/templates/src/custom_tags.tpl b/example/templates/src/custom_tags.tpl new file mode 100644 index 0000000..7e821c5 --- /dev/null +++ b/example/templates/src/custom_tags.tpl @@ -0,0 +1,19 @@ +<ste:comment>A foreach that will break after 'max' iterations</ste:comment> +<ste:mktag name="foreach_limit" mandatory="array|value|max"> + <ste:foreach array="$_tag_parameters[array]" value="$_tag_parameters[value]" counter="i"> + <ste:if> + <ste:cmp var_a="i" op="gte" var_b="_tag_parameters[max]" /> + <ste:then> + <ste:break /> + </ste:then> + </ste:if> + + <ste:if> + $_tag_parameters[counter] + <ste:then> + <ste:set var="$_tag_parameters[counter]">$i</ste:set> + </ste:then> + </ste:if> + <ste:tagcontent /> + </ste:foreach> +</ste:mktag> diff --git a/example/templates/src/master.html b/example/templates/src/master.html new file mode 100644 index 0000000..fe6b1e6 --- /dev/null +++ b/example/templates/src/master.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us" lang="en"> +<head> + <title>?{$title|$title - example|example}</title><ste:comment>If $title given, set title to "$title - example", else "example"</ste:comment> + <style type="text/css"> + * { + font-family: sans-serif; + } + .online { + color: #0a0; + } + .offline { + color: #555; + font-style: italic; + + } + </style> + +</head> +<body> + <h1>example</h1> + + <div id="content"> + <ste:block name="content"> + Default content. + </ste:block> + </div> + <div id="otherstuff"> + <ste:block name="otherstuff"> + <h2>List of users</h2> + <ste:comment>Lets loop through the users...</ste:comment> + <ul> + <ste:foreach array="users" value="user"> + <li class="?{$user[online]|online|offline}">$user[name] ($user[username])</li> + </ste:foreach> + </ul> + </ste:block> + </div> +</body> +</html> diff --git a/mkdocu.sh b/mkdocu.sh new file mode 100755 index 0000000..36d0c7c --- /dev/null +++ b/mkdocu.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +if [ ! -d docu/nd ]; then mkdir docu/nd; fi +NaturalDocs -i . -o html docu/nd -p docu/nd diff --git a/stupid_template_engine.php b/stupid_template_engine.php index bd6efea..2e9162f 100644 --- a/stupid_template_engine.php +++ b/stupid_template_engine.php @@ -1,5 +1,14 @@ <?php +/* + * File: stupid_template_engine.php + * The implementation of the Stupid Template Engine. + */ + +/* + * Namespace: ste + * Everything in this file is in this namespace. + */ namespace ste; class TextNode @@ -205,6 +214,17 @@ function mk_ast($code) return array_merge($ast, strlen($code) > 0 ? mk_ast($code) : array()); } +/* + * Function: parse + * Parsing a STE T/PL template. + * You only need this function, if you want to manually transcompile a template. + * + * Parameters: + * $code - The STE T/PL code. + * + * Returns: + * An abstract syntax tree, whic can be used with <transcompile>. + */ function parse($code) { /* Precompiling... */ @@ -224,78 +244,6 @@ function parse($code) return mk_ast($code); } -define("MODE_SOURCE", 0); -define("MODE_TRANSCOMPILED", 1); - -interface StorageAccess -{ - public function load($tpl, &$mode); - public function save($tpl, $data, $mode); -} - -class FilesystemStorageAccess implements StorageAccess -{ - protected $sourcedir; - protected $transcompileddir; - - public function __construct($src, $transc) - { - $this->sourcedir = $src; - $this->transcompileddir = $transc; - } - - public function load($tpl, &$mode) - { - $src_fn = $this->sourcedir . "/" . $tpl; - $transc_fn = $this->transcompileddir . "/" . $tpl . ".php"; - - if($mode == MODE_SOURCE) - { - $content = @file_get_contents($src_fn); - if($content === False) - throw new \Exception("Template not found."); - return $content; - } - - $src_stat = @stat($src_fn); - $transc_stat = @stat($transc_fn); - - if(($src_stat === False) and ($transc_stat === False)) - throw new \Exception("Template not found."); - else if($transc_stat === False) - { - $mode = MODE_SOURCE; - return file_get_contents($src_fn); - } - else if($src_stat === False) - { - include($transc_fn); - return $transcompile_fx; - } - else - { - if($src_stat["mtime"] > $transc_stat["mtime"]) - { - $mode = MODE_SOURCE; - return file_get_contents($src_fn); - } - else - { - include($transc_fn); - return $transcompile_fx; - } - } - } - - public function save($tpl, $data, $mode) - { - $fn = (($mode == MODE_SOURCE) ? $this->sourcedir : $this->transcompileddir) . "/" . $tpl . (($mode == MODE_TRANSCOMPILED) ? ".php" : ""); - @mkdir(dirname($fn), 0777, True); - file_put_contents($fn, "<?php \$transcompile_fx = $data; ?>"); - chmod($fn, 0777); /* FIXME: Remove this line after debugging... */ - } -} - function indent_code($code) { return implode( @@ -630,7 +578,7 @@ $ste_builtins = array( $code .= "\$${loopname}_array = \$ste->get_var_by_name(\$${loopname}_arrayvar);\n"; $code .= "if(!is_array(\$${loopname}_array))\n\t\$${loopname}_array = array();\n"; - $code .= "\$${loopname}_counter = 0;\n"; + $code .= "\$${loopname}_counter = -1;\n"; $loopbody = "\$${loopname}_counter++;\n\$ste->set_var_by_name(\$${loopname}_valuevar, \$${loopname}_value);\n"; if(!empty($ast->params["key"])) @@ -651,11 +599,11 @@ $ste_builtins = array( }, "break" => function($ast) { - return "\$ste->break_loop();\n"; + return "throw new \\ste\\BreakException();\n"; }, "continue" => function($ast) { - return "\$ste->continue_loop();\n"; + return "throw new \\ste\\ContinueException();\n"; }, "block" => function($ast) { @@ -749,7 +697,7 @@ $ste_builtins = array( function escape_text($text) { - return addcslashes($text, "\r\n\t\$\0..\x1f\\'\x7f..\xff"); + return addcslashes($text, "\r\n\t\$\0..\x1f\\'\"\x7f..\xff"); } function _transcompile($ast) /* The real transcompile function, does not add boilerplate code. */ @@ -789,24 +737,169 @@ function _transcompile($ast) /* The real transcompile function, does not add boi $ste_transc_boilerplate = "\$outputstack = array('');\n\$outputstack_i = 0;\n"; +/* + * Function: transcompile + * Transcompiles an abstract syntax tree to PHP. + * + * Parameters: + * $ast - The abstract syntax tree to transcompile. + * + * Returns: + * PHP code. The PHP code is an anonymous function expecting a <STECore> instance as its parameter and returns a string (everything that was not pached into a section). + */ function transcompile($ast) /* Transcompile and add some boilerplate code. */ { global $ste_transc_boilerplate; return "function(\$ste)\n{\n" . indent_code($ste_transc_boilerplate . _transcompile($ast) . "return array_pop(\$outputstack);") . "\n}"; } +/* + * Constants: Template modes + * + * MODE_SOURCE - The Templates source + * MODE_TRANSCOMPILED - The transcompiled template + */ +const MODE_SOURCE = 0; +const MODE_TRANSCOMPILED = 1; + +/* + * Class: StorageAccess + * An interface. + * A StorageAccess implementation is used to access the templates from any storage. + * This means, that you are not limited to store the Templates inside directories, you can also use a database or something else. + */ +interface StorageAccess +{ + /* + * Function: load + * Loading a template. + * + * Parameters: + * $tpl - The name of the template. + * &$mode - Which mode is preferred? One of the <Template modes>. + * If <MODE_SOURCE>, the raw sourcecode is expected, if <MODE_TRANSCOMPILED> the transcompiled template *as a callable function* (expecting an <STECore> instance as first parameter) is expected. + * If the transcompiled version is not available or older than the source, you can set this parameter to <MODE_SOURCE> and return the source. + * + * Returns: + * Either the sourcecode or a callable function (first, and only parameter: an <STECore> instance). + */ + public function load($tpl, &$mode); + + /* + * Function: save + * Saves a template. + * + * Parameters: + * $tpl -The name of the template. + * $data - The data to be saved. + * $mode - A <Template mode> constant. + */ + public function save($tpl, $data, $mode); +} + +/* + * Class: FilesystemStorageAccess + * The default <StorageAccess> implementation for loading / saving templates into a directory structure. + */ +class FilesystemStorageAccess implements StorageAccess +{ + protected $sourcedir; + protected $transcompileddir; + + /* + * Constructor: __construct + * + * Parameters: + * $src - The directory with the sources (Writing permissions are not mandatory, because STE does not save template sources). + * $transc - The directory with the transcompiled templates (the PHP instance / the HTTP Server needs writing permissions to this directory). + */ + public function __construct($src, $transc) + { + $this->sourcedir = $src; + $this->transcompileddir = $transc; + } + + public function load($tpl, &$mode) + { + $src_fn = $this->sourcedir . "/" . $tpl; + $transc_fn = $this->transcompileddir . "/" . $tpl . ".php"; + + if($mode == MODE_SOURCE) + { + $content = @file_get_contents($src_fn); + if($content === False) + throw new \Exception("Template not found."); + return $content; + } + + $src_stat = @stat($src_fn); + $transc_stat = @stat($transc_fn); + + if(($src_stat === False) and ($transc_stat === False)) + throw new \Exception("Template not found."); + else if($transc_stat === False) + { + $mode = MODE_SOURCE; + return file_get_contents($src_fn); + } + else if($src_stat === False) + { + include($transc_fn); + return $transcompile_fx; + } + else + { + if($src_stat["mtime"] > $transc_stat["mtime"]) + { + $mode = MODE_SOURCE; + return file_get_contents($src_fn); + } + else + { + include($transc_fn); + return $transcompile_fx; + } + } + } + + public function save($tpl, $data, $mode) + { + $fn = (($mode == MODE_SOURCE) ? $this->sourcedir : $this->transcompileddir) . "/" . $tpl . (($mode == MODE_TRANSCOMPILED) ? ".php" : ""); + @mkdir(dirname($fn), 0777, True); + file_put_contents($fn, "<?php \$transcompile_fx = $data; ?>"); + } +} + class BreakException extends \Exception { } class ContinueException extends \Exception { } +/* + * Class: STECore + * The Core of STE + */ class STECore { private $tags; private $storage_access; private $cur_tpl_dir; + + /* + * Variables: Public variables + * + * $blocks - Associative array of blocks (see the language definition). + * $blockorder - The order of the blocks (an array) + * $vars - Associative array of all template variables. Use this to pass data to your templates. + */ public $blocks; public $blockorder; public $vars; + /* + * Constructor: __construct + * + * Parameters: + * $storage_access - An Instance of a <StorageAccess> implementation. + */ public function __construct($storage_access) { $this->storage_access = $storage_access; @@ -817,6 +910,14 @@ class STECore $this->blocks = array(); } + /* + * Function: register_tag + * Register a custom tag. + * + * Parameters: + * $name - The name of the tag. + * $callback - A callable function (This must tage three parameters: The <STECore> instance, an associative array of parameters, and a function representing the tags content(This expects the <STECore> instance as its only parameter and returns its text result, i.e to get the text, you neeed to call this function with the <STECore> instance as a parameter)). + */ public function register_tag($name, $callback) { if(!is_callable($callback)) @@ -826,6 +927,18 @@ class STECore $this->tags[$name] = $callback; } + /* + * Function: call_tag + * Calling a custom tag (builtin ones can not be called) + * + * Parameters: + * $name - The Tag's name + * $params - Associative array of parameters + * $sub - A callable function (expecting an <STECore> instance as it's parameter) that represents the tag's content. + * + * Returns: + * The output of the tag. + */ public function call_tag($name, $params, $sub) { if(!isset($this->tags[$name])) @@ -833,21 +946,21 @@ class STECore return call_user_func($this->tags[$name], $this, $params, $sub); } - public function break_loop() - { - throw new BreakException(); - } - - public function continue_loop() - { - throw new ContinueException(); - } - public function calc($expression) { return calc_rpn(shunting_yard($expression)); } + /* + * Function: exectemplate + * Executes a template and returns the result. The huge difference to <load> is that this function will also output all blocks. + * + * Parameters: + * $tpl - The name of the template to execute. + * + * Returns: + * The output of the template. + */ public function exectemplate($tpl) { $output = ""; @@ -859,7 +972,26 @@ class STECore return $output . $lastblock; } - private function &get_var_reference(&$from, $name, $create_if_not_exist) + /* + * Function: get_var_reference + * Get a reference to a template variable using a variable name. + * This can be used,if your custom tag takes a variable name as a parameter. + * + * Parameters: + * $name - The variables name. + * $create_if_not_exist - Should the variable be created, if it does not exist? Otherwise NULL will be returned, if the variable does not exist. + * + * Returns: + * A Reference to the variable. + */ + + public function &get_var_reference($name, $create_if_not_exist) + { + $ref = $this->_get_var_reference($this->vars, $name, $create_if_not_exist); + return $ref; + } + + private function &_get_var_reference(&$from, $name, $create_if_not_exist) { $bracket_open = strpos($name, "["); if($bracket_open === False) @@ -889,7 +1021,7 @@ class STECore } try { - $ref = &$self->get_var_reference($from[$varname], $name, $create_if_not_exist); + $ref = &$this->_get_var_reference($from[$varname], $name, $create_if_not_exist); return $ref; } catch(Exception $e) @@ -899,18 +1031,49 @@ class STECore } } + /* + * Function set_var_by_name + * Set a template variable by its name. + * This can be used,if your custom tag takes a variable name as a parameter. + * + * Parameters: + * $name - The variables name. + * $val - The new value. + */ public function set_var_by_name($name, $val) { - $ref = &$this->get_var_reference($this->vars, $name, True); + $ref = &$this->_get_var_reference($this->vars, $name, True); $ref = $val; } + /* + * Function: get_var_by_name + * Get a template variable by its name. + * This can be used,if your custom tag takes a variable name as a parameter. + * + * Parameters: + * $name - The variables name. + * + * Returns: + * The variables value. + */ public function get_var_by_name($name) { - $ref = $this->get_var_reference($this->vars, $name, False); + $ref = $this->_get_var_reference($this->vars, $name, False); return $ref === NULL ? "" : $ref; } + /* + * Function: load + * Load a template and return its result (blocks not included, use <exectemplate> for this). + * + * Parameters: + * $tpl - The name of the template to be loaded. + * $quiet - If true, do not output anything and do notmodify the blocks. This can be useful to load custom tags that are programmed in STE T/PL. Default: false. + * + * Returns: + * The result of the template (if $quiet == false). + */ public function load($tpl, $quiet=False) { $tpldir_b4 = $this->cur_tpl_dir; @@ -959,6 +1122,16 @@ class STECore return $output; } + /* + * Function: evalbool + * Test, if a text represents false (an empty / only whitespace text) or true (everything else). + * + * Parameters: + * $txt - The text to test. + * + * Returns: + * true/false. + */ public function evalbool($txt) { return trim($txt) != ""; @@ -984,13 +1157,34 @@ class STEStandardLibrary return strlen($sub($ste)); } - static public function array_len($ste, $params, $sub) + static public function arraylen($ste, $params, $sub) { - if(empty($params["var"])) - throw new \Exception("Runtime Error: missing var parameter in <ste:array_len>."); - $a = $ste->get_var_by_name($params["var"]); + if(empty($params["array"])) + throw new \Exception("Runtime Error: missing array parameter in <ste:arraylen>."); + $a = $ste->get_var_by_name($params["array"]); return (is_array($a)) ? count($a) : ""; } + + static public function inc($ste, $params, $sub) + { + if(empty($params["var"])) + throw new \Exception("Runtime Error: missing var parameter in <ste:inc>."); + $ref = $ste->_get_var_reference($ste->vars, $params["var"]); + $ref++; + } + + static public function dec($ste, $params, $sub) + { + if(empty($params["var"])) + throw new \Exception("Runtime Error: missing var parameter in <ste:dec>."); + $ref = $ste->_get_var_reference($ste->vars, $params["var"]); + $ref--; + } + + static public function date($ste, $params, $sub) + { + return @date($sub($ste), empty($params["timestamp"]) ? @time() : (int) $params["timestamp"]); + } } ?> |