Ha az aktuális node-ba belépünk a típusa 'element', ha kilépünk belőle 'element end'. Ha belelépünk az 'artist' elembe, rögtön meghívódik az olvasó read iterátora, hogy hozzáférjünk a szöveghez. A szkript meg messze nincs kész, az artist és songtitle függvény nagyon hasonlítanak egymásra, erősen sértve a DRY-elvet. :D
És hol van a hibakezelés, teszt, doksi?...
A latin2-ről utf8-ra alakítást kihagytam hiszen az előző bejegyzések valamelyikében már be lett mutatva.
$ wget http://www.radio1.hu/mosthallhatoNew.xml
$ luarocks install xmlreader
Ez a szkript azért jó, mert offline is működik. :D
radio_radio1_offline.lua:
require 'xmlreader'
local r = xmlreader.from_file('mosthallhatoNew.xml')
coll = {}
function artist(r, coll)
name = r:name()
r:read()
print(r:value())
coll[name] = r:value()
end
function songtitle(r, coll)
name = r:name()
r:read()
print(r:value())
coll[name] = r:value()
end
callback_table = {
artistelement = artist,
songtitleelement = songtitle
}
function parse_xml_rec(reader)
if reader:read() then
cb = callback_table[reader:name()..reader:node_type()]
if cb then cb(reader, coll) end
parse_xml_rec(reader)
end
end
parse_xml_rec(r)
print(coll["artist"].." - "..coll["songtitle"])
Példa XML:
<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
< response >
< artist >Taio Cruz-Ludacris< /artist >
< songtitle>Break Your Heart< /songtitle>
< refreshTime>30< /refreshTime>
< /response >
Dokumentáció:
[1] http://asbradbury.org/projects/lua-xmlreader/doc/
- foofighter blogja
- A hozzászóláshoz be kell jelentkezni
- 726 megtekintés
Hozzászólások
Miért nem használsz awesome ablakkezelőt? A konfigfájlja lényegében egy lua-kód, és amit meg tudsz csinálni lua-ban, azt az awesome fel is dolgozza...
- A hozzászóláshoz be kell jelentkezni
Jó, legyen... :D
Hogy cserélem le a régit?
- A hozzászóláshoz be kell jelentkezni
Egyszerű. Egy másik ablakkezelőt indítasz :)
Mit használsz most? Egyébként nem egy nagy durranás, főleg ha már érted a lua-t. A példa konfig-fájlból érdemes kiindulni, de a wiki-ben is lehet találni nem kevés példát. De ha bármi kérdésed van, kérdezz, próbálok válaszolni...
- A hozzászóláshoz be kell jelentkezni
Adjátok vissza:
(1) Alt-tab: folyamatok közötti váltásra
(2) nm-applet
(3) win+D: desktop
- A hozzászóláshoz be kell jelentkezni
(1)
awful.key({ modkey }, "Tab", function () awful.client.focus.byidx(1);
if client.focus then client.focus:raise() end end),
(2) Mi a baj vele?
(3) desktop = asztal megjelenítése?
- A hozzászóláshoz be kell jelentkezni
nm-applet nem jelenik meg és a win+D jó lenne az asztal megjelenítésére.
- A hozzászóláshoz be kell jelentkezni
Az nm-applet-ről nem tudok nyilatkozni (systray-ben jelenne meg?).
Asztal: itt az asztalon nincsenek ikonok :) De ha nagyon ezt akarod, akkor létrehozol egy címkét, amire win+d-vel váltasz.
- A hozzászóláshoz be kell jelentkezni
Elég brutálisan torolja meg a hibás .rc fájlt az awesome. Nagy feketeség.
Konzolból kellett kilőnöm az awesome folyamatot. Ja és a szkript nem működik.
- A hozzászóláshoz be kell jelentkezni
Elvileg kapsz egy log-ot, amiben benne van, hol a hibás sor. Hiba esetén az alapértelmezett rc.lua "indul". Nyitsz egy terminált (asszem jobb gomb), majd megnézed, mi a hiba, ha megvan és kijavítottad, akkor "echo awesome.restart() | awesome-client".
- A hozzászóláshoz be kell jelentkezni