Koncept: Listing kodu "krok po kroku"
25 listopada, 2007
To co przedstawię poniżej to jedna z moich koncepcji na umilenie życia czytelnikom mojego bloga w jego najnowszej odsłonie (kiedyś się pojawi :P). Oczywiście chodzi o tematy związane z webmasteringiem, a więc takie gdzie listing kodu jest nieodłączną częścią wpisu. Z reguły takie wpisy zawierają kilkanaście listingów, a wiele z nich prezentuje poszczególne etapy powstawania danego rozwiązania. Postanowiłem tą formę przekazywania informacji urozmaicić.
W tym celu stworzyłem wstępną wersję rozwiązania, które pozwoliłoby sprawnie przeglądać listing kodu. Jako, że wiele osób zwraca uwagę na nadużywanie JavaScript na stronach ja swój skrypt przemyślałem tak by ludzie z wyłączonym JS nie ucierpieli zbytnio (choć sporo stracą ;) ).
Sytuacja wyjściowa
Na początku nasz listing wyglądałby tak - jest to wersja jaką ujrzą wszyscy ci, którzy mają wyłączony JavaScript w swojej przeglądarce. Kolejne etapy zmian w kodzie jak widać stanowią kolejne elementy pre o określonej strukturze:
<pre class="code[grupa]">
<code>
/**
Komentarz do kodu
**/
</code>
<code>
Jakiś kod
</code>
</pre>
Według mnie taka postać jest wystarczająco czytelna, a jak się bardzo komuś nie podoba - niech włączy JS :)
Dodam jeszcze, że zmienna grupa w nazwie klasy pozwala nam stworzyć kilka osobnych listingów kodu poprzez nadanie znacznikom pre tej samej wartości tej zmiennej (jeżeli spojrzycie w kod przykładowej strony to wszystko stanie się jasne, jeżeli jeszcze nie jest).
Co robi skrypt ?
No właśnie - teraz pora na skrypt :) Przy okazji dodam, że wymaga on obecności MooTools 1.1(1). A sam skrypcik wykonuje kilka ciekawych operacji, które dają równie ciekawy efekt - przede wszystkim ukrywa wszystkie znaczniki pre z danej grupy poza pierwszym, następnie tworzy prosty interfejs i pozwala czytelnikowi strony cieszyć się ładnym listingiem kodu. Wszystkie komentarze zawarte wcześniej w kodzie teraz mają swoje osobne miejsce, a czytelnik wie na jakim etapie omawiania kodu się właśnie znajduje, no i może szybko przenieść się do innego miejsca listingu. A przy okazji wpis na stronie staje się o wiele krótszy ;)
Ale to ciągle wersja beta ;)
Skrypt jest niewątpliwie dość krótki, ale oznacza to parę niedogodności:
- Z przyczyn dość praktycznych działa on poprawnie dla grup składających się z co najmniej trzech pojedynczych listingów kodu. (można to zmienić, ale po co dodawać zbędny kod),
- Pojedyncze listingi z danej grupy muszą znajdować sie jeden po drugim (tzn. może być pomiędzy nimi wszystko poza innymi listingami z innej grupy),
- Jesteśmy przywiązani do struktury listingu kodu wymaganej przez skrypt.
A teraz pytanie do Was drodzy Czytelnicy - przyda się ? Czy lepiej zostać przy starej formie prezentowania kodu lub dodać jakieś opcje (na przykład możliwość przełączania się pomiędzy listingiem "tradycyjnym" i moim ;) ) ?
Komentarze do wpisu "Koncept: Listing kodu "krok po kroku"":
1.
Adriano napisał(a):
25 listopada 2007, 23:47:06
Wersja druga z js jest bardziej przejrzysta, ponieważ komentarze zostały wydzielone i odpowiednio ostylowane, nie zlewa się wszystko ze sobą – to jest plus.
Jednak stosując taką metodę (z js) zmusza się czytelnika do wykonywania określonych akcji podczas czytania – mi to troszkę przeszkadza, więc zaliczam to na minus.
Ja najbardziej wolałbym rozwiązanie takie: wygląd taki jak w przykładzie drugim (rozdzielenie kodu od komentarzy), jednak z wszystkimi widocznymi krokami (widoczne wszystkie razem kolejno po sobie – czyli normalnie rozwinięte).
Myślę, że dla wielu osób nowa forma prezentacji kodu będzie przydatna. Dla osób wybrednych takich jak ja, proponuje opcję ‘pokazuj kod standardowo’ z zapamiętaniem ustawienia – to powinno załatwić sprawę ;)
2.
Dziudek napisał(a):
25 listopada 2007, 23:54:03
@Adriano – dzięki za ten komentarz – już wiem, że opcja przełączania trybów z zapisem w cookies będzie niezbędna ;) Co do wyglądu – rozważałem już możliwość by zamiast elementu code w znaczniku pre wstawić przed nim jakiś element z komentarzem, a skrypt by go w wypadku listingu „krok po kroku” umieszczał w odpowiednim bloku, a w pozostałych wypadkach listing byłby podobny do dawnej postaci – tekst-kod-tekst-kod etc. ;) W każdym razie koncepcja jest do dopracowania, co przewidywałem od razu ;)
3.
Jony napisał(a):
26 listopada 2007, 13:40:11
Jak dla mnie wersja JS jest trochę mało wygodna. Nie mogę obejrzeć całego kodu, co mi nieco przeszkadza. Popieram pomysł z opcją – pokaż kod standardowo.
4.
coldpeer napisał(a):
26 listopada 2007, 13:49:28
Dodatkowo możesz dodać kolorowanie składni (JS dla joggera).
Kiedyś używałem dpSyntaxHighlighter, ale ostatnio natknąłem się na prettify :)
5.
Dziudek napisał(a):
26 listopada 2007, 17:31:48
@Jony – no wersja standard/js już z pewnością będzie w moim ToDo dla tego skryptu ;)
@coldpeer – szczerze mówiąc ten skrypt trochę zajmuje, poza tym wykonuje z pewnością sporo operacji więc nie wiem czy byłoby to korzystne no chyba, że dodałbym opcję kolorowania kodu i wtedy dołączać moduł z kolorowaniem, jeżeli user włączył taką opcję ;)
6.
coldpeer napisał(a):
26 listopada 2007, 17:35:21
Tu masz wersję nieco zoptymalizowaną [by night :)] (<pre class=„kod”>...</pre>) – 16K.
7.
Dziudek napisał(a):
26 listopada 2007, 17:37:41
@coldpeer – ja bym najpierw zaczął od wywalenia tego co mi się na pewno nie przyda (słowa kluczowe języków innych niż JS ;) IMHO do 8kB się spokojnie z tym da zejść, tylko musiałbym z tym posiedzieć ;] )...
8.
coldpeer napisał(a):
26 listopada 2007, 17:38:37
(oczywiście w ostatniej linijce zamień xprettyPrint(); na prettyPrint(); ;)
A rozmiar oryginalnego pliku wynosi 40K…
//edited: jak zejdziesz poniżej tych 16 kB, to daj znać ;) [tylko powiedz, jakie słowa wyciąłeś, ale znając życie te != JS, a ja właśnie chcę == JS ;-P]. Tak czy siak myślę, że góra co do 13-14 zejdziesz ;)
9.
Dziudek napisał(a):
26 listopada 2007, 17:40:47
@coldpeer – wiesz plik Core.js w Moo 1.2 z komentarzami zajmuje 17kB, a bez nich ~6kB ;) Ale tak jak mówię do 8kB IMHO spokojnie da radę zejść tylko trzeba wywalić to co zbędne ;) JS to język w którym wiele rzeczy da się niesamowicie skrócić tylko trzeba nieraz pokombinować ;)
10.
coldpeer napisał(a):
26 listopada 2007, 17:43:04
No to czekam :) Jeśli jakieś optymalizacje różne od wycinania słów kluczowych, to chętnie skorzystam :)
11.
Dziudek napisał(a):
26 listopada 2007, 17:46:55
@coldpeer – wiesz nie wiem czy prędzej nie napiszę własnej klasy do kolorowania kodu JS :D Bo w sumie mi tylko JS potrzebny ;) Póki co skupię się na listingu kodu, żeby działał lepiej niż obecnie i miał więcej opcji :)
Dodaj komentarz: