Dokładnie nie mi, tylko twórcom projektu syntaxhighlighter. To narzędzie, to nic więcej jak zestaw skryptów JavaScript, które kolorują i ozdabiają kod źródłowy.
Aby skorzystać z tego wynalazku dołączyłem do swojego bloga dedykowany widget. Na stronie http://fazibear.googlepages.com/blogger.html kliknąłem w ikonkę Add to Blogger. Pasek tytułowy pozostawiłem pusty, dzięki temu widget pozostaje niewidoczny.
Jeśli chodzi o instalację skryptów syntaxhighlighter, to by było na tyle. Uźycie ich, jest równie proste. Kod źródłowy wystarczy otoczyć tagami pre lub textarea o parametrach name="code" class="kod-języka". Obsługiwane języki to:
język | kod języka |
C++ | cpp, c, c++ |
C# | c#, c-sharp, csharp |
CSS | css |
Delphi | delphi, pascal |
Java | java |
Java Script | js, jscript, javascript |
PHP | php |
Python | py, python |
Ruby | rb, ruby, rails, ror |
Sql | sql |
VB | vb, vb.net |
XML/HTML | xml, html, xhtml, xslt |
efekt jest mniej więcej taki:
Niezłe... ale to jeszcze nie koniec. Takie bloki kodu można konfigurować. W tym celu kod języka należy uzupełnić opcjami rozdzielonymi dwukropkiem. Dostępnych jest 5 parametrów konfiguracyjnych:
nogutter | Ukrywa boczny pasek z numerami linii. |
nocontrols | Ukrywa górne kontrolki. |
collapse | Automatycznie wcięcia. |
firstline[value] | Ustawia numer pierwszej linii value. Domyślna wartość to 1. |
showcolumns | Pokaże numery kolumn |
i tak na przykład
<pre name="code" class="java:nocontrols:firstline[76]"">
public class Hello {
private static final String HELLO_MSG = "Dzień dobry, cześć i czołem!"
}
</pre>
wyświetli blok kodu bez kontrolek, w dodatku pierwsza linia kodu będzie miała numer 76.
No po prostu rewelacja. Niestety nie zupełnie. Syntaxhighlighter nie jest też pozbawiony bugów. Jeden z nich można podziwiać na przykładzie mojego poprzedniego posta "Uprowadzenie sesji". Prezentuję tam klasę:
public class UserManager {
private Listusers;
public UserManager() {
users = new ArrayList(3);
User user1 = new User();
user1.setLogin("user1");
user1.setPassword("pass1");
user1.setBalance(54321);
User user2 = new User();
user2.setLogin("user2");
user2.setPassword("pass2");
user2.setBalance(65354);
User user3 = new User();
user3.setLogin("user3");
user3.setPassword("pass3");
user3.setBalance(91254);
users.add(user1);
users.add(user2);
users.add(user3);
}
public boolean check(String login, String password) {
User user = loadUser(login);
return user != null && user.getPassword().equals(password);
}
public User loadUser(String login) {
for (User user : users) {
if (user.getLogin().equals(login)) {
return user;
}
}
return null;
}
public void setUsers(Listusers) {
this.users = users;
}
}
która po upiększeniu przez syntaxhighlighter wygląda tak:
public class UserManager {
private Listusers;
public UserManager() {
users = new ArrayList(3);
User user1 = new User();
user1.setLogin("user1");
user1.setPassword("pass1");
user1.setBalance(54321);
User user2 = new User();
user2.setLogin("user2");
user2.setPassword("pass2");
user2.setBalance(65354);
User user3 = new User();
user3.setLogin("user3");
user3.setPassword("pass3");
user3.setBalance(91254);
users.add(user1);
users.add(user2);
users.add(user3);
}
public boolean check(String login, String password) {
User user = loadUser(login);
return user != null && user.getPassword().equals(password);
}
public User loadUser(String login) {
for (User user : users) {
if (user.getLogin().equals(login)) {
return user;
}
}
return null;
}
public void setUsers(Listusers) {
this.users = users;
}
}
Skąd na końcu </user></user></user>?
Nie wiadomo...
5 komentarzy:
http://toolsmatter.blogspot.com/2008/07/blogger-i-syntax-highlighter.html
Pozdrawiam,
Krzysiek :)
ja polecam także "google code prettify" - link: http://code.google.com/p/google-code-prettify/
napisałem kilka słów o tym u siebie:
http://jacekciereszko.pl/2008/08/formatowanie-kodu-w-blogger.html
Pozdro,
JAcek Ciereszko
dzięki za informacje. Przy najbliższej okazji obczaję też google code prettify.
Ostatnie <user> są dodatkiem/zakończeniem typu szablonowego user, który użyłeś w kodzie, chociaż pewnie później go usunąłeś. <user> dla parsera html to kolejny, nieznany znacznik, podczas gdy dla parsera javy 1.5+ to wskazanie na użycie konstrukcji określenia typu w liście.
dobry poczatek
Prześlij komentarz