Ruby-Programmierung: Bibliotheken
Aus Wikibooks
Zurück zu Ruby-Programmierung Hauptmenü
Inhaltsverzeichnis |
[Bearbeiten] Programmieren mit REXML-Modul
REXML ist ein in reinem Ruby Code geschriebener XML-Parser.
[Bearbeiten] Übersicht und Gebrauch des REXML-Moduls
Laden des Moduls wird in Ruby mit require "rexml/document" eingeleitet.
Damit wird der Namensraum REXML:: erzeugt.
- Einlesen einer XML-Datei
# Laden des REXML-Modul document require "rexml/document" # Eine XML-Datei laden file = File.new( "eineXMLDatei.xml" ) # XML-Datei in eine Variable speichern doc = REXML::Document.new file # Ausgabe der XML-Datei puts doc.to_s
- Erzeugen einer XML-Datei
require "rexml/document"
# File-Objekt erzeugen
file = File.new( "make.xml","w" )
# Variable für Erzeugung der XML-Datei zur Verfügung stellen
doc = REXML::Document.new
# XML-Decleration erzeugen und übergeben
doc << REXML::XMLDecl.new(1.0, "ISO-8859-1", "no")
# Root-Tag erzeugen und anhängen
doc.add_element(REXML::Element.new("root"))
# Root-Tag-Attribut erzeugen und anhängen
doc.root.attributes["Attr1"] = "wert1"
# Root Tag Attribut erzeugen und anhängen
doc.root.attributes["Attr2"] = 5
# Variable mit Tag definieren
e = REXML::Element.new( "eintrag")
# Variable mit Wert belegen
e.add_text REXML::Text.new(' bar2')
# An Variable für Erzeugung XML-Datei übergeben
doc.root.add_element(e)
e = REXML::Element.new( "eintrag")
e.add_text REXML::Text.new(' bar')
# Für Variable Attribut erzeugen und anhängen
e.attributes["Attr1"] = 23
doc.root.add_element(e)
e = REXML::Element.new( "eintrag")
e.add_text REXML::Text.new('1 Text ')
e.add_text REXML::Text.new('2 Text ')
e.attributes["c1c"] = 23
doc.root.add_element(e)
e = REXML::Element.new("eintrag")
e.add_text REXML::Text.new('1 Text ')
e.add_text REXML::Text.new('2 Text ')
e.attributes["c1c"] = 23
# Überschreibt 1 Text
e.text = "noch ein Text "
doc.root.add_element(e)
# Einhängen von Tags vor 1. Tag
doc.root[0,0] = REXML::Element.new "davor"
doc.root[0,0] = REXML::Element.new "davor1"
# Ausgabe auf Konsole
doc.write( $stdout, 0 )
# In Datei schreiben
file << doc
# Datei schliessen
file.close
- Aussehen der erzeugten XML-Datei
<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?> <root Attr1='wert1' Attr2='5'> <davor1/> <davor/> <eintrag> bar2</eintrag> <eintrag Attr1='23'> bar</eintrag> <eintrag c1c='23'>1 Text 2 Text </eintrag> <eintrag c1c='23'>noch ein Text 2 Text </eintrag> </root>
[Bearbeiten] Programmieren mit WXRUBY Modul
[Bearbeiten] Übersicht und Gebrauch des wxRUBY 2 - Moduls
download[[1]]
API[[2]]
Laden des Moduls wird in Ruby mit
begin
require 'wx'
rescue LoadError => no_wx_err
begin
require 'rubygems'
require 'wx'
rescue LoadError
raise no_wx_err
end
end
eingeleitet. einfaches Fenster
class Fenster < Wx::Frame
def initialize(title, pos, size, style = Wx::DEFAULT_FRAME_STYLE)
super(nil, -1, title, pos, size, style)
#Durch die Verwendung des Schlüsselwortes super kannt man
#Methoden und den Konstruktor der Wx::Frame Klasse aufrufen
if Wx::PLATFORM == "WXMSW"
set_icon( Wx::Icon.new(local_icon_file("mondrian.ico"),
Wx::BITMAP_TYPE_ICO) )
else
set_icon( Wx::Icon.new(local_icon_file("mondrian.xpm"),
Wx::BITMAP_TYPE_XPM) )
end
menu_file = Wx::Menu.new()
menu_help = Wx::Menu.new()
menu_help.append(Wx::ID_ABOUT, "&About\tF1")
menu_file.append(Wx::ID_EXIT, "E&xit\tAlt-X")
menu_bar = Wx::MenuBar.new()
menu_bar.append(menu_file, "&File")
menu_bar.append(menu_help, "&Help")
set_menu_bar(menu_bar)
create_status_bar(2)
set_status_text("einfaches Fenster mit wxRuby!")
# Verbindung events mit def Funktionen
# der Übersicht wegen in Funktion ausgelagert
evt_menu(Wx::ID_EXIT) { on_quit }
evt_menu(Wx::ID_ABOUT) { on_about }
end
#def Funktionen der events
def on_quit
close()
end
def on_about
msg = sprintf("Dialogfenster.\n" \
"mit wxRuby Version %s", Wx::WXRUBY_VERSION)
about_dlg = Wx::MessageDialog.new( self, msg, 'Einfaches Fenster',
Wx::OK|Wx::ICON_INFORMATION )
about_dlg.show_modal()
about_dlg.destroy()
end
def local_icon_file(icon_name)
File.join( File.dirname(__FILE__), icon_name)
end
end
#Wx::App ist für alle wxruby vorgeschrieben ein Vererbung
#stellt dadurch alle Methoden(Funktion) zur Verfügung
class Fensterclass < Wx::App
def on_init
frame = Fenster.new("Minimal wxRuby App",
Wx::Point.new(50, 50),
Wx::Size.new(450, 340))
frame.show()
end
end
#Nun starten der wxruby Anwendung
app = Fensterclass.new
app.main_loop()

