Nowości w Bonsole (1)
Od ostatniego wpisu na temat Bonsole niewiele się zmieniło w tym programie. Dodałem tryb ducha dla programów klienckich, wstępną pętlę obsługi zdarzeń, zmiany w arkuszach stylów (xsl), możliwość korzystania z narzędzi programisty w programie Bonsole.
Od tej pory aplikacja może oczekiwać na zdarzenia. Jest specjalny rodzaj uri, którego składnia jest taka:
app: prefiks parametry_programu .
Prefiks może wskazywać, że chodzi nam o komunikat zdefiniowany przez programistę aplikacji, bądź jakiś standardowy, jak np. żądanie wyjścia.
Biblioteka kliencka oferuje funkcje do tłumaczenia sekwencji ucieczki html (printable quotes) na odpowiadające im liczby, jak i na odwrót. Np. %20 zostanie zamienione na spację, gdy korzystamy z pierwszej opcji.
To, jak program obsłuży parametry zdefiniowane przez programistę zależy wyłącznie od niego - ważne jest natomiast, by korzystać z tych funkcji do operowania na sekwencjach ucieczki, bo WebKit zamienia niektóre znaki na odpowiadające im sekwencje ucieczki.
Tryb duszka oznacza natomiast, że program może wyświetlić wyjście, zakończyć się, a gdy użytkownik będzie z nim chcieć pracować, zostanie ponownie uruchomiony, a Bonsole przekaże mu zdarzenie. Np. użytkownik kliknie w app:__app_?cwd=/etc&path=modprobe.d , a ls zgłosiło pracę w trybie ducha i się zakończyło. Wtedy ls zostanie ponownie uruchomiony z parametrami uruchamiania przekazanymi do poprzedniej instancji, a następnie zdarzenie app:__app_?cwd=/etc&path=modprobe.d zostanie mu wysłane. Najprawdopodobniej, po obsłudze tego zdarzenia, ls się zakończy i tak w kółko.
Oczywiście program nie musi pracować w trybie ducha, by można było z nim pracować. Zdarzenia będą przekazywane, również w przypadku pracy w zwyczajowym trybie.
Kolejną zmianą jest możliwość przekazania parametrów do styli. Pierwszym rodzajem są sugerowane parametry, a drugim wymuszone. Pierwszy rodzaj nadpisuje parametry, których wartości są zdefiniowane wewnątrz samych styli. Jednak wyższy priorytet od sugerowanych mają wartości ustalone przez program, i to one zostaną ustawione, nawet w przypadku określenia sugerowanej wartości w linii poleceń. Parametry wymuszone mają większy priorytet od wartości określonych przez aplikację.
Po co? Po to, by np. dało się zdefiniować liczbę kolumn dla wyświetlania plików. A po co tryb ducha? Przede wszystkim dla pracy w trybie konsoli (cli), a także dla pracy zdalnej (planuję dodać możliwość komunikacji na odległość; jakiś wrapper na html by się przydał). W każdym razie, to tryb ducha umożliwia, by małe programy nie marnotrawiły pamięci. Jeżeli program ma tylko wyświetlić wynik, to może to zrobić, jednak może również umożliwiać pewną interakcję.