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

<sect1 id="specials">
<sect1info>
<title
>Erid ja sisseehitatud globaalsed muutujad</title>
<authorgroup>
<author
><firstname
></firstname
> <surname
></surname
> <affiliation
><address
> <email
></email>
</address
></affiliation>
</author>

<othercredit role="translator"
><firstname
>Marek</firstname
> <surname
>Laane</surname
> <affiliation
><address
><email
>bald@smail.ee</email
></address
> </affiliation
><contrib
>Tõlge eesti keelde</contrib
></othercredit
> 

</authorgroup>
</sect1info>

<title
>Erid ja sisseehitatud globaalsed muutujad</title>

<para
>Erid on &kommander;i töödeldavad funktsioonid. Tuleks arvestada, et &kommander;i võimsa parsija tõttu käivitatakse esmalt kõik &kommander;i erid ja alles seejärel skript. Enamasti ei kujuta see endast probleemi, kuid igatahese tasuks see kõrva taha panna. </para>

<variablelist>
<varlistentry>
<term
><function
>@dcop(<parameter
>appId</parameter
>, <parameter
>objekt</parameter
>, <parameter
>funktion</parameter
>, <parameter
>argumendid</parameter
>)</function
></term>
<listitem>
<para
>Sooritab &DCOP; väljakutse. @dcop(<quote
>kmail</quote
>, <quote
>KMailIface</quote
>, <quote
>checkMail()</quote
>, <quote
></quote
>) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dcopid</function
></term>
<listitem>
<para
>Protsessi &DCOP; ID. (kmdr-executor-@pid) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dialog(<parameter
>dialoog</parameter
>[,<parameter
>parameetrid</parameter
>])</function
></term>
<listitem>
<para
>Käivitab määratud Kommanderi dialoogi. Seda otsitakse esmalt dialoogi ja seejärel aktiivses kataloogis. Sellega kutsutakse välja Executor ning määratakse vaikekataloogiks Kommanderi rakenduse kataloog. Parameetreid võib edastada UNIX-i tavapärasel viisil või siis anda nimega parameetrid, näiteks <quote
>muutuja=väärtus</quote
>. Edastatud parameetrid leiab seejärel globaalsest puhvrist. @global(muutuja) tagastab <quote
>väärtuse</quote
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@env(<parameter
>keskkonnaMuutuja</parameter
>)</function
></term>
<listitem>
<para
>Kasutab määratud keskkonnamuutujat. @enc(PWD) näiteks kasutab $PWD. Arvesta, et <quote
>$</quote
> kuulub shelli ja seda ei tohi siin pruukida. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@exec(<parameter
>käsk</parameter
>)</function
></term>
<listitem>
<para
>Tagastab määratud käsu käivitamise väljundi. @exec(ls -l) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@execBegin ... @execEnd</function
></term>
<listitem>
<para
>Sama, mis <function
>@exec</function
>, kuid toetab ka mitmerealisi skripte. See on mõistlik mitmete skriptikeelte puhul. </para>
<itemizedlist>
<listitem
><para
><function
>@execBegin(php)</function
></para
></listitem>
<listitem
><para
><function
>@execBegin</function
>#!/usr/bin/php</para
></listitem>
</itemizedlist>
<para
>Esimene kasutab <acronym
>PHP</acronym
> käivitatava faili nime. &kommander; otsib otsinguteelt (PATH) <application
>php</application
>-d ja kui ei leia, uurib, ega see pole &kommander;is määratud asuma kuskil mujal kui sinu otsinguteel. Kui mitte, siis antakse kasutajale teada, et seda ei leitud. Teine võimalus kasutab tavapärast <quote
>kupatust</quote
> (shebang), millel on omad plussid, kuid ka omad miinused. Kui sul on näiteks <acronym
>PHP5</acronym
> koopia asukohas <filename
>/usr/local/bin</filename
>, siis seda ei leita, sest otsitakse ainult asukohast <filename
>/usr/bin</filename
>. Seepärast on <quote
>kupatuse</quote
> kasutamine kahe otsaga asi ning eriti juhul, kui sa faile ja dialooge ka teistega jagada soovid, ei oleks seda mõttekas kasutada.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@global(<parameter
>muutuja</parameter
>)</function
></term>
<listitem>
<para
>Kasutab määratud globaalse muutuja väärtust. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@null</function
></term>
<listitem>
<para
>Tagastab nulli. Kui näiteks Kommander kontrollib käivitamisel tühja widgetText'i, väldib see vigu.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@parentPid</function
></term>
<listitem>
<para
>Eellasprotsessi &PID;. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@pid</function
></term>
<listitem>
<para
>Protsessi &PID;. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@readSetting(<parameter
>võti</parameter
>, <parameter
>vaikeVäärtus</parameter
>)</function
></term>
<listitem>
<para
>Loeb väärtuse failist <filename
>kommanderrc</filename
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@selectedWidgetText</function
></term>
<listitem>
<para
>Vidina valitud sisu, mis võib näidata enam kui üht väärtust, näiteks vidinate loendit. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@setGlobal(<parameter
>muutuja</parameter
>, <parameter
>väärtus</parameter
>)</function
></term>
<listitem>
<para
>Määrab globaalsele muutujale antud väärtuse. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@widgetText</function
></term>
<listitem>
<para
>Vidina sisu. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@writeSetting(<parameter
>võti</parameter
>, <parameter
>väärtus</parameter
>)</function
></term>
<listitem>
<para
>Kirjutab väärtuse faili <filename
>kommanderrc</filename
>. </para>
</listitem>
</varlistentry>
</variablelist>

<sect2 id="arrays">
<title
>Massiivifunktsioonide grupp</title>

<variablelist>
<varlistentry>
<term
><function
>@Array.values(<parameter
>massiiv</parameter
>)</function
></term>
<listitem>
<para
>Tagastab massiivi kõigi väärtuste reavahetusmärkidega eraldatud loendi. Kasulik näiteks massiiviga tutvumisel.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.keys(<parameter
>massiiv</parameter
>)</function
></term>
<listitem>
<para
>Tagastab massiivi kõigi võtmete reavahetusmärkidega eraldatud loendi.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.setValue(<parameter
>massiiv</parameter
>, <parameter
>võti</parameter
>, <parameter
>väärtus</parameter
>)</function
></term>
<listitem>
<para
>Määrab massiivi elemendile võtme ja väärtuse. Kui massiivi ei ole, see luuakse.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.clear(<parameter
>massiiv</parameter
>)</function
></term>
<listitem>
<para
>Eemaldab kõik elemendid massiivist.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.count(<parameter
>massiiv</parameter
>)</function
></term>
<listitem>
<para
>Tagastab massiivi elementide arvu.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.value(<parameter
>massiiv</parameter
>,<parameter
>võti</parameter
>)</function
></term>
<listitem>
<para
>Tagastab antud võtmega seostatud väärtuse.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.remove(<parameter
>massiiv</parameter
>,<parameter
>võti</parameter
>)</function
></term>
<listitem>
<para
>Eemaldab antud võtmega elemendi massiivist.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.fromString(<parameter
>massiiv</parameter
>,<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Lisab stringi kõik elemendid massiivi. String peab olema kujul <emphasis
>võti\tväärtus\n</emphasis
>."</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.toString(<parameter
>massiiv</parameter
>,<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>"Tagastab massiivi kõik elemendid kujul <emphasis
>võti\tväärtus\n</emphasis
>."</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="files">
<title
>Failifunktsioonide grupp</title>
<variablelist>

<varlistentry>
<term
><function
>@File.read(<parameter
>fail</parameter
>)</function
></term>
<listitem>
<para
>Tagastab antud faili sisu.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.write(<parameter
>fail</parameter
><parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Salvestab antud stringi faili.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.append(<parameter
>fail</parameter
><parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Lisab antud stringi faili lõppu.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="strings">
<title
>Stringifunktsioonide grupp</title>
<variablelist>

<varlistentry>
<term
><function
>@String.length(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Tagastab sümbolite arvu stringis.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.contains(<parameter
>string</parameter
>,<parameter
>alamstring</parameter
>)</function
></term>
<listitem>
<para
>Kontrollib, kas string sisaldab antud alamstringi.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.find(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Tagastab alamstringi asukoha stringis või -1, kui seda ei leita.</para>
<note
><para
>Järgmises versioonis saab sellele lisada ka täisarvu, mis tähistab järgmise otsingu alguskohta.</para
></note>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.left(<parameter
>string</parameter
>, <parameter
>täisarv</parameter
>)</function
></term>
<listitem>
<para
>Tagastab stringi esimesed n sümbolit.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.right(<parameter
>string</parameter
>, <parameter
>täisarv</parameter
>)</function
></term>
<listitem>
<para
>Tagastab stringi viimased n sümbolit.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.mid(<parameter
>string</parameter
>, <parameter
>täisarv start</parameter
>, <parameter
>täisarv end</parameter
>)</function
></term>
<listitem>
<para
>Tagastab stringi alamstringi alates antud asukohast.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.remove(<parameter
>string</parameter
>, <parameter
>alamstring</parameter
>)</function
></term>
<listitem>
<para
>Eemaldab kõik antud alamstringid.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.replace(<parameter
>string</parameter
>, <parameter
>alamstring find</parameter
>, <parameter
>alamstring replace</parameter
>)</function
></term>
<listitem>
<para
>Asendab kõik antud alamstringid antud asendusega.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.upper(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Muudab stringi suurtäheliseks.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.lower(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Muudab stringi väiketäheliseks.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.compare(<parameter
>string</parameter
>, <parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Võrdleb kaht stringi. Tagastab 0, kui need on võrdsed, -1, kui esimene on madalam ja 1, kui esimene on kõrgem.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isEmpty(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Kontrollib, kas string on tühi.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isNumber(<parameter
>string</parameter
>)</function
></term>
<listitem>
<para
>Kontrollib, kas string on kehtiv arv.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="builtins">
<title
>Sisseehitatud globaalsed muutujad</title>
<para
>Sisseehitatud globaalseid muutujaid saab kasutada nagu tavalisi globaalseid muutujaid, andes nende ees <function
>@global</function
>.</para>
<variablelist>
<varlistentry>
<term
><function
>@global(_KDDIR)</function
></term>
<listitem>
<para
>Aktiivse dialoogi kataloog.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><function
>@global(_NIMI)</function
></term>
<listitem
><para
>Dialoogi nimi.</para
></listitem>
</varlistentry>
</variablelist>
</sect2>

</sect1>
