Rendering Klartext als HTML pflegen whitespace – ohne <pre>

Jede beliebige text-Datei voll druckbaren Zeichen, wie kann ich das ins HTML-Format konvertiert, das wäre gerendert genau das gleiche (mit den folgenden Anforderungen)?

  • Sich nicht auf alle, aber die Standard-HTML-whitespace-Regeln
    • Keine <pre> tag
    • Keine CSS - white-space Regeln
  • <p> - tags sind in Ordnung, aber nicht erforderlich (<br />s und/oder <div>s sind in Ordnung)
  • Leerzeichen werden beibehalten, genau.

    Angesichts der folgenden Zeilen von Eingabe (ignorieren fehlerhafter auto-syntax-highlighting):

    Line one
        Line two, indented    four spaces

    Einem browser Rendern soll die Ausgabe genau die gleiche, die Aufrechterhaltung der Einrückung der zweiten Zeile und die Lücke zwischen "eingerückt" und "Räume". Natürlich bin ich nicht eigentlich auf der Suche nach nicht-proportional-Ausgang, und die Schrift ist orthogonal zu den Algorithmus/markup.

    Gegeben, die zwei Zeilen als eine vollständige input-Datei, Beispiel die korrekte Ausgabe wäre dann:

    Line one<br />&nbsp;&nbsp;&nbsp;&nbsp;Line two, 
    indented&nbsp;&nbsp;&nbsp; four spaces
  • Weichen Umbruch im browser ist wünschenswert. Das heißt, der resultierende HTML-Code sollte nicht erzwingen, dass der Benutzer scrollen, auch wenn der Eingabe-Linien sind breiter als Ihre viewport (vorausgesetzt, die einzelnen Wörter sind immer noch die Verengung, als sagte viewport).

Ich bin auf der Suche nach vollständig definiert Algorithmus. Bonus-Punkte für die Umsetzung in python oder javascript.

(Bitte nicht nur die Antwort, dass ich mit sollte <pre> - tags oder CSS - white-space Regel, als die meinen Anforderungen Rendern dieser Optionen unhaltbar. Bitte auch nicht posten ungetestet und/oder naive Vorschläge wie "ersetzen Sie alle Leerzeichen mit &nbsp;." Nach alle, ich bin zuversichtlich, dass eine Lösung technisch möglich ist — es ist ein Interessantes problem, nicht Sie denken?)

  • Was ist Los mit "ersetzen Sie alle Leerzeichen mit &nbsp;"? Frage nur, ist es das erste, was mir in den Sinn kam - natürlich würden Sie auch ersetzen müssen Zeilenumbrüche mit <br> und expandiere tabs irgendwie.
  • "es ist ein Interessantes problem, meinst du nicht?" - nicht wirklich. Es ist ein problem, das bereits gelöst, für Sie in mehr als einer Hinsicht.
  • wahrscheinlich, weil diese nicht zulassen, browser-wrap lange Zeilen
  • Sind Sie nur besorgt mit Leerzeichen an den Anfang der Zeile, oder wollen Sie bewahren die Positionierung des Textes innerhalb der Zeile? Oder, in anderen Worten, gibt es Spalten in Ihrem text, den Sie beibehalten möchten?
  • Ich bin extrem neugierig, was mögliche Beschränkungen verbieten konnte all die offensichtlichen und legitime Lösungen, die es gibt.
  • Überall in der Zeile, Leerzeichen und bewahrt werden sollte — mit der Ausnahme, dass der browser sollte in der Lage sein, um soft-Zeilenumbruch", um genau zu sein.
  • Zum Beispiel, wenn Sie mit contentEditable einigen Browsern (Firefox) komplett choke, wenn der content hat keine, aber die Standard - white-space interpretation.
  • Warum dann nicht einfach <pre> - tags?
  • Da der text in <pre> tags nicht soft-wrap, und Sie hätte wahrscheinlich das gleiche Problem, bei Firefox unter contentEditable - Modus.
  • Ich habe eine harte Zeit, die nicht Lesen von Ihrem Kommentar als unnötig douche-y und anmaßend.
  • H. - Ihr problem selbst ist unnötig (und langweilig imo). Das besagt meiner Meinung nach aber nicht douche-y. Nehmen Sie nicht die Dinge so persönlich.
  • problem ist unnötig." Sie weiß nicht, dass. Der naive Lösungen, die ich oben erwähnt sind unhaltbar, die aufgrund von Einschränkungen oben angedeutet. Wenn die Lösung ist so offensichtlich, bitte beantworten!

InformationsquelleAutor Alan H. | 2011-02-15
Schreibe einen Kommentar