Bug 1154295 - use normal formatting for plaintext documents in reader mode.
This commit is contained in:
parent
c1aa9d9b4c
commit
84e691b90a
|
@ -346,6 +346,11 @@ this.ReaderMode = {
|
||||||
pathBase: Services.io.newURI(".", null, doc.baseURIObject).spec
|
pathBase: Services.io.newURI(".", null, doc.baseURIObject).spec
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// convert text/plain document, if any, to XHTML format
|
||||||
|
if (this._isDocumentPlainText(doc)) {
|
||||||
|
doc = this._convertPlainTextDocument(doc);
|
||||||
|
}
|
||||||
|
|
||||||
let langAttributes = {
|
let langAttributes = {
|
||||||
charset: doc.characterSet,
|
charset: doc.characterSet,
|
||||||
lang: doc.documentElement.lang
|
lang: doc.documentElement.lang
|
||||||
|
@ -540,6 +545,43 @@ this.ReaderMode = {
|
||||||
|
|
||||||
return readingSpeed.get(lang) || readingSpeed.get("en");
|
return readingSpeed.get(lang) || readingSpeed.get("en");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Check if the document to be parsed is text document.
|
||||||
|
* @param doc the doc object to be parsed.
|
||||||
|
* @return boolean
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
_isDocumentPlainText(doc) {
|
||||||
|
return doc.contentType == "text/plain";
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* The document to be parsed is text document and is converted to HTML format.
|
||||||
|
* @param doc the doc object to be parsed.
|
||||||
|
* @return doc
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
_convertPlainTextDocument(doc) {
|
||||||
|
let preTag = doc.querySelector("pre");
|
||||||
|
let docFrag = doc.createDocumentFragment();
|
||||||
|
let content = preTag.textContent;
|
||||||
|
let paragraphs = content.split(/\r?\n\r?\n/);
|
||||||
|
for (let para of paragraphs) {
|
||||||
|
let pElem = doc.createElement("p");
|
||||||
|
let lines = para.split(/\n/);
|
||||||
|
for (let line of lines) {
|
||||||
|
pElem.append(line);
|
||||||
|
let brElem = doc.createElement("br");
|
||||||
|
pElem.append(brElem);
|
||||||
|
}
|
||||||
|
docFrag.append(pElem);
|
||||||
|
}
|
||||||
|
preTag.parentNode.replaceChild(docFrag, preTag);
|
||||||
|
return doc;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Don't try to parse the page if it has too many elements (for memory and
|
// Don't try to parse the page if it has too many elements (for memory and
|
||||||
|
|
Loading…
Reference in New Issue
Block a user