tf-scripts/common/array.tf

210 lines
6.9 KiB
Terraform
Raw Normal View History

2012-05-07 18:54:48 +02:00
/def ustaw_indeksy = \
/for i 1 $$[{rozmiar_tablicy_druzyna}] /use_index druzyna $$[{i}]%;\
/for i 1 $$[{rozmiar_tablicy_druzyna_bie}] /use_index druzyna_bie $$[{i}]
/def rozmiar_tablicy = \
/if ({#} < 1) \
/echo Musisz podac nazwe zmiennej!%; \
/echo Na przyklad : /rozmiar_tablicy druzyna%; \
/return %; \
/endif %; \
/if (if_array_exists({1})) \
/let PomocniczaZmienna=$(/eval /echo %%_array_%{1})%; \
/let tab=$[replace("|", " ", {PomocniczaZmienna})]%; \
/set rozmiar_tablicy_%{1}=$(/policz_tablice %{tab})%;\
/else \
/echo Nie ma takiej zmiennej '%{1}'. %; \
/endif
/def use_index = \
/if ({#} != 2) \
/echo You must specify the name of an array, and number of index, which you want to check. %; \
/return %; \
/endif %; \
/if (if_array_exists({1})) \
/let rozmiar_tablicy=$(/policz_tablice $[replace("|", " ", $(/eval /echo %%_array_%{1}))])%; \
/uzyj_indeksu %{2} %{1} $[replace("|", " ", $(/eval /echo %%_array_%{1}))]%; \
/else \
/echo There is no array with name '%{1}'!%; \
/endif
/def uzyj_indeksu = \
/let _nr=%{1}%; \
/let _ta=%{2}%; \
/shift %{1}%; \
/shift %; \
/set __%{_ta}_pozycja_%{_nr}=%{1}
/if ($(/list mesg) =~ NULL) \
/def mesg = \
/if (!getopts("iw", "")) /return 0%%; /endif %%; \
/if ({opt_i}) \
/test echo(strcat("@{BCgreen}####@{n}", " @{Cyellow}", {*}), "", 1) %%; \
/elseif ({opt_w}) \
/test echo(strcat("@{BCgreen}####@{n}", " @{BCred}", {*}), "", 1) %%; \
/else \
/test echo(strcat("@{BCgreen}####@{n}", " ", {*}), "", 1) %%; \
/endif %; \
/endif
/set biblioteka_tablic_wersja=1.1
/set last_update_tablicy=2005-10-04
/def podziel_linie = \
/let string=%{1}%;\
/let dlugosc=%{2}%;\
/if (strlen(str) > {dlugosc}) \
/mesg -w String ma wiecej znakow niz okreslona ich dlugosc. %; \
/return %; \
/endif %; \
/let dlugosc_bez=$[{dlugosc} - strlen(string)]%; \
/let dlugosc_bez_podzial=$[expr({dlugosc_bez} / 2)]%; \
/let string_koncowy=|$[strrep(" ", {dlugosc_bez_podzial})]%{string}$[strrep(" ", {dlugosc_bez_podzial})]|%; \
/echo -p @{Cgreen}%{string_koncowy}
/def ?array = /array_help
/def array_help = \
/echo -p @{Cgreen}+$[strrep("-", 78)]+ %; \
/test podziel_linie("Biblioteka tablic do TF'a, by volus", 78)%; \
/test podziel_linie(strcat("Version ", biblioteka_tablic_wersja), 78)%; \
/test podziel_linie(strcat("Ostatnia aktualizacja biblioteki: ", last_update_tablicy), 78)%; \
/echo -p @{Cgreen}|$[strrep(" ", 78)]| %; \
/echo -p @{Cgreen}|$[strrep(" ", 78)]| %; \
/echo -p @{Cgreen}| * /add_array nazwa elem1 elem2 elem3 elem4 ... |%; \
/echo -p @{Cgreen}| Tworzy tablice nazwana 'nazwa' z elementow 'elem1 elem2' itp. |%; \
/echo -p @{Cgreen}|$[strrep(" ", 78)]| %; \
/echo -p @{Cgreen}| * /add_index nazwa elem1 elem2 elem4 elem4 ... |%; \
/echo -p @{Cgreen}| Dodaje element(y) do tablicy 'nazwa' |%; \
/echo -p @{Cgreen}|$[strrep(" ", 78)]| %; \
/echo -p @{Cgreen}| * /sizeof_array nazwa |%; \
/echo -p @{Cgreen}| Zwraca ilosc elementow tablicy 'nazwa' |%; \
/echo -p @{Cgreen}|$[strrep(" ", 78)]| %; \
/echo -p @{Cgreen}| * /check_index nazwa nr_indeksu |%; \
/echo -p @{Cgreen}| Zwraca wartosc 'nr_indeksu' z tablicy 'nazwa' |%; \
/echo -p @{Cgreen}|$[strrep(" ", 78)]| %; \
/echo -p @{Cgreen}| * /member_array elem tablica |%; \
/echo -p @{Cgreen}| Sprawdza, czy 'elem' jest elementem tablicy 'tablica' |%; \
/echo -p @{Cgreen}+$[strrep("-", 78)]+
/def if_array_exists = \
/if ($(/listvar -s ogolne_%{*})) \
/result 1%; \
/endif
/def add_array = \
/if ({#} < 2) \
/mesg -i Musisz podac nazwe tablicy i przynajmniej jeden jej element %; \
/mesg -i Np: /add_array druzyna jarek marek franek%; \
/return %; \
/endif %; \
/if (regmatch("[()|]", {*})) \
/mesg -i Nazwa tablicy oraz elementy nie moga miec w sobie znakow '(', ')', oraz '|'.%; \
/mesg -w Uwaga! 1 element liczony jest jako 1 wyraz, liczba badz litera!%; \
/mesg -w Wiec spacja liczona jest jako koniec elementu tablicy.%; \
/return %; \
/endif %; \
/set _array_%{1}=$[replace(" ", "|", {-1})]|
/def add_index = \
/if ({#} < 2) \
/mesg -i Musisz podac nazwe tablicy i przynajmniej jeden jej element do dodania.%; \
/mesg -i Np: /add_index druzyna krzysztof%; \
/mesg -i Doda 'krzysztof' do tablicy 'druzyna'%; \
/return %; \
/endif %; \
/if (regmatch("[()|]", {*})) \
/mesg -i Nazwa tablicy oraz elementy nie moga miec w sobie znakow '(', ')', oraz '|'.%; \
/return %; \
/endif %; \
/if (if_array_exists({1})) \
/set _array_%{1}=$(/eval /echo %%_array_%{1})$[replace(" ", "|", {-1})]|%;\
/else \
/mesg -w Tablica '%{1}' nie istnieje!%; \
/endif
/def sizeof_array = \
/if ({#} < 1) \
/mesg -i Musisz podac nazwe tablicy.%; \
/mesg -i Np: /sizeof_array druzyna%; \
/return %; \
/endif %; \
/if (if_array_exists({1})) \
/let PomocniczaZmienna=$(/eval /echo %%_array_%{1})%; \
/let tab=$[replace("|", " ", {PomocniczaZmienna})]%; \
/let wynik=$(/policz_tablice %{tab})%; \
/mesg -i Tablica '%{1}' ma %{wynik} elementow. %; \
/else \
/mesg -w Nie ma tablicy nazwanej '%{1}'. %; \
/endif
/def policz_tablice = \
/let k_z=0%; \
/while ({#}) \
/test ++k_z%; \
/shift %; \
/done %; \
/result %{k_z}
/def check_index = \
/if ({#} != 2) \
/mesg -i Musisz podac nazwe tablicy oraz numer indeksu, jaki mam sprawic. %; \
/mesg -i Jesli podasz indeks '0', Wyswietle wszystkie elementy. %; \
/return %; \
/endif %; \
/if (if_array_exists({1})) \
/let rozmiar_tablicy=$(/policz_tablice $[replace("|", " ", $(/eval /echo %%_array_%{1}))])%; \
/if ({2} < 0) \
/mesg -w Indeks musi byc wiekszy od 0. Jesli chcesz abym wyswietlil wszystkie elementy %; \
/mesg -w Podaj 0 jaki drugi argument%; \
/return %; \
/elseif ({2} != 0 & {2} > {rozmiar_tablicy}) \
/mesg -w Indeks wykracza poza tablice! Ta tablica ma %{rozmiar_tablicy} elementow!%; \
/return %; \
/endif%; \
/if ({2} == 0) \
/pokaz_wszystkie_indeksy_tablicy $[replace("|", " ", $(/eval /echo %%_array_%{1}))]%; \
/else \
/pokaz_indeks %{2} %{1} $[replace("|", " ", $(/eval /echo %%_array_%{1}))]%; \
/endif %; \
/else \
/mesg -w Nie ma takiej tablicy '%{1}'!%; \
/endif
/def pokaz_wszystkie_indeksy_tablicy = \
/let i_t=0%; \
/while ({#}) \
/test ++i_t%; \
/echo %{i_t}: %{1}%; \
/shift %; \
/done
/def pokaz_indeks = \
/let _nr=%{1}%; \
/let _ta=%{2}%; \
/shift %{1}%; \
/shift %; \
/echo %{1} %;\
/echo Index %{_nr} of an array '%{_ta}' is '%{1}'
/def member_array = \
/let _ind=%{1}%; \
/let _arr=%{2}%; \
/if (if_array_exists(_arr)) \
/if (regmatch(substr(_ind, "\|"), _arr)) \
/mesg -i %_ind jest elementem tablicy '%_arr'. %; \
/else \
/mesg -w %_ind nie jest elementem tablicy '%_arr'! %; \
/endif %; \
/else \
/mesg -w Tablica '%_arr' nie istnieje!%; \
/endif
;/def remove_index = \
; /let _arr=%{1}%; \
; /let _ind=%{2}%; \
; /if (if_array_exists(_arr)) \
; /let _inx=$(/check_index %_arr %_ind)%; \
; /remove_index name nr_of_index
; Not impleted yet :)