User since
2012-10-02
20
articles
BenutzerIn
Namd.
Ich nutze HTML::TreeBuilder um meinen HTML-Kram etwas aufzuhübschen und Fehler zu suchen. Meistens möchte ich, das HTML-Entities nicht angefasst werden.
Zur Ausgabe mit etwas lesbarerer Formatierung verwende ich keine der Dump-Methoden von HTML::Element sondern HTML::PrettyPrinter. Das funktioniert prinzipiell auch, nur passiert es, das einige|bestimmte|alle HTML-Entities zerschossen werden.
So wird aus — ein — oder aus Ω wird Ω
Das kann natürlich bei der Ausgabe als Webseite dann nix mehr werden. Was da passiert ist mir schon klar - irgendwer denkt 'Oh, da steht ein unadorned &, das muss ich in ne Entity umwandeln'. Was Quatsch ist...
HTML::PrettyPrinter verwendet HTML::Entities, das widerum hat die o.g. Entities selbstverständlich drin und 'sollte' diese erkennen.
HTML::PrettyPrinter hat einen 'Common' Parameter namens 'entities', da steht:
> The string contains all characters that are escaped to their
> entity names. Default is the bare minimum of "&<>" plus the
> non breaking space 'nbsp' (because otherwise it is difficult
> for the human eye to distiguish it from a normal space in
> most editors).
Ich habe damit rumprobiert und mal das Default belassen, mal alle Umlaute plus die beiden o.g. Entities reingeschrieben, alles ohne Effekt auf den beschriebenen Fehler.
Gebe ich den Tree mit der as_HTML Methode von HTML::Element aus, bleiben die Entities so erhalten wie ich es will. Aber dann halt ohne die Formatierung, die ich gerne hätte...
Nun hat das HTML::PrettyPrinter Modul seit 14 Jahren kein Update mehr erfahren... Da frage ich mich auch, ob ich mich überhaupt noch damit befassen, oder eine andere Lösung suchen soll. Meinungen dazu?
Ich habe mir den Quelltext mal angeguckt und überlegt ob ich das Modul übernehmen sollte, scheue davor aber etwas zurück. Um das für html5 fit zu machen wäre wohl recht viel Aufwand nötig, auch an anderen Modulen.
Ansonsten interessiert mich natürlich ob jemand dieses Problem kennt und ob es eine Abhilfe gibt. Derzeit benutze ich einen Workaround indem ich die Ausgabe in einen String mache, und dann alle betroffenen Entities mit s// ersetze. Nicht schön und langfristig fehleranfällig, aber was besseres habe ich gerade nicht.
Danke & Gruß,
Britzel