Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
content(text)
    @out << text.to_s
    nil
end
# Objekt als Kommentar ausgeben, nil zurückgeben
def comment(text)
    @out << ""
    nil
end
# Ein Tag mit dem angegebenen Namen und den angegebenen
# Attributen ausgeben. Wenn ein Block vorhanden ist, wird er
# aufgerufen, um Inhalte auszugeben oder zurückzugeben.
# nil zurückgeben
def tag(tagname, attributes={})
    # Den Tag-Namen ausgeben
    @out << "<#{tagname}"
    # Erlaubte Attribute für dieses Tag ermitteln
    allowed = self.class.allowed_attributes[tagname]
    # Zuerst sicherstellen, dass jedes der Attribute erlaubt ist
    # Unter der Annahme, dass sie erlaubt sind, alle ausgeben
    attributes.each_pair do |key,value|
     raise "Falsches Attribut: #{key}" unless allowed.include?(key)
     @out << " #{key}='#{value}'"
    end
    # Nun die erlaubten Attribute durchsuchen und auf benötigte
    # Attribute prüfen, die weggelassen wurden, sowie auf
    # Attribute mit Standardwerten, die wir ausgeben können
    allowed.each_pair do |key,value|
     # Wenn dieses Attribut schon ausgegeben wurde, nichts tun
     next if attributes.has_key? key
     if (value == REQ)
     raise "Pflichtattribut '#{key}' fehlt in <#{tagname}>"
     elsif value.is_a? String
     @out << " #{key}='#{value}'"
     end
    end
    if block_given?
     # Dieser Block besitzt Inhalte.
     @out << '>' # Ende des öffnenden Tags
     # Block aufrufen, um Inhalte auszugeben oder zurückzugeben
     content = yield
     if content # Wenn Inhalte zurückgegeben werden
     @out << content.to_s # Als String ausgeben
     end
     @out << "" # Das Tag schließen
    else
     # Andernfalls ist dies ein leeres Tag, also einfach schließen.
     @out << '/>'
    end
    nil # Tags geben sich selbst aus, geben also nichts zurück.
end
end
    Listing 8.12 Eine DSL für validierte XML-Ausgabe
    ----
    [ 30 ] Es wurde auch schon Monkey Patching genannt, aber da dieser Begriff ursprünglich als Spottname verwendet wurde, vermeiden wir ihn hier. Der Begriff Duck Punching wird manchmal als humorvolle Alternative verwendet.
    [ 31 ] Für ein voll ausgearbeitete Lösung dieses Problems, siehe Jim Weirichs Builder-API unter http://builder.rubyforge.org .

Kapitel 9. Die Ruby-Plattform
    Die Core-Bibliothek von Ruby definiert eine umfassende und mächtige API, die als Plattform für Ihre Programme dient. Es lohnt, sich mit dieser API intensiver zu befassen und zu lernen, wie man sie nutzt, insbesondere die Schlüsselklassen wie
String
,
Array
,
Hash
,
Enumerable
und
IO
. Wenn Sie die von diesen Klassen definierten Methoden nicht kennen, verbringen Sie eventuell viel Zeit damit, Funktionalität neu zu erfinden, die eigentlich schon vorhanden ist.
    Das Kapitel dokumentiert diese Methoden. Es ist keine vollständige API-Referenz, versucht aber mit kurzen Codeschnipseln die Verwendung der wichtigen Methoden aller wichtiger Core-Klassen deutlich zu machen und ein paar der am häufigsten verwendeten Klassen aus der Standardbibliothek vorzustellen. Das Ziel ist, Sie mit dem großen Umfang an bestehenden Methoden vertraut zu machen, so dass Sie sich bei Bedarf daran erinnern können und dazu in der Lage sind, sie mit ri in der Dokumentation zu finden.
    Dies ist ein langes Kapitel, das in folgende Abschnitte unterteilt ist:
    Strings und Textbearbeitung
Reguläre Ausdrücke
Zahlen und Berechnungen
Datums- und Uhrzeitwerte
Das Modul
Enumerable
und die Collections
Array
,
Hash
und
Set
Ein-/Ausgabe und Dateien
Netzwerk-Handling
Threads und Parallelität
    Sie werden feststellen, dass der Code am Anfang des Kapitels eher aus Einzeilern besteht, die kurz demonstrieren, was die einzelnen Methoden bewirken. Zum Ende hin allerdings, wenn es um Netzwerk-Handling und Threads geht, werden die Beispiele länger und zeigen, wie man häufiger anstehende Aufgaben wie das Erstellen eines Netzwerk-Client oder die Verwendung von Threads zur parallelen Verarbeitung von Elementen in einer Collection löst.

9.1 Strings
    Kapitel 3 hat die Syntax von Literal-Strings in Ruby erläutert, aber auch die
String
-Operatoren für das Verketten (
+
), Anfügen (
<<
), Wiederholen (
*
) und Indexieren (
[]
). In diesem Abschnitt werden wir dieses Thema noch erweitern, indem wir die Methoden der Klasse
String
vorstellen. Die diesem API-Überblick folgenden Unterabschnitte handeln dann detaillierter von bestimmten Bereichen.
    Wir beginnen mit Methoden, die Alternativen zu einigen der in Kapitel 3 beschriebenen Operatoren bieten:
s = "Hallo"
s.concat(" Welt") # Synonym für <<. Veränderndes Anfügen an s. Liefert neues s
    

Weitere Kostenlose Bücher