<!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" lang="pl"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="robots" content="all" /> <title>Values - Open Power Template</title> <link rel="stylesheet" type="text/css" href="design/generic.css" media="all" /> <link rel="stylesheet" type="text/css" href="design/print.css" media="print" /> <!--[if lte IE 6]><link rel="stylesheet" href="design/ie.css" type="text/css" /><![endif]--> <!--[if IE 7]><link rel="stylesheet" href="design/ie7.css" type="text/css" /><![endif]--> </head> <body> <div id="wrap"> <div id="header"> <h1>Open Power Template 2.0</h1> <h2>Values</h2> <p class="generated">@ 02.09.2010</p> <p class="location"><a href="index.html"><strong>User manual</strong></a> » <a href="syntax.html">Template syntax</a> » <a href="syntax.expressions.html">Expressions</a> » <a href="syntax.expressions.values.html">Values</a></p> </div> <div id="content"><dl class="location"><dt><a href="syntax.expressions.html">3.5. Expressions</a><br/>3.5.2. Values</dt><dd class="prev">3.5.1. Variables<br/><a href="syntax.expressions.variables.html">« Previous</a></dd><dd class="next">3.5.3. Operators<br/><a href="syntax.expressions.operators.html">Next »</a></dd></dl> <h1>3.5.2. Values</h1><p>In the expressions we are allowed to use constant values, too. Open Power Template supports the following types:</p> <ul> <li>Decimal numbers, for example <code>15</code>, <code>-3</code>.</li> <li>Hexadecimal numbers: <code>0x3abc5</code>, <code>-0x3ABC5</code>. Digits from A to F may be both lower and upper case.</li> <li>Floating point numbers: <code>3.141</code></li> <li>Strings: <code>'this is a text'</code>, <code>word</code></li> </ul> <p>Let's take a deeper look at the strings. They are enclosed in single quotes only, because double quotes are a part of XML syntax. In order to put a quote into a string, we follow it with a backslash: <code>\</code>. To display a backslash, we put two backslashes into the string.</p> <pre><code>'this is a text' 'this is a text: \' - with a quote' 'this is a text: \\ - with a backslash' </code></pre> <p>In some cases, it is allowed to write a string without quotes. However, it must fulfill two conditions. Firstly, it has to be a single word, and more precisely - an identifier. It must begin with an underscore or a letter, later we can also use numbers. Secondly, it must appear at the position, where strings are allowed in the expression:</p> <pre><code>word word1 neq word2 eq eq eq </code></pre> <p>In all of these examples the condition 1 is fulfilled. Let's check the second one. In the first example, we have a single word at the beginning of the expression. No string operators are allowed here, and moreover, there is no operator called <code>word</code>, so it must be a string. In the second case, <code>word1</code> and <code>word2</code> are also treated as strings, because they are connected with the operator <code>neq</code>, and it must not have another operator as a neighbor. The most interesting is the last example. <code>eq</code> is an operator, but at the position 1 and 3, operators are not allowed. Here, this word will be a string. The second position is different. The two values must be connected with an operator, so the second <code>eq</code> will be processed in this way. If we replaced it with <code>word</code>, the template would not compile, because there would be no such operator.</p> <blockquote class="warning"> <p>The only keyword that breaks the rule described above is <code>is</code>. Currently, it cannot be used in the string context due to the parsing issues.</p> </blockquote> <p>In OPT, you must not put the data directly in the strings, like in PHP: <code>"foo $variable bar"</code>. Instead, you have to use the string concatenation operator <code>~</code></p> <pre><code>'foo '~$variable~' bar' </code></pre> <p>OPT supports also three special values (written in lower case):</p> <ul> <li><strong>true</strong> - logical true</li> <li><strong>false</strong> - logical false</li> <li><strong>null</strong> - no value</li> </ul> <p>It should be noted that they are treated as numbers by the parser.</p> <dl class="location location-bottom"><dt>3.5.2. Values<br/><a href="syntax.expressions.html">3.5. Expressions</a></dt><dd class="prev"><a href="syntax.expressions.variables.html">« Previous</a><br/>3.5.1. Variables</dd><dd class="next"><a href="syntax.expressions.operators.html">Next »</a><br/>3.5.3. Operators</dd></dl> </div> <div id="footer"> <p>Copyright © <a href="http://www.invenzzia.org/">Invenzzia Group 2008-2009</a></p> <p>Available under the terms of license: <a href="http://www.gnu.org/licenses/fdl.html">GNU Free Documentation License 1.2</a></p> <p>Generated by <strong>TypeFriendly 0.1.4</strong> by <a href="http://www.invenzzia.org/">Invenzzia</a></p> </div> </div> </body> </html>