Hilfe:Quellcode darstellen
Das "sourcecode"-Tag
Quellcodes inklusive Syntax-Highlighting für viele verschiedene Sprachen können mit Hilfe des sourcecode-Tags dargestellt werden:
<sourcecode [lang=Sprachkürzel] [tab=Tab-Breite] [line] [start=Startzeilennummer] [highlight=Zeilennummern-Liste]> /* Hier der Quellcode ... */ </sourcecode>
Attribute:
- lang
- Legt die Sprache des Quellcodes für das Syntax-Highlighting fest. Wird das Attribut nicht angegeben oder auf "text" gesetzt, dann erfolgt kein Syntax-Highlighting. Es folgen einige wichtige Sprachkürzel:
- c: C
- cpp: C++
- csharp: C#
- python: Python
- lua: Lua
- xml: XML
- html4strict: HTML 4 Strict
- html5: HTML 5
- css: CSS
- php: PHP
- tab
- Setzt die Breite der Tabs (Werte zwischen 0 und 8 sind zulässig). Wird das Attribut nicht angegeben oder auf 0 gesetzt, so werden im Quelltext vorkommende Tabs unverändert gelassen. Ansonsten werden sie durch die angegebene Anzahl von Leerzeichen ersetzt (abhängig von der Position des Tabs in der Zeile).
- line
- Wird dieses Attribut angegeben, dann werden die Zeilen im Quellcode nummeriert.
- start
- Gibt die Startzeilennummer an (Standard: 1).
- highlight
- Legt fest, welche Zeilen hervorgehoben werden sollen. Beispiel für eine Zeilennummern-Liste: 1,2,3,4,8,9 oder 1-4,8-9. Die Nummern berücksichtigen auch die eventuell mit start festgelegte Startzeilennummer. Wird ein i einer Angabe vorangestellt, so bezieht sich die Angabe auf die Zeilennummer innerhalb des Quellcodes, also ohne Berücksichtigung der Startzeilennummer. i1-3 hebt beispielsweise immer die ersten drei Zeile hervor, egal welchen Wert start hat.
Beispiele
Beispiel für C++ mit Tab-Breite 4:
<sourcecode lang=cpp tab=4>
class GameGUI : public GUI_Element, public sigslot::has_slots<> { public: void onMouseDown(const Vec2i& position, int buttons) { game.showCursor = 200; // Wurde eine Spielfigur angeklickt? Vec2i c = game.engine.getCursorPosition() / 16; std::vector<Object*> objects = game.p_level->getObjectsAt(c); for(std::vector<Object*>::const_iterator i = objects.begin(); i != objects.end(); ++i) { Object* p_obj = *i; if(p_obj->getType() == "Player") { #if defined(DEBUG) writeToLog("Spielfigur angeklickt!"); #endif static_cast<Player*>(p_obj)->activate(); } } } };
Beispiel für einen Python-Quelltext mit aktivierten Zeilennummern, die bei 42 beginnen, und einigen hervorgehobenen Zeilen:
<sourcecode lang=python line start=42 highlight=44-48,52>
def get_player_count(server):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(1.5);
sock.sendto("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffgie3\xff", servers[server])
data, addr = sock.recvfrom(1024)
sock.close()
data = data[14:]
slots = data.split("\x00")
return int(slots[6])
except Exception as e:
print("Exception thrown: %s" % e)
return -1
Tabs im Quellcode können bei Bedarf durch Leerzeichen ersetzt werden. Dazu gibt es das Attribut tab, das Werte von 0 bis 8 annehmen kann. 0 (Standardeinstellung) bedeutet, dass Tabs nicht in Leerzeichen konvertiert werden. Beispiel:
<sourcecode tab=0> ... </sourcecode> (Tabs bleiben erhalten):
a b c d 10 20 30 42
<sourcecode tab=4> ... </sourcecode> (Tabs werden in max. 4 Leerzeichen verwandelt):
a b c d 10 20 30 42
<sourcecode tab=8> ... </sourcecode> (Tabs werden in max. 8 Leerzeichen verwandelt):
a b c d 10 20 30 42