• No results found

Struktura a základní principy

In document DIPLOMOVÁ PRÁCE 2004 / 2005 (Page 32-39)

4. Seznámení s programovacím jazykem Rebol

4.2. Struktura a základní principy

Rebol umožňuje širokou škálu variací s příkazy, bezmezné kombinování a prolínání. Na následujících řádkách je uvedeno několik příkladů, jak je možno používat a kombinovat matematické výpočty. Na prvním řádku je vždy zadaná operace a pod ní je výsledek.

10:55 + 0:10 11:05

1-Jan-2001 + 100 11-Apr-2001

$10.55 + $100

$110.55

100.30.5 + 100.5.5 200.35.10

100x200 + 100x40 200x240

Na prvním příkladu se sčítají čísla v časovém formátu.

Druhý příklad ukazuje možnost přičítat libovolné číslo k datu, což je užitečné zejména pro funkce využívající časové cykly.

Výsledkem je den, který odpovídá časovému posunu o 100 dní.

Na třetím příkladu vidíme součet čísel v měnovém formátu, v tomto případě v dolaru.

Velmi zajímavý je příklad čtvrtý, kde se sčítají části řetězce mezi tečkami. 100 + 100, 30 + 5 a 5 + 5.

Podobný princip nám ukazuje pátý příklad.

Rebol má celkem 45 datových typů (většina ostatních jazyků má do 10 typů), které jsou navíc přímou součástí jazyka. Zároveň platí, že funkce Rebolu pracují se všemi datovými typy. Jejich seznam si můžeme v konzoli vyvolat zadáním příkazu help datatype!. Velmi názorně to ukazuje funkce find, která vyhledává zadaný řetězec doslova kdekoliv.

find "Technická Univerzita Liberec" "univerzita"

Univerzita Liberec

find student@univerzita.cz "univerzita"

univerzita.cz

find http://www.vslib.cz/univerzita/fakulty.html "univerzita"

univerzita/fakulty.html

find %/c/dokumenty/univerzita.doc "univerzita"

%univerzita.doc

find #ABC-UNIVERZITA-46001 "univerzita"

#UNIVERZITA-46001

find #{7465636820756E697665727A697461206C6263} "univerzita"

#{756E697665727A697461206C6263}

find [123 10:30 "univerzita" 1-Jan-2003] "univerzita"

["univerzita" 1-Jan-2003]

Rebol má vestavěných 14 síťových protokolů, které mají použití při různých operacích s internetem. Opět je zde nepřeberné množství možností. Základní příkaz na čtení je read, např. read %soubor.txt pro čtení z disku. Jeho použití při čtení ze sítě (internetu) vidíme na příkladech.

read http://www.adresa.com/index.html (přečte HTML stránku z internetu)

read ftp://ftp.rebol.com/test.txt (stáhne soubor přes protokol FTP)

read pop://jmeno:heslo@email.com (přečte všechny e-mailové zprávy)

read nntp://news.adresa.com/alt.test (přečte všechny nové nástěnky)

read whois://adresa.com@rs.internic.net (zjistí informace o internetové doméně)

read finger://uzivatel@adresa.com (vrátí informace o uživatelském účtu)

read daytime://everest.cclabs.missouri.edu (zjistí čas ze serveru)

read dns://100.100.100.100

(vrátí dns adresu počítače (bez zadané IP vrátí vlastní jméno)

Toto je jen malý výřez schopnostmi Rebolu. Umí také například přečíst z internetu obrázkový soubor a uložit jej na disk.

write/binary %obrazek.jpg read/binary

http://www.adresa.com/grafika/obrazek.jpg

Podobně jako při přenosu dat přes FTP (File Transfer Protocol) je nutno rozlišit, zda se jedná o textový nebo binární soubor.

O to se stará v tomto případě /binary.

Chceme-li poslat textový soubor jako součást e-mailové zprávy, napíšeme:

send petr@email.com read %zprava.txt

Stejným způsobem můžeme ovšem poslat i webovou stránku:

send petr@email.com read http://www.adresa.com

Nebo jednoduše pošleme klasickou zprávu:

send petr@adresa.com "Ahoj!"

Můžeme také nahrát soubor z disku na server přes FTP, kdy opět musíme rozlišit charakter souboru.

write/binary ftp://jmeno:heslo@adresa.com/obrazek.jpg read/binary %obrazek.jpg

Následující skript zajistí nahrání celého adresáře přes FTP:

stranka: ftp://jmeno:heslo@adresa.com/

foreach file read %adresar/ [

write/binary stranka/:file read/binary file ]

Budeme-li chtít zkopírovat pouze soubory určitého typu, necháme tento typ „najít“ příkazem find:

foreach file read %adresar/ [ if find file ".jpg" [

write/binary stranka/:file read/binary file ]

]

Takto se zapíše požadavek na dva typy souborů:

foreach file read %adresar/ [ if any [

find file ".jpg"

find file ".gif"

] [

write/binary stranka/:file read/binary file ]

]

Soubory můžeme také roztřídit podle jejich stáří, například změněné do dvou dnů:

datum: now - 2

foreach file read %adresar/ [ if (modified? file) > datum [

write/binary stranka/:file read/binary file ]

]

Stejně tak funguje hledisko velikosti souboru:

if (size? file) < 100000 [

Také se můžeme vyhnout podadresářům:

if not dir? file [

Tyto funkce také nefungují pouze na disku, ale i přes internet:

print size? ftp://jmeno:heslo@adresa.com/obrazek.jpg print modified? ftp://jmeno:heslo@adresa.com/obrazek.jpg

Integrace Rebolu s internetem je vskutku velmi výrazná. Další jeho schopnost umožňuje v REBOL/View jednoduše vytvořit okno s obrázkovým souborem z internetu:

view layout [

image http://www.adresa.com/grafika/obrazek.jpg ]

Výsledek bude okno, ve kterém bude požadovaný obrázek:

Snadno lze změnit barva okna, resp. pozadí. Můžeme také toto okno nadefinovat jako odkaz na stránku (na kliknutí):

view layout [

backcolor white

image http://www.adresa.com/grafika/obrazek.jpg [ browse http://www.odkaz.com

] ]

Jako tlačítko může okénko využívat všechny síťové funkce Rebolu, jako čtení e-mailových zpráv, práci se soubory přes FTP a mnohé další.

A konečně neméně důležitá vlastnost Rebolu je, že jeho skripty můžeme pouštět přímo z internetu:

do http://www.adresa.com/skript.r

A nyní můžeme provádět nekonečné kombinování jednotlivých příkazů a skriptů. Například obrázkové tlačítko se spouštěcím příkazem do. Klikneme-li na obrázek, spustí se skript.r:

view layout [

backcolor white

image http://www.adresa.com/grafika/obrazek.jpg [ do http://www.programy.com/skripty/skript.r ]

]

Nyní se dostáváme k samotnému zápisu skriptových souborů.

Každý soubor Rebolu začíná hlavičkou, která popisuje jeho obsah, jméno, autora, verzi, datum, historii a další informace. Hlavičky jsou zapsány v meta-data formátu, který je kompatibilní s Rebolem. To umožňuje vyhledávačům založeným na bázi Rebolu zjistit všechny informace o souboru.

Takto může vypadat minimálně zapsaná hlavička. Datum a verze jsou napsány v rebolovském datovém typu:

REBOL [

Title: "Můj skript"

Date: 20-May-2003 Author: "Petr"

Version: 1.0.0

In document DIPLOMOVÁ PRÁCE 2004 / 2005 (Page 32-39)

Related documents