217 lines
7.2 KiB
HCL
217 lines
7.2 KiB
HCL
; by Ingwar
|
|
/def -i pid_of = \
|
|
/quote -S \
|
|
/eval /let pid_czego=`"/@ps -r" %%;\
|
|
/if (strstr({pid_czego},{*}) != -1) \
|
|
/first %%{pid_czego} %%;\
|
|
/endif
|
|
/def rstart = \
|
|
/if ($(/pid_of %{-2})=~NULL) \
|
|
/repeat %{1} %{2} %{-2} %;\
|
|
/endif
|
|
|
|
/def rstop = \
|
|
/kill $(/pid_of %{*})
|
|
|
|
; by Koris?
|
|
/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
|