EPIC4 Manual


Aliasy

Nie można zacząć robić czegokolwiek, jeżeli nie wie się jak robić aliasy. Aliasy, są to polecenia, które definiujemy; mogą wykonywać przeróżne zadania -- wszystko zależy tylko i wyłącznie od inwencji twórczej. W zasadzie aliasy można podzielić na polecenia i funkcje
Polecenia wykonuje się 'z palca', natomiast funkcje są używane wewnątrz skryptu do obsługi poleceń :-)

Przykładowa budowa aliasa (polecenia i funkcje buduje sie tak samo, różnią sie tylko outputem, ale o tym później)


alias blah echo *** BuM

Słowo 'alias' oznacza, że ma to być jakies polecenie o nazwie 'blah', które ma wykonać 'echo *** BuM', czyli pokazać nam na ekranie text '*** BuM'.
Bardziej skomplikowane aliasy buduje się używając nawiasów klamrowych '{}':


alias blah {
   if (costam) {
      echo PokemonZ r0x
   }
}

Jeżeli zostanie spełniony warunek 'costam', to pokaże się nam na ekranie 'PokemonZ r0x'.


Nie będe się tu rozpisywał co i jak dalej, bo to chyba jasne i oczywiste.
Czym się różni natomiast polecenie od funkcji? Funkcja musi zwracać jakąś wartość wynikową. Dwa proste przykłady:


alias polecenie {
   echo *** Nick tego Pokemona to: $funkcja($0)
}

alias funkcja {
   @ function_return = before(! $0)
}

/polecenie Raichu!blah@pikachu.net.com.org.mil.edu.int

Wynikiem będzie '*** Nick tego Pokemona to: Raichu'


Użyliśmy tu EpiCowej funkcji $before() (tutaj zwraca wszystko, co jest przed '!', jak nazwa wskazuje) i wyszła nam funkcja do oddzielania nicków od reszty user@hosta.

Zamiast '@ function_return =' można użyć return, co da nam:


alias funkcja reurn before(! $0)

Kasowanie aliasów wyglada niemal tak samo jak kasowanie assignów:


Tworzymy jakiś alias..

alias nazwa echo PiKa

... a tak go kasujemy:

alias -nazwa

Wielką dogodnością jest możliwość nadania nazw poszczególnym argumentom, które otrzymuje dany alias -- nazwy te są traktowane jak zmienne lokalne. Najlepiej zilustruje to przykład:


'Klasyczna' metoda nazywania argumentów (jak w ircII)

alias blah {
   @ kto = [$0]
   @ gdzie = [$1]
   @ jak = [$2]
   @ komu = [$3]
   @ co = [$4-]
   [..(tutaj już jakieś ify, itd)..]
}

W EpiCu można to znacznie uprościć:

alias blah (kto, gdzie, jak, komu, co) {
   [..(tutaj już jakieś ify, itd)..]
}

Przy takiej metodzie zapisu pamiętać należy, że do wartości ostatniej zmiennej zostanie przypisane ostatnie słowo podane jako argument aliasa (łącznie np. ze spacją na końcu!). A co za tym dzie:


Załóżmy, że jesteśmy na #pokemons i chcemy sprawdzić, czy Pikachu ma @

alias blah (nick, channel) {
   if (ichanop($nick $channel)) {
      echo *** $nick ma +o na $channel
   }{
      echo *** $nick nie ma +o na $channel
   }
}

'/blah Pikachu #pokemons '      /* Ze spacją po nazwie kanału */

Niezależnie od stanu faktycznego, nasz alias blah zawsze będzie twierdzić że Pikachu nie ma @, bo zmienna $channel będzie mieć wartość '#pokemons ', a nie '#pokemons' i funkcja $ischanop() będzie głupieć.
Dobrym rozwiązaniem będzie 'oczyszczenie' wartości zmiennej ze spacji:

alias _clear @ function_return = [$0]

alias blah (nick, channel) {
   @ :channel = _clear($channel)
   [...(dalej już identycznie jak wyżej)...]
}

Można stosować wartości domyślne przy definiowaniu argumentów, w przypadku ich braku.


alias blah (channel default "$C") {
   [.......]
}

W pzypadku braku jakichkolwiek argumentów zmienną $channel będzie nazwa aktualnego kanału.


EpiC posiada wiele wewnętrznych funkcji i warto z nich korzystać (zamiast samemu od zera piac, jak to ma miejsce w ircII niekiedy). A czego aliasy mogą dotyczeć, trudno mi nawet pisać, bo właściwie wszystkiego :-)



Wstęp Home Następny Paragraf