<?xml version="1.0"  encoding="UTF-8" ?>

<sect1 id="specials">
<sect1info>
<title
>Specials en ingebouwde globale variabelen</title>
<authorgroup>
<author
><firstname
></firstname
> <surname
></surname
> <affiliation
><address
> <email
></email>
</address
></affiliation>
</author>

&Sander.Koning; 

</authorgroup>
</sect1info>

<title
>Specials en ingebouwde globale variabelen</title>

<para
>Specials zijn functies die door &kommander; verwerkt worden. Let erop dat, totdat &kommander; een volledige parser heeft, alle &kommander;-specials eerst uitgevoerd worden en daarna het script. In de meeste gevallen is dat geen probleem, maar soms wel. </para>

<variablelist>
<varlistentry>
<term
><function
>@dcop(<parameter
>appId</parameter
>, <parameter
>object</parameter
>, <parameter
>function</parameter
>, <parameter
>arguments</parameter
>)</function
></term>
<listitem>
<para
>Doe een &DCOP;-aanroep. @dcop(<quote
>kmail</quote
>, <quote
>KMailIface</quote
>, <quote
>checkMail()</quote
>, <quote
></quote
>) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dcopid</function
></term>
<listitem>
<para
>Het &DCOP;-id van het proces. (kmdr-executor-@pid) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dialog(<parameter
>dialog</parameter
>[,<parameter
>parameters</parameter
>])</function
></term>
<listitem>
<para
>Start het opgegeven Kommander-dialoogvenster op. Het dialoogvenster wordt gezocht in de dialoogmap en in de huidige map - in die volgorde. Dit gaat vooraf aan de aanroep naar de uitvoerder en stelt de standaardmap in op degene waar de Kommander-toepassing zich in bevindt. Parameters kunnen op de gebruikelijke Unix-manier worden meegegeven of u kunt parameters met naam meegeven als <quote
>variable=value</quote
>. U kunt de meegegeven parameters dan terugvinden in de global pool. @global(variable) retourneert <quote
>value</quote
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@env(<parameter
>environmentVariable</parameter
>)</function
></term>
<listitem>
<para
>Expandeert naar de opgegeven omgevingsvariabele. @env(PWD) expandeert naar $PWD. Onthoud dat <quote
>$</quote
> deel van de shell is en niet gebruikt moet worden. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@exec(<parameter
>command</parameter
>)</function
></term>
<listitem>
<para
>retourneert de uitvoer van het uitvoeren van de opgegeven opdracht. @exec(ls -l). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@execBegin ... @execEnd</function
></term>
<listitem>
<para
>hetzelfde als <function
>@exec</function
>, maar met ondersteuning voor #! en meerregelige scripts. Dit ondersteunt diverse scripttalen door ze te declareren of door het gebruik van #!. </para>
<itemizedlist>
<listitem
><para
><function
>@execBegin(php)</function
></para
></listitem>
<listitem
><para
><function
>@execBegin</function
>#!/usr/bin/php</para
></listitem>
</itemizedlist>
<para
>De eerste gebruikt de naam van het uitvoerbare bestand van <acronym
>PHP</acronym
>. &kommander; zoekt in het PATH naar <application
>php</application
> en als dit niet gevonden is, wordt gezocht of het in &kommander; is ingesteld buiten uw pad. Zo niet, dan wordt de gebruiker verteld dat het niet gevonden kan worden. Het weede voorbeeld gebruikt de klassieke <quote
>#!</quote
> die voor- en nadelen kan hebben. Als u een betaversie van <acronym
>PHP5</acronym
> hebt, bijvoorbeeld, in <filename
>/usr/local/bin</filename
> die niet gevonden zou worden omdat de versie in <filename
>/usr/bin</filename
> gevonden zou worden is dit nuttig. Maar, als u het dialoogvenster verspreidt naar iemand die <acronym
>PHP</acronym
> alleen in <filename
>/usr/local/bin</filename
> heeft wordt deze niet gevonden als u de #! gebruikt. #! gebruiken is dus niet zonder risico en het wordt aangeraden het uitvoerbare bestand te gebruiken als u bestanden deelt.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@global(<parameter
>variable</parameter
>)</function
></term>
<listitem>
<para
>expandeert naar de waarde van de opgegeven globale variabele. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@null</function
></term>
<listitem>
<para
>Retourneert null. Nu Kommander op een lege widgetText controleert bij het uitvoeren, voorkomt dit foutieve fouten in het geval van een niet-ingestelde staat op een widget.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@parentPid</function
></term>
<listitem>
<para
>Het &PID; van het ouderproces. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@pid</function
></term>
<listitem>
<para
>Het &PID; van het proces. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@readSetting(<parameter
>key</parameter
>, <parameter
>defaultValue</parameter
>)</function
></term>
<listitem>
<para
>leest een waarde uit <filename
>kommanderrc</filename
> </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@selectedWidgetText</function
></term>
<listitem>
<para
>de geselecteerde inhoud in een widget die meer dan één waarde kunnen weergeven, zoals lijstwidgets </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@setGlobal(<parameter
>variable</parameter
>, <parameter
>value</parameter
>)</function
></term>
<listitem>
<para
>Stelt de globale variabele in op de opgegeven waarde. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@widgetText</function
></term>
<listitem>
<para
>de inhoud van een widget </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@writeSetting(<parameter
>key</parameter
>, <parameter
>value</parameter
>)</function
></term>
<listitem>
<para
>schrijf waarde naar <filename
>kommanderrc</filename
> </para>
</listitem>
</varlistentry>
</variablelist>

<sect2 id="arrays">
<title
>De functiegroep "Array"</title>

<variablelist>
<varlistentry>
<term
><function
>@Array.values(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Retourneert een EOL-gescheiden lijst van alle waarden in de array. Kan gebruikt worden om door een array te lopen.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.keys(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Retourneert een EOL-gescheiden lijst van alle sleutels in de array</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.setValue(<parameter
>array</parameter
>, <parameter
>key</parameter
>, <parameter
>value</parameter
>)</function
></term>
<listitem>
<para
>Stel sleutel en waarde in voor een element van een array. Als geen array bestaat wordt deze aangemaakt.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.clear(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Verwijder alle elementen uit de array.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.count(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Retourneer aantal elementen in de array.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.value(<parameter
>array</parameter
>,<parameter
>key</parameter
>)</function
></term>
<listitem>
<para
>Retourneer de waarde die bij de opgegeven sleutel hoort.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.remove(<parameter
>array</parameter
>,<parameter
>key</parameter
>)</function
></term>
<listitem>
<para
>Verwijder element met de opgegeven sleutel uit de array.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.fromString(<parameter
>array</parameter
>,<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Voeg alle elementen in de tekenreeks toe aan de array. De tekenreeks moet van het formaat <emphasis
>key\tvalue\n</emphasis
> zijn.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.toString(<parameter
>array</parameter
>,<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Retourneer alle elementen in de array in <emphasis
>key\tvalue\n</emphasis
> formaat.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="files">
<title
>De functiegroep "File"</title>
<variablelist>

<varlistentry>
<term
><function
>@File.read(<parameter
>file</parameter
>)</function
></term>
<listitem>
<para
>Retourneer inhoud van het opgegeven bestand.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.write(<parameter
>file</parameter
><parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Schrijf gegeven tekenreeks naar een bestand.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.append(<parameter
>file</parameter
><parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Voeg gegeven tekenreeks toe aan het einde van een bestand.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="strings">
<title
>De functiegroep "String"</title>
<variablelist>

<varlistentry>
<term
><function
>@String.length(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Retourneert het aantal tekens in de tekenreeks.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.contains(<parameter
>string</parameter
>,<parameter
>substring</parameter
>)</function
></term>
<listitem>
<para
>Controleer of de tekenreeks gegeven subreeks bevat.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.find(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Retourneer positie van een subreeks in de tekenreeks, of -1 als deze niet gevonden werd.</para>
<note
><para
>Een optionele startpositie voor het vinden van volgende voorkomens is beschikbaar vanaf Alpha 6.</para
></note>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.left(<parameter
>string</parameter
>, <parameter
>int</parameter
>)</function
></term>
<listitem>
<para
>Retourneer de eerste n tekens van de tekenreeks.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.right(<parameter
>string</parameter
>, <parameter
>int</parameter
>)</function
></term>
<listitem>
<para
>Retourneer de laatste n tekens van de tekenreeks.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.mid(<parameter
>string</parameter
>, <parameter
>int start</parameter
>, <parameter
>int end</parameter
>)</function
></term>
<listitem>
<para
>Retourneer subreeks van de tekenreeks vanaf opgegeven positie.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.remove(<parameter
>string</parameter
>, <parameter
>substring</parameter
>)</function
></term>
<listitem>
<para
>Verwijder alle voorkomens van een gegeven subreeks.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.replace(<parameter
>string</parameter
>, <parameter
>substring find</parameter
>, <parameter
>substring replace</parameter
>)</function
></term>
<listitem>
<para
>Vervang alle voorkomens van een gegeven subreeks door een gegeven vervanging.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.upper(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Zet de tekenreeks om naar hoofdletters.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.lower(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Zet de tekenreeks om naar kleine letters.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.compare(<parameter
>string</parameter
>, <parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Vergelijk twee tekenreeksen. Retourneer 0 als ze gelijk zijn, -1 als de eerste lager is, 1 als de eerste hoger is.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isEmpty(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Controleer of de tekenreeks leeg is.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isNumber(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Controleer of de tekenreeks een geldig getal is.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="builtins">
<title
>Ingebouwde globale variabelen</title>
<para
>Ingebouwde globale variabelen worden net als gewone globale variabelen benaderd met <function
>@global</function
>.</para>
<variablelist>
<varlistentry>
<term
><function
>@global(_KDDIR)</function
></term>
<listitem>
<para
>De map waar het huidige dialoogvenster zich in bevindt.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><function
>@global(_NAME)</function
></term>
<listitem
><para
>De naam van het dialoogvenster</para
></listitem>
</varlistentry>
</variablelist>
</sect2>

</sect1>
