Roxen.git / server / modules / tags / rxmltags.pike

version» Context lines:

Roxen.git/server/modules/tags/rxmltags.pike:1:   // This is a roxen module. Copyright © 1996 - 2001, Roxen IS.   //      #define _stat RXML_CONTEXT->misc[" _stat"]   #define _error RXML_CONTEXT->misc[" _error"]   #define _extra_heads RXML_CONTEXT->misc[" _extra_heads"]   #define _rettext RXML_CONTEXT->misc[" _rettext"]   #define _ok RXML_CONTEXT->misc[" _ok"]    - constant cvs_version = "$Id: rxmltags.pike,v 1.288 2001/08/29 23:08:34 nilsson Exp $"; + constant cvs_version = "$Id: rxmltags.pike,v 1.289 2001/08/30 12:03:21 jhs Exp $";   constant thread_safe = 1;   constant language = roxen->language;      #include <module.h>   #include <config.h>   #include <request_trace.h>   inherit "module";         // ---------------- Module registration stuff ----------------
Roxen.git/server/modules/tags/rxmltags.pike:4695: Inside #if defined(manual)
  //----------------------------------------------------------------------      "roxen_automatic_charset_variable":#"<desc tag='tag'><p>    If put inside a form, the right character encoding of the submitted    form can be guessed by Roxen WebServer. The tag will insert another    tag that forces the client to submit the string \"åäö\". Since the    WebServer knows the name and the content of the form variable it can    select the proper character decoder for the requests variables.   </p>    - <ex type='box'> - <form> + <ex-box><form>    <roxen_automatic_charset_variable/>    Name: <input name='name'/><br />    Mail: <input name='mail'/><br />    <input type='submit'/> - </form> - </ex> + </form></ex-box>   </desc>",      //----------------------------------------------------------------------      "colorscope":#"<desc cont='cont'><p><short>    Makes it possible to change the autodetected colors within the tag.</short>    Useful when out-of-order parsing occurs, e.g.</p>    - <ex type=box> - <define tag=\"hello\"> + <ex-box><define tag=\"hello\">    <colorscope bgcolor=\"red\">    <gtext>Hello</gtext>    </colorscope>   </define>      <table><tr>    <td bgcolor=\"red\">    <hello/>    </td> - </tr></table> - </ex> + </tr></table></ex-box>       <p>It can also successfully be used when the wiretap module is turned off    for e.g. performance reasons.</p>   </desc>      <attr name='text' value='color'><p>    Set the text color to this value within the scope.</p>   </attr>      <attr name='bgcolor' value='color'<p>
Roxen.git/server/modules/tags/rxmltags.pike:4803: Inside #if defined(manual)
  <attr name=variable value=string required='required'>    <p>The name of the variable.</p>   </attr>      <attr name=value value=string>    <p>The value the variable should have appended.</p>       <ex>    <set variable='var.ris' value='Roxen'/>    <append variable='var.ris' value=' Internet Software'/> -  <ent>var.ris</ent> +  &var.ris;    </ex>   </attr>      <attr name=from value=string>    <p>The name of another variable that the value should be copied    from.</p>   </attr>",      //----------------------------------------------------------------------   
Roxen.git/server/modules/tags/rxmltags.pike:5177: Inside #if defined(manual)
   Inserts the time and date.</short> Does not require attributes.   </p></desc>      <attr name=unix-time value=number of seconds>    <p>Display this time instead of the current. This attribute uses the    specified Unix 'time_t' time as the starting time (which is    <i>01:00, January the 1st, 1970</i>), instead of the current time.    This is mostly useful when the <tag>date</tag> tag is used from a    Pike-script or Roxen module.</p>    - <ex ><date unix-time='120'/></ex> + <ex><date unix-time='120'/></ex>   </attr>      <attr name=timezone value=local|GMT default=local>    <p>Display the time from another timezone.</p>   </attr>      <attr name=years value=number>    <p>Add this number of years to the result.</p>    <ex ><date date='' years='2'/></ex>   </attr>
Roxen.git/server/modules/tags/rxmltags.pike:5374: Inside #if defined(manual)
  </attr>      <attr name=werror value=string>    <p>When you have access to the server debug log and want your RXML    page to write some kind of diagnostics message or similar, the    werror attribute is helpful.</p>       <p>This can be used on the error page, for instance, if you'd want    such errors to end up in the debug log:</p>    -  <ex type=box> - <debug werror='File &page.url; not found! - (linked from &client.referrer;)'/></ex> +  <ex-box><debug werror='File &page.url; not found! + (linked from &client.referrer;)'/></ex-box>   </attr>",      //----------------------------------------------------------------------      "dec":#"<desc tag='tag'><p><short>    Subtracts 1 from a variable.</short>   </p></desc>      <attr name=variable value=string required='required'>    <p>The variable to be decremented.</p>
Roxen.git/server/modules/tags/rxmltags.pike:5419: Inside #if defined(manual)
     <attr name=separator value=string default=','>    <p>If several values are to be selected, this is the string that    separates them.</p>   </attr>      <attr name=name value=string>    <p>If used, the default tag will only affect form element with this name.</p>   </attr>    - <ex type='box'> -  <default name='my-select' value='&form.preset;'> + <ex-box><default name='my-select' value='&form.preset;'>    <select name='my-select'>    <option value='1'>First</option>    <option value='2'>Second</option>    <option value='3'>Third</option>    </select> -  </default> - </ex> + </default></ex-box>    - <ex type='box'> - <form> + <ex-box><form>   <default value=\"&form.opt1;,&form.opt2;,&form.opt3;\">    <input name=\"opt1\" value=\"yes1\" type=\"checkbox\" /> Option #1    <input name=\"opt2\" value=\"yes2\" type=\"checkbox\" /> Option #2    <input name=\"opt3\" value=\"yes3\" type=\"checkbox\" /> Option #3    <input type=\"submit\" />   </default> - </form> - ", + </form></ex-box>",      "doc":#"<desc cont='cont'><p><short hide='hide'>    Eases code documentation by reformatting it.</short>Eases    documentation by replacing \"{\", \"}\" and \"&amp;\" with    \"&amp;lt;\", \"&amp;gt;\" and \"&amp;amp;\". No attributes required.   </p></desc>      <attr name='quote'>    <p>Instead of replacing with \"{\" and \"}\", \"&lt;\" and \"&gt;\"    is replaced with \"&amp;lt;\" and \"&amp;gt;\".</p>    - <ex type='vert'> - <doc quote=''> + <ex><doc quote=''>   <table>    <tr>    <td> First cell </td>    <td> Second cell </td>    </tr>   </table> - </doc> - </ex> + </doc></ex>   </attr>      <attr name='pre'><p>    The result is encapsulated within a <tag>pre</tag> container.</p>    - <ex type='vert'><doc pre=''> + <ex><doc pre=''>   {table}    {tr}    {td} First cell {/td}    {td} Second cell {/td}    {/tr}   {/table} - </doc> - </ex> + </doc></ex>   </attr>      <attr name='class' value='string'>    <p>This cascading style sheet (CSS) definition will be applied on the pre element.</p>   </attr>",      //----------------------------------------------------------------------      "expire-time":#"<desc tag='tag'><p><short hide='hide'>    Sets client cache expire time for the document.</short>Sets client cache expire time for the document by sending the HTTP header \"Expires\".
Roxen.git/server/modules/tags/rxmltags.pike:5686: Inside #if defined(manual)
   possible to create a scope with an infinite number of variables set.    In this case the programme of that scope decides which variables that    should be listable, i.e. this will not cause any problem except that    all variables will not be listed. It is also possible to hide    variables so that they are not listed with this tag.   </p></desc>      <attr name=variables value=full|plain>    <p>Sets how the output should be formatted.</p>    -  <ex type='vert'> - <pre> +  <ex><pre>   <insert variables='full' scope='roxen'/> - </pre> -  </ex> + </pre></ex>   </attr>      <attr name=scope>    <p>The name of the scope that should be listed, if not the present scope.</p>   </attr>",      //----------------------------------------------------------------------      "insert#scopes":#"<desc plugin='plugin'><p><short>    Inserts a listing of all present variable scopes.</short>   </p></desc>      <attr name=scopes value=full|plain>    <p>Sets how the output should be formatted.</p>    -  <ex type='vert'> -  <insert scopes='plain'/> -  </ex> +  <ex><insert scopes='plain'/></ex>   </attr>",      //----------------------------------------------------------------------      "insert#file":#"<desc plugin='plugin'><p><short>    Inserts the contents of a file.</short> It reads files in a way    similar to if you fetched the file with a browser, so the file may be    parsed before it is inserted, depending on settings in the RXML    parser. Most notably which kinds of files (extensions) that should be    parsed. Since it reads files like a normal request, e.g. generated
Roxen.git/server/modules/tags/rxmltags.pike:5731: Inside #if defined(manual)
   parsed after it is inserted in the page. This enables RXML defines    and scope variables to be set in the including file (as opposed to    the included file). You can also configure the file system module so    that files with a certain extension can not be downloaded, but still    inserted into other documents.   </p></desc>      <attr name=file value=string>    <p>The virtual path to the file to be inserted.</p>    -  <ex type='box'> -  <eval><insert file=''/></eval> -  </ex> +  <ex-box><eval><insert file=''/></eval></ex-box>   </attr>",      //----------------------------------------------------------------------      "insert#realfile":#"<desc plugin='plugin'><p><short>    Inserts a raw, unparsed file.</short> The disadvantage with the    realfile plugin compared to the file plugin is that the realfile    plugin needs the inserted file to exist, and can't fetch files from e.g.    an arbitrary location module. Note that the realfile insert plugin    can not fetch files from outside the virtual file system.
Roxen.git/server/modules/tags/rxmltags.pike:5760: Inside #if defined(manual)
  //----------------------------------------------------------------------      "maketag":({ #"<desc cont='cont'><p><short hide='hide'>    Makes it possible to create tags.</short>This tag creates tags.    The contents of the container will be put into the contents of the produced container.   </p></desc>      <attr name='name' value='string'>    <p>The name of the tag that should be produced. This attribute is required for tags,    containers and processing instructions, i.e. for the types 'tag', 'container' and 'pi'.</p> - <ex type='shor'> - <maketag name='one' type='tag'></maketag> - <maketag name='one' type='tag' noxml='noxml'></maketag> - </ex> + <ex-src><maketag name='one' type='tag'></maketag> + <maketag name='one' type='tag' noxml='noxml'></maketag></ex-src>   </attr>      <attr name='noxml'>    <p>Tags should not be terminated with a trailing slash. Only makes a difference for    the type 'tag'.</p>   </attr>      <attr name='type' value='tag|container|pi|comment|cdata'>    <p>What kind of tag should be produced. The argument 'Pi' will produce a processing instruction tag.</p> - <ex type='svert'> - <maketag type='pi' name='PICS'>l gen true r (n 0 s 0 v 0 l 2)</maketag> - </ex> - <ex type='shor'> - <maketag type='comment'>Menu starts here</maketag> - </ex> - <ex type='box'> - <maketag type='comment'>Debug: &form.res; &var.sql;</maketag> - </ex> - <ex type='shor'> - <maketag type='cdata'>Exact words</maketag> - </ex> + <ex-src><maketag type='pi' name='PICS'>l gen true r (n 0 s 0 v 0 l 2)</maketag></ex-src> + <ex-src><maketag type='comment'>Menu starts here</maketag></ex-src> + <ex-box><maketag type='comment'>Debug: &form.res; &var.sql;</maketag></ex-box> + <ex-src><maketag type='cdata'>Exact words</maketag></ex-src>   </attr>",       ([    "attrib":#"<desc cont='cont'><p>    Inside the maketag container the container    <tag>attrib</tag> is defined. It is used to add attributes to the produced    tag. The contents of the attribute container will be the    attribute value. E.g.</p>    </desc>   
Roxen.git/server/modules/tags/rxmltags.pike:5822: Inside #if defined(manual)
  "modified":#"<desc tag='tag'><p><short hide='hide'>    Prints when or by whom a page was last modified.</short> Prints when    or by whom a page was last modified, by default the current page.   </p></desc>      <attr name=by>    <p>Print by whom the page was modified. Takes the same attributes as    <xref href='user.tag' />. This attribute requires a userdatabase.    </p>    -  <ex type='box'>This page was last modified by <modified by='' -  realname=''/>.</ex> +  <ex-box>This page was last modified by <modified by='' +  realname=''/>.</ex-box>   </attr>      <attr name=date>    <p>Print the modification date. Takes all the date attributes in <xref href='date.tag' />.</p>    -  <ex type='box'>This page was last modified <modified date='' -  case='lower' type='string'/>.</ex> +  <ex-box>This page was last modified on + <modified date='' case='lower' type='string'/>.</ex-box>   </attr>      <attr name=file value=path>    <p>Get information from this file rather than the current page.</p>   </attr>      <attr name=realfile value=path>    <p>Get information from this file in the computers filesystem rather    than Roxen Webserver's virtual filesystem.</p>   </attr>",      //----------------------------------------------------------------------      "random":#"<desc cont='cont'><p><short>    Randomly chooses a message from its contents.</short>   </p></desc>      <attr name='separator' value='string'>    <p>The separator used to separate the messages, by default newline.</p>    - <ex><random separator='#'> - - </random> - </ex> + <ex><random separator='#'>Foo#Bar#Baz</random></ex>   </attr>      <attr name='seed' value='string'>    <p>Enables you to use a seed that determines which message to choose.</p>    - <ex type='box'> - Tip of the day: + <ex-box>Tip of the day:   <set variable=''><date type='iso' date=''/></set> - <random seed=''><insert file='tips.txt'/></random> - </ex> - </attr> - ", + <random seed=''><insert file='tips.txt'/></random></ex-box> + </attr>",      //----------------------------------------------------------------------      "redirect":#"<desc tag='tag'><p><short hide='hide'>    Redirects the user to another page.</short> Redirects the user to    another page by sending a HTTP redirect header to the client. If the    redirect is local, i.e. within the server, all prestates are preserved.    E.g. \"/index.html\" and \"index.html\" preserves the prestates, while    \"\" does not.   </p></desc>
Roxen.git/server/modules/tags/rxmltags.pike:5985: Inside #if defined(manual)
  </attr>",      //----------------------------------------------------------------------      "roxen":#"<desc tag='tag'><p><short>    Returns a nice Roxen logo.</short>   </p></desc>      <attr name=size value=small|medium|large default=medium>    <p>Defines the size of the image.</p> - <ex type='vert'><roxen size='small'/> <roxen/> <roxen size='large'/></ex> + <ex><roxen size='small'/> + <roxen/> + <roxen size='large'/></ex>   </attr>      <attr name=color value=black|white default=white>    <p>Defines the color of the image.</p> - <ex type='vert'><roxen color='black'/></ex> + <ex><roxen color='black'/></ex>   </attr>      <attr name=alt value=string default='\"Powered by Roxen\"'>    <p>The image description.</p>   </attr>      <attr name=border value=number default=0>    <p>The image border.</p>   </attr>   
Roxen.git/server/modules/tags/rxmltags.pike:6038: Inside #if defined(manual)
  </attr>",      //----------------------------------------------------------------------      "set":#"<desc tag='tag'><p><short>    Sets a variable.</short>   </p></desc>      <attr name=variable value=string required='required'>    <p>The name of the variable.</p> - <ex type='box'> - <set variable='' value='bar'/> - </ex> + <ex-box><set variable='' value='bar'/></ex-box>   </attr>      <attr name=value value=string>    <p>The value the variable should have.</p>   </attr>      <attr name=expr value=string>    <p>An expression whose evaluated value the variable should have.</p>   </attr>   
Roxen.git/server/modules/tags/rxmltags.pike:6188: Inside #if defined(manual)
  </attr>",      //----------------------------------------------------------------------      "smallcaps":#"<desc cont='cont'><p><short>    Prints the contents in smallcaps.</short> If the size attribute is    given, font tags will be used, otherwise big and small tags will be    used.   </p>    - <ex> -  <smallcaps>Roxen WebServer</smallcaps> - </ex> + <ex><smallcaps>Roxen WebServer</smallcaps></ex>          </desc>      <attr name=space>    <p>Put a space between every character.</p> - <ex type='vert'> - <smallcaps space=''>Roxen WebServer</smallcaps> - </ex> + <ex><smallcaps space=''>Roxen WebServer</smallcaps></ex>   </attr>      <attr name=class value=string>    <p>Apply this cascading style sheet (CSS) style on all elements.</p>   </attr>      <attr name=smallclass value=string>    <p>Apply this cascading style sheet (CSS) style on all small elements.</p>   </attr>   
Roxen.git/server/modules/tags/rxmltags.pike:6221: Inside #if defined(manual)
   <p>Apply this cascading style sheet (CSS) style on all big elements.</p>   </attr>      <attr name=size value=number>    <p>Use font tags, and this number as big size.</p>   </attr>      <attr name=small value=number default=size-1>    <p>Size of the small tags. Only applies when size is specified.</p>    -  <ex> -  <smallcaps size='6' small='2'>Roxen WebServer</smallcaps> -  </ex> +  <ex><smallcaps size='6' small='2'>Roxen WebServer</smallcaps></ex>   </attr>",      //----------------------------------------------------------------------      "sort":#"<desc cont='cont'><p><short>    Sorts the contents.</short></p>    -  <ex> -  <sort> -  1 -  Hello -  3 -  World -  Are -  2 -  We -  4 -  Communicating? -  </sort> -  </ex> +  <ex><sort>Understand! + I + Wee! + Ah,</sort></ex>   </desc>      <attr name=separator value=string>    <p>Defines what the strings to be sorted are separated with. The sorted    string will be separated by the string.</p>    -  <ex type='vert'> -  <sort separator='#'> -  1#Hello#3#World#Are#2#We#4#Communicating? -  </sort> -  </ex> +  <ex><sort separator='#'>way?#perhaps#this</sort></ex>   </attr>      <attr name=reverse>    <p>Reversed order sort.</p>    -  <ex> -  <sort reverse=''> -  1 -  Hello -  3 -  World -  Are -  2 -  We -  4 -  Communicating? -  </sort> -  </ex> +  <ex><sort reverse=''>backwards? + or + :-) + maybe</sort></ex>   </attr>",      //----------------------------------------------------------------------      "throw":#"<desc cont='cont'><p><short>    Throws a text to be caught by <xref href='catch.tag' />.</short>    Throws an exception, with the enclosed text as the error message.    This tag has a close relation to <xref href='catch.tag' />. The    RXML parsing will stop at the <tag>throw</tag> tag.    </p></desc>",      //----------------------------------------------------------------------      "trimlines":#"<desc cont='cont'><p><short>    Removes all empty lines from the contents.</short></p>    -  <ex> -  <trimlines> +  <ex><pre><trimlines> + See how all this junk       -  Are + just got zapped?    -  -  We -  -  Communicating? -  -  -  </trimlines> -  </ex> + </trimlines></pre></ex>   </desc>",      //----------------------------------------------------------------------      "unset":#"<desc tag='tag'><p><short>    Unsets a variable, i.e. removes it.</short>   </p></desc>      <attr name=variable value=string required='required'>    <p>The name of the variable.</p>    -  <ex> -  <set variable='var.jump' value='do it'/> -  <ent>var.jump</ent> +  <ex><set variable='var.jump' value='do it'/> + &var.jump;   <unset variable='var.jump'/> -  <ent>var.jump</ent> -  </ex> + &var.jump;</ex>   </attr>",      //----------------------------------------------------------------------      "user":#"<desc tag='tag'><p><short>    Prints information about the specified user.</short> By default, the    full name of the user and her e-mail address will be printed, with a    mailto link and link to the home page of that user.</p>       <p>The <tag>user</tag> tag requires an authentication module to work.</p>   </desc>      <attr name=email>    <p>Only print the e-mail address of the user, with no link.</p> -  <ex type='box'>Email: <user name='foo' email=''/></ex> +  <ex-box>Email: <user name='foo' email=''/></ex-box>   </attr>      <attr name=link>    <p>Include links. Only meaningful together with the realname or email attribute.</p>   </attr>      <attr name=name>    <p>The login name of the user. If no other attributes are specified, the    user's realname and email including links will be inserted.</p> - <ex type='box'><user name='foo'/></ex> + <ex-box><user name='foo'/></ex-box>   </attr>      <attr name=nolink>    <p>Don't include the links.</p>   </attr>      <attr name=nohomepage>    <p>Don't include homepage links.</p>   </attr>      <attr name=realname>    <p>Only print the full name of the user, with no link.</p> - <ex type='box'><user name='foo' realname=''/></ex> + <ex-box><user name='foo' realname=''/></ex-box>   </attr>",      //----------------------------------------------------------------------      "if#expr":#"<desc plugin='plugin'><p><short>    This plugin evaluates a string as a pike expressions.</short>    Available arithmetic operators are +, -, *, / and % (modulo).    Available relational operators are &lt;, &gt;, ==, !=, &lt;= and    &gt;=. Available bitwise operators are &amp;, | and ^, representing    AND, OR and XOR. Available logical operators are &amp;&amp; and ||,    working as the pike AND and OR.</p>       <p>Numbers can be represented as decimal integers when numbers    are written out as normal, e.g. \"42\". Numbers can also be written    as hexadecimal numbers when precedeed with \"0x\", as octal numbers    when precedeed with \"0\" and as binary number when precedeed with    \"0b\". Numbers can also be represented as floating point numbers,    e.g. \"1.45\" or \"1.6E5\". Numbers can be converted between floats    and integers by using the cast operators \"(float)\" and \"(int)\".</p>    -  <ex type='box'> -  (int)3.14 -  </ex> +  <ex-box>(int)3.14</ex-box>       <p>A common problem when dealing with variables from forms is that    a variable might be a number or be empty. To ensure that a value is    produced the special functions INT and FLOAT may be used. In the    expression \"INT(&form.num;)+1\" the INT-function will produce 0 if    the form variable is empty, hence preventing the incorrect expression    \"+1\" to be produced.</p>   </desc>      <attr name='expr' value='expression'>
Roxen.git/server/modules/tags/rxmltags.pike:6410: Inside #if defined(manual)
     <attr name='type' value='ttf|all'>    <p>Which font types to list. ttf means all true type fonts, whereas all    means all available fonts.</p>   </attr>",    ([   "&;":#"<desc ent='ent'><p>    Returns a font identification name.</p>      <p>This example will print all available ttf fonts in gtext-style.</p> - <ex type='box'> -  <emit source='fonts' type='ttf'> -  <gtext font='&;'><ent>_.expose</ent></gtext><br /> -  </emit> - </ex> + <ex-box><emit source='fonts' type='ttf'> +  <gtext font='&;'>&_.expose;</gtext><br /> + </emit></ex-box>   </desc>",   "&_.copyright;":#"<desc ent='ent'><p>    Font copyright notice. Only available for true type fonts.   </p></desc>",   "&_.expose;":#"<desc ent='ent'><p>    The preferred list name. Only available for true type fonts.   </p></desc>",   "&;":#"<desc ent='ent'><p>    The font family name. Only available for true type fonts.   </p></desc>",
Roxen.git/server/modules/tags/rxmltags.pike:6481: Inside #if defined(manual)
   within the <tag>cond</tag> tag. This will of course affect the order    the content is parsed. The <tag>case</tag> tag is required.</p>   </desc>",       (["case":#"<desc cont='cont'><p>    This tag takes the argument that is to be tested and if it's true,    it's content is executed before exiting the <tag>cond</tag>. If the    argument is false the content is skipped and the next <tag>case</tag>    tag is parsed.</p></desc>    - <ex type='box'> - <cond> + <ex-box><cond>    <case variable='form.action = edit'>    some database edit code    </case>    <case variable='form.action = delete'>    some database delete code    </case>    <default>    view something from the database    </default> - </cond> - </ex>", + </cond></ex-box>",       "default":#"<desc cont='cont'><p>    The <tag>default</tag> tag is eqvivalent to the <tag>else</tag> tag    in an <tag>if</tag> statement. The difference between the two is that    the <tag>default</tag> may be put anywhere in the <tag>cond</tag>    statement. This affects the parseorder of the statement. If the    <tag>default</tag> tag is put first in the statement it will allways    be executed, then the next <tag>case</tag> tag will be executed and    perhaps add to the result the <tag>default</tag> performed.</p></desc>"    ])
Roxen.git/server/modules/tags/rxmltags.pike:6522: Inside #if defined(manual)
   source</i> in the browser.</p>       <p>Note that since this is a normal tag, it requires that the content    is properly formatted. Therefore it's ofter better to use the    &lt;?comment&nbsp;...&nbsp;?&gt; processing instruction tag to    comment out arbitrary text (which doesn't contain '?&gt;').</p>       <p>Just like any normal tag, the <tag>comment</tag> tag nests inside    other <tag>comment</tag> tags. E.g:</p>    -  <ex type='box'> -  <comment> a <comment> b </comment> c </comment> -  </ex> +  <ex-box><comment> a <comment> b </comment> c </comment></ex-box>       <p>Here 'c' is not output since the comment starter before 'a'    matches the ender after 'c' and not the one before it.</p>   </desc>      <attr name='preparse'>    Parse and execute any RXML inside the comment tag. This can be used    to do stuff without producing any output in the response. This is a    compatibility argument; the recommended way is to use    <tag>nooutput</tag> instead.   </attr>",      //----------------------------------------------------------------------      "?comment":#"<desc pi='pi'><p><short>    Processing instruction tag for comments.</short> This tag is similar    to the RXML <tag>comment</tag> tag but should be used    when commenting arbitrary text that doesn't contain '?&gt;'.</p>    - <ex type='box'> - <?comment -  This comment will not be shown. - ?> - </ex> + <ex-box><?comment +  This comment will not ever be shown. + ?></ex-box>   </desc>",      //----------------------------------------------------------------------      // <cset> is deprecated. This information is to be put in a special   // 'deprecated' chapter in the manual, due to many persons asking   // about its whereabouts.   "cset":#"<desc tag='tag'><p><short>    Deprecated in favor of <tag>define variable</tag></short> Deprecated    in Roxen 2.0.
Roxen.git/server/modules/tags/rxmltags.pike:6575: Inside #if defined(manual)
  <p>The values of the attributes given to the defined tag are    available in the scope created within the define tag.</p></desc>      <attr name='variable' value='name'><p>    Sets the value of the variable to the contents of the container.</p>   </attr>      <attr name='tag' value='name'><p>    Defines a tag that outputs the contents of the container.</p>    - <ex><define tag=\"hi\">Hello <ent></ent>!</define> + <ex><define tag=\"hi\">Hello &;!</define>   <hi name=\"Martin\"/></ex>   </attr>      <attr name='container' value='name'><p>    Defines a container that outputs the contents of the container.</p>   </attr>      <attr name='if' value='name'><p>    Defines an if-caller that compares something with the contents of the    container.</p>
Roxen.git/server/modules/tags/rxmltags.pike:6678: Inside #if defined(manual)
   full index of the tags available in that particular Roxen WebServer    will be presented. If a particular tag is missing from that index, it    is not available at that moment. All tags are available through    modules, hence that particular tags' module hasn't been added to the    Roxen WebServer. Ask an administrator to add the module.   </p>   </desc>      <attr name='for' value='tag'><p>    Gives the help text for that tag.</p> - <ex type='vert'><help for='roxen'/></ex> + <ex><help for='roxen'/></ex>   </attr>",      //----------------------------------------------------------------------      "if":#"<desc cont='cont'><p><short>    <tag>if</tag> is used to conditionally show its contents.</short>The    <tag>if</tag> tag is used to conditionally show its contents. <xref    href='else.tag'/> or <xref href='elseif.tag' /> can be used to    suggest alternative content.</p>   
Roxen.git/server/modules/tags/rxmltags.pike:6703: Inside #if defined(manual)
   with any of the if-plugins.</p>       <p>The tag itself is useless without its    plugins. Its main functionality is to provide a framework for the    plugins.</p>       <p>It is mandatory to add a plugin as one attribute. The other    attributes provided are and, or and not, used for combining plugins    or logical negation.</p>    -  <ex type='box'> -  <if variable=' > 0' and='' match=' is No'> +  <ex-box><if variable=' > 0' and='' match=' is No'>    ... -  </if> -  </ex> +  </if></ex-box>    -  <ex type='box'> -  <if variable=' > 0' not=''> -  <ent></ent> is lesser than 0 -  </if> -  <else> -  <ent></ent> is greater than 0 -  </else> -  </ex> +  <ex-box><if variable=' > 0' not=''> +  &; is less than 0 + </if><else> +  &; is greater than 0 + </else></ex-box>       <p>Operators valid in attribute expressions are: '=', '==', 'is', '!=',    '&lt;' and '&gt;'.</p>       <p>The If plugins are sorted according to their function into five    categories: Eval, Match, State, Utils and SiteBuilder.</p>       <p>The Eval category is the one corresponding to the regular tests made    in programming languages, and perhaps the most used. They evaluate    expressions containing variables, entities, strings etc and are a sort    of multi-use plugins. All If-tag operators and global patterns are    allowed.</p>    -  <ex> -  <set variable='var.x' value='6'/> -  <if variable='var.x > 5'>More than one hand</if> -  </ex> +  <ex><set variable='var.x' value='6'/> + <if variable='var.x > 5'>More than one hand</if></ex>       <p>The Match category contains plugins that match contents of    something, e.g. an IP package header, with arguments given to the    plugin as a string or a list of strings.</p>    -  <ex> -  Your domain <if ip='130.236.*'> is </if> -  <else> isn't </else> -  </ex> +  <ex>Your domain <if ip='130.236.*'> is </if> + <else> isn't </else></ex>       <p>State plugins check which of the possible states something is in,    e.g. if a flag is set or not, if something is supported or not, if    something is defined or not etc.</p>       <ex>    Your browser    <if supports='javascript'> -  supports Javascript version <ent>client.javascript</ent> +  supports Javascript version &client.javascript;    </if>    <else>doesn't support Javascript</else>.    </ex>       <p>Utils are additonal plugins specialized for certain tests, e.g.    date and time tests.</p>    -  <ex> +  <ex-box>    <if time='1700' after=''>    Are you still at work?    </if>    <elseif time='0900' before=''>    Wow, you work early!    </elseif>    <else>    Somewhere between 9 to 5.    </else> -  </ex> +  </ex-box>       <p>SiteBuilder plugins requires a Roxen Platform SiteBuilder    installed to work. They are adding test capabilities to web pages    contained in a SiteBuilder administrated site.</p>   </desc>      <attr name='not'><p>    Inverts the result (true-&gt;false, false-&gt;true).</p>   </attr>   
Roxen.git/server/modules/tags/rxmltags.pike:6934: Inside #if defined(manual)
     // If eval is deprecated. This information is to be put in a special   // 'deprecated' chapter in the manual, due to many persons asking   // about its whereabouts.      "if#eval":#"<desc plugin='plugin'><p><short>    Deprecated due to non-XML compliancy.</short> The XML standard says    that attribute-values are not allowed to contain any markup. The    <tag>if eval</tag> tag was deprecated in Roxen 2.0.</p>    -  <ex typ='box'> -  -  <!-- If eval statement --> + <ex-box><!-- If eval statement -->   <if eval=\"<foo>\">x</if>      <!-- Compatible statement -->   <define variable=\"\" preparse=\"preparse\"><foo/></define> -  <if sizeof=\"\">x</if> -  </ex> + <if sizeof=\"\">x</if></ex-box> +     <p>A similar but more XML compliant construct is a combination of    <tag>define variable</tag> and an apropriate <tag>if</tag> plugin.   </p></desc>",      "if#exists":#"<desc plugin><short>    Returns true if the file path exists.</short> If path does not begin    with /, it is assumed to be a URL relative to the directory    containing the page with the <tag>if</tag>-statement. Exists is a <i>Utils</i>    plugin.   </desc>
Roxen.git/server/modules/tags/rxmltags.pike:7007: Inside #if defined(manual)
     "if#match":#"<desc plugin='plugin'><p><short>    Evaluates patterns.</short> More information can be found in the    <xref href='../../tutorial/if_tags/plugins.xml'>If tags    tutorial</xref>. Match is an <i>Eval</i> plugin. </p></desc>      <attr name='match' value='pattern' required='required'><p>    Choose what pattern to test. The pattern could be any expression.    Note!: The pattern content is treated as strings:</p>    - <ex type='vert'> + <ex>    <set variable='var.hepp' value='10' />       <if match='var.hepp is 10'>    true    </if>    <else>    false    </else>   </ex>       <p>This example shows how the plugin treats \"var.hepp\" and \"10\"    as strings. Hence when evaluating a variable as part of the pattern,    the entity associated with the variable should be used, i.e.    <ent>var.hepp</ent> instead of var.hepp. A correct example would be:</p>    - <ex type='vert'> + <ex>   <set variable='var.hepp' value='10' />       <if match='&var.hepp; is 10'>    true    </if>    <else>    false    </else>   </ex>    -  <p>Here, <ent>var.hepp</ent> is treated as an entity and parsed +  <p>Here, &var.hepp; is treated as an entity and parsed    correctly, letting the plugin test the contents of the entity.</p>   </attr>   ",      //----------------------------------------------------------------------      "if#Match":#"<desc plugin='plugin'><p><short>    Case sensitive version of the match plugin</short></p>   </desc>",   
Roxen.git/server/modules/tags/rxmltags.pike:7120: Inside #if defined(manual)
   The time after present time.</p>   </attr>      <attr name='before'><p>    The time before present time.</p>   </attr>      <attr name='inclusive'><p>    Adds present time to after and before.</p>    -  <ex> + <ex-box>    <if time='1200' before='' inclusive=''>    ante meridiem    </if>    <else>    post meridiem    </else> -  </ex> + </ex-box>   </attr>",      //----------------------------------------------------------------------      "if#user":#"<desc plugin='plugin'><p><short>    Has the user been authenticated as one of these users?</short> If any    is given as argument, any authenticated user will do. User is a    <i>Utils</i> plugin.   </p></desc>   
Roxen.git/server/modules/tags/rxmltags.pike:7239: Inside #if defined(manual)
     <attr name='num' value='number' required='required'><p>    Print this number.</p>   <ex type='vert'><number num='4711'/></ex>   </attr>      <attr name='language' value='langcodes'><p>    The language to use.</p>    <lang/>    <ex type='vert'>Mitt favoritnummer är <number num='11' language='sv'/>.</ex> -  <ex type='vert'>Il mio numero preferito <ent>egrave</ent> <number num='15' language='it'/>.</ex> +  <ex type='vert'>Il mio numero preferito è <number num='15' language='it'/>.</ex>   </attr>      <attr name='type' value='number|ordered|roman|memory' default='number'><p>    Sets output format.</p>    -  <ex type='vert'>It was his <number num='15' type='ordered'/> birthday yesterday.</ex> -  <ex type='vert'>Only <number num='274589226' type='memory'/> left on the Internet.</ex> -  <ex type='vert'>Spock Garfield <number num='17' type='roman'/> rests here.</ex> +  <ex>It was his <number num='15' type='ordered'/> birthday yesterday.</ex> +  <ex>Only <number num='274589226' type='memory'/> left on the Internet.</ex> +  <ex>Spock Garfield <number num='17' type='roman'/> rests here.</ex>   </attr>",      //----------------------------------------------------------------------      "strlen":#"<desc cont='cont'><p><short>    Returns the length of the contents.</short></p>    -  <ex type='vert'>There are <strlen>foo bar gazonk</strlen> characters +  <ex>There are <strlen>foo bar gazonk</strlen> characters    inside the tag.</ex>   </desc>",      //----------------------------------------------------------------------      "then":#"<desc cont='cont'><p><short>    Shows its content if the truth value is true.</short></p>   </desc>",      //----------------------------------------------------------------------
Roxen.git/server/modules/tags/rxmltags.pike:7293: Inside #if defined(manual)
  "undefine":#"<desc tag='tag'><p><short>    Removes a definition made by the define container.</short> One    attribute is required.   </p></desc>      <attr name='variable' value='name'><p>    Undefines this variable.</p>       <ex>    <define variable='var.hepp'>hopp</define> -  <ent>var.hepp</ent> +  &var.hepp;    <undefine variable='var.hepp'/> -  <ent>var.hepp</ent> +  &var.hepp;    </ex>   </attr>      <attr name='tag' value='name'><p>    Undefines this tag.</p>   </attr>      <attr name='container' value='name'><p>    Undefines this container.</p>   </attr>
Roxen.git/server/modules/tags/rxmltags.pike:7527: Inside #if defined(manual)
  <attr name='filter' value='list'><p>    The filter attribute is used to block certain 'rows' from the    source from being emitted. The filter attribute should be set    to a list with variable names in the emitted scope and glob patterns    the variable value must match in order to not get filtered.    A list might look like <tt>name=a*,id=??3?45</tt>. Note that    it is often better to perform the filtering in the plugin, by    modifying its arguments, if possible. E.g. when querying an SQL    database the use of where statements is recommended, e.g.    \"WHERE name LIKE 'a%' AND id LIKE '__3_45'\" will perform the -  same filtering as above. - <ex> - <emit source='values' values='foo,bar,baz' split=',' filter='value=b*'> +  same filtering as above.</p> +  + <ex><emit source='values' values='foo,bar,baz' split=',' filter='value=b*'>   &_.value; - </emit> - </ex></p> + </emit></ex>   </attr>      <attr name='sort' value='list'><p>    The emit result can be sorted by the emit tag befor outputted.    Just list the variable names in the scope that the result should    be sorted on, in prioritized order, e.g. \"lastname,firstname\".    By adding a \"-\" sign in front of a name that entry will be    sorted in the reversed order. The sort algorithm will treat numbers    as complete numbers and not digits in a string, hence \"foo8bar\"    will be sorted before \"foo11bar\".</p>