|
|
|
|
Ich brauch mal ein paar Hinweise. Es geht um das Generieren von z.B. HTML aus einem DOM. Dieses DOM ist nicht HTML spezifisch, aber sehr ähnlich. Ich habe bisher eine Basis-Klasse "SearchVisitor", die man implementieren kann, z.B. so:
|
Code: |
class HtmlMarkupFormatter : SearchVisitor {
public SearchVisitor(StringBuilder output) {
this.output = output;
}
public override void Visit(Literal literal) {
this.output.Append(literal.Content);
}
public override void Visit(Link link) {
this.output.AppendFormat("<a href=\"{0}\">", link.Target.ToString());
base.Visit(link);
this.output.Append("</a>");
}
}
|
|
Der "SearchVisitor" ist so implementiert, das für einen Container von Elemente (z.B. Link) die Standardimplementierung so gestaltet ist, dass der Visitor sich selbst nochmal auf die enthaltenen Elemente anwendet. So dass auch base.Visit(link) ungefähr folgendes wird:
|
Code: |
foreach (IVisitable element in link) {
element.Apply(this);
}
|
|
element.Apply(this) ruft wieder die entsprechende Visitor-Methode aus, für ein "Literal" also Visit(Literal literal) .
Nun such ich nach einem Weg, dass ganze sinnvoll zu verpacken. Eine Möglichkeit wäre ein solche Basis-Klasse, die man implementieren kann:
|
Code: |
abstract class MarkupFormatter {
protected virtual void OnBeginLink(Link link);
protected virtual void OnEndLink(Link link);
protected virtual void OnWriteLiteral(Literal literal);
}
// Implementierung von HTML
class HtmlMarkupFormatter : MarkupFormatter {
HtmlMarkupFormatter(StringBuilder output) { ... }
protected override void OnBeginLink(Link link) {
this.output.AppendFormat("<a href=\"{0}\">", link.Target.ToString());
}
protected override void OnEndLink(Link link) {
this.output.Append("</a>");
}
protected override void OnWriteLiteral(Literal literal) {
this.output.Append(literal.Content);
}
}
|
|
Bei der zweiten Variante werden die Konzepte des Visitors und des Formatters nicht so stark verknüpft (wobei ich im Formatter intern einen Visitor einsetzen würde, um die OnBegin* und OnEnd* Methoden aufzurufen). Die direkte Implementierung über den SearchVisitor find ich persönlich aber eleganter.
Was ich suche: Den dritten Weg, an den ich jetzt noch nicht gedacht habe. Wie würdet ihr es am liebsten machen? Wo würdet ihr eher wissen, was zu ändern wäre, wenn ihr noch einen "title"-Attribut in einen Link einbauen möchtet, etc. (btw. Variante 1 ist ein XSLT-ähnlicher Ansatz und wäre damit eigentlich zu bevorzugen).
* In meinen Beispielen verwende ich eine andere Klammerung als in der .NET Welt üblich, dies dient dazu, euch nicht zu stark zu belästigen).
* Ja, es macht keinen Sinn einen HTML Renderer mit einem StringBuilder zu implementieren, wenn man doch einen XmlWriter oder einen HtmlTextWriter nutzen könne, es ist nur ein Bespiel.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von [DK]Peacemaker am 24.05.2011 15:19]
|
|
|
|
|
|
| Zitat von Smoking
| Zitat von GH@NDI
| Zitat von Smoking
Und ich meine genau dir genau diese schonmal empfohlen zu haben.
| |
Du hast es in der Tag mal beläufig erwähnt
| |
Ne, so lange ist das noch nicht her. Such mal in den letzten paar Monaten. Da hattest du dich afair über JavaScript aufgeregt.
| |
Das war der einzige Post der deine UserID und das Wort mozilla vereinten
|
|
|
|
|
|
|
| Zitat von GH@NDI Sofern damit das Mozilla Developer Network gemeint ist (warum auch immer das MDC heisst), war der Tipp gut | | danke!
aber du warst zu fix, ich hab dann nach ner minute noch den link reineditiert: | Zitat von flying sheep MDC
/e2: sogar mit beispielen | |
|
|
|
|
|
|
|
| Zitat von GH@NDI
| Zitat von Smoking
| Zitat von GH@NDI
| Zitat von Smoking
Und ich meine genau dir genau diese schonmal empfohlen zu haben.
| |
Du hast es in der Tag mal beläufig erwähnt
| |
Ne, so lange ist das noch nicht her. Such mal in den letzten paar Monaten. Da hattest du dich afair über JavaScript aufgeregt.
| |
Das war der einzige Post der deine UserID und das Wort mozilla vereinten
| |
Dann such gefälligst nach deinem JavaScript gehate.
|
|
|
|
|
|
|
| Zitat von Smoking
| Zitat von GH@NDI
Wer erklärt mir, warum diese vermeidlich "shorthand-method" mir nicht einfach das JSON Objekt zurückgibt?
Diese Javascriptler sind so fürchterlich vernarrt in ihre anonymen Funktionen und Callbacks...
| |
Weil das ein asynchroner Request ist. Wenn du das synchron machen willst, musst du die Ajax-Methode benutzen.
//Und sonst ist JavaScript-Programmierung halt großteils eventdriven, deswegen auch die Callbacks. Anonyme Funktionen musst du allerdings nicht benutzen. Da Funktionen in JavaScript auch Objekte sind, kannst du auch einfach eine Funktion definieren und im Callback dann nur den Funktionsnamen notieren.
//Und noch ein Edit: wenn du dich näher mit JavaScript beschäftigen willst, benutz die Doku von Mozilla. Bei selfhtml steht nur die halbe Wahrheit.
https://developer.mozilla.org/en/JavaScript/Reference
| |
Ohh Smoking! Großer Meister!
|
|
|
|
|
|
|
| Zitat von Danzelot
| Zitat von Ashtray
| Zitat von Danzelot
[...] Kriegsgegner (ja gut, außer wenn nötig) [...]
| |
Das ist aber inkonsequent! Wer entscheidet denn ob nötig oder nicht!
| |
Der war schwach.
| |
Das war ne normale Frage!
|
|
|
|
|
|
|
| Zitat von Ashtray
| Zitat von Danzelot
| Zitat von Ashtray
| Zitat von Danzelot
[...] Kriegsgegner (ja gut, außer wenn nötig) [...]
| | Das ist aber inkonsequent! Wer entscheidet denn ob nötig oder nicht!
| | Der war schwach.
| | Das war ne normale Frage!
| | Normale Fragen kennzeichnet man aber mit einem Fragezeichen?
|
|
|
|
|
|
|
| Zitat von cms
| Zitat von Ashtray
| Zitat von Danzelot
| Zitat von Ashtray
| Zitat von Danzelot
[...] Kriegsgegner (ja gut, außer wenn nötig) [...]
| | Das ist aber inkonsequent! Wer entscheidet denn ob nötig oder nicht!
| | Der war schwach.
| | Das war ne normale Frage!
| | Normale Fragen kennzeichnet man aber mit einem Fragezeichen?
| |
Tatsache?
|
|
|
|
|
|
|
Was ist eigentlich der letzte Stand bezüglich der Gesundheitsgefährdung durch Laserdrucker? Im Paket meines Druckers hat sich ganzschön Ruß gebildet, ist bestimmt durch die Vibrationen rausgekommen.
Bei der Gelegenheit sieht man dann gleich mal, wie fein dieses Zeug eigentlich ist. Einatmen möchte man das wirklich nicht
|
|
|
|
|
|
|
|
please add this to the code:
if(12345){myInt = 12345}
| |
|
|
|
|
|
|
|
| Zitat von TriggerTG
Was ist eigentlich der letzte Stand bezüglich der Gesundheitsgefährdung durch Laserdrucker? Im Paket meines Druckers hat sich ganzschön Ruß gebildet, ist bestimmt durch die Vibrationen rausgekommen.
Bei der Gelegenheit sieht man dann gleich mal, wie fein dieses Zeug eigentlich ist. Einatmen möchte man das wirklich nicht
| |
Feinstaub!
Soll ich mal eine Gefährdungsbeurteilung einscannen?
|
|
|
|
|
|
|
Die von deinem Arbeitgeber oder hast du auch eine richtige?
|
|
|
|
|
|
|
Du bezweifelst die Qualität unseres betrieblichen Gesundheitsmanagements?
PS: Unsere alten Drucker (LPT für S5-Laptops) haben tatsächlich noch so ein Ding auf der Seite kleben, an den neuen hängt nix mehr dran!
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von Ashtray am 24.05.2011 18:08]
|
|
|
|
|
|
Was steht da denn drauf?
Naja ich glaub in meinem kleinen Zimmer werd ich das ding noch nicht anschließen, erst im Großen dann
|
|
|
|
|
|
|
Internet Agentur ohne internet ab mittag is doof :O
|
|
|
|
|
|
|
| Zitat von TriggerTG
Was steht da denn drauf?
Naja ich glaub in meinem kleinen Zimmer werd ich das ding noch nicht anschließen, erst im Großen dann
| |
Ich würds ja separat in einem Raum machen, in dem man sich nicht so oft aufhält. Vor allem wo man nicht schläft oder isst.
|
|
|
|
|
|
|
Naja, so selten wie ich den Drucker benutze, wir ddas schon nicht so schlimm sein
|
|
|
|
|
|
|
| Zitat von Ashtray
Du bezweifelst die Qualität unseres betrieblichen Gesundheitsmanagements?
| | Naja, ihr betreibt Atomkraftwerke... :P
Aber einen Laserdrucker würd ich mir auch nicht ins Schlafzimmer stellen. Nicht nur wegen Gesundheitsbelastung, ich mag den Geruch nicht.
|
|
|
|
|
|
|
Boah gut, dass ich so wenig Gemüse esse!
|
|
|
|
|
|
|
| Zitat von Danzelot
| Zitat von Ashtray
Du bezweifelst die Qualität unseres betrieblichen Gesundheitsmanagements?
| | Naja, ihr betreibt Atomkraftwerke... :P
Aber einen Laserdrucker würd ich mir auch nicht ins Schlafzimmer stellen. Nicht nur wegen Gesundheitsbelastung, ich mag den Geruch nicht.
| |
Ohne Ende Atomkraftwerke! Und sogar Kernkraftwerke! Gegen die Atomkraftwerke wettern ja alle, wahrscheinlich wegen dem CO2!
|
|
|
|
|
|
|
| Zitat von Ashtray
Du bezweifelst die Qualität unseres betrieblichen Gesundheitsmanagements?
| |
Ich Zweifel vor allem daran, dass dein Arbeitgeber eine Feinstaubstudie veröffentlichen, die seine Kraftwerke in schlechtem Licht dahstehen lassen.
|
|
|
|
|
|
|
| Zitat von Smoking
| Zitat von Ashtray
Du bezweifelst die Qualität unseres betrieblichen Gesundheitsmanagements?
| |
Ich Zweifel vor allem daran, dass dein Arbeitgeber eine Feinstaubstudie veröffentlichen, die seine Kraftwerke in schlechtem Licht dahstehen lassen.
| |
Die Kraftwerke sind das geringste Problem, die Tagebaue sind schlimmer!
Und ich spreche von einer Gefährdungsbeurteilung für Drucker!
|
|
|
|
|
|
|
| Zitat von Ashtray
| Zitat von Smoking
| Zitat von Ashtray
Du bezweifelst die Qualität unseres betrieblichen Gesundheitsmanagements?
| |
Ich Zweifel vor allem daran, dass dein Arbeitgeber eine Feinstaubstudie veröffentlichen, die seine Kraftwerke in schlechtem Licht dahstehen lassen.
| |
Die Kraftwerke sind das geringste Problem, die Tagebaue sind schlimmer!
...
| |
Keine gute Argumentation.
|
|
|
|
|
|
|
Spielt hier jemand Schach? Lust auf eine Partie auf chessmail.de?
|
|
|
|
|
|
|
| Zitat von Smoking
| Zitat von Ashtray
| Zitat von Smoking
| Zitat von Ashtray
Du bezweifelst die Qualität unseres betrieblichen Gesundheitsmanagements?
| |
Ich Zweifel vor allem daran, dass dein Arbeitgeber eine Feinstaubstudie veröffentlichen, die seine Kraftwerke in schlechtem Licht dahstehen lassen.
| |
Die Kraftwerke sind das geringste Problem, die Tagebaue sind schlimmer!
...
| |
Keine gute Argumentation.
| |
Ich arbeite auch nicht in der Presseabteilung!
|
|
|
|
|
|
|
|
|
|
|
Soo, lernen fertig.
Ich hoffe das zahlt sich morgen aus... Schnauze voll
|
|
|
|
|
|
|
meine meinung zu den bretterbuden die die da häuser nennen!
|
|
|
|
|
|
|
|
|
|
|
| Zitat von Ashtray
meine meinung zu den bretterbuden die die da häuser nennen!
| |
Das mit den Holzbauten in Tornado-Gebieten in den USA hab ich auch bis heute nicht verstanden.
Hier gabs das letzte "große" Beben 1978 (5,7 auf der Richterskala) und jährlich kleiner Beben. Jährlich gibts vielleicht 1 oder 2 Beben irgendwo um die Stärke 3. Hier darfste gar nichts andere bauen, als Erdbeben sichere Massivhäuser.
Da frag ich mich doch, warum in einem (zugegebenermaßen großen Gebiet) die Leute doch immer wieder Pokern. Obwohl alljährlich die Tornados durch USA ziehen...
|
|
|
|
|
|
Thema: Gehirnsalat ( wir unter uns ) |