Commit be8a4aca authored by Dmitry's avatar Dmitry

Исправлена проблема с регистром тегов при сериализации

parent 56fb7860
......@@ -244,8 +244,8 @@ exports.env = exports.jsdom.env = function () {
return req;
};
exports.serializeDocument = function (doc) {
return domToHtml([doc]);
exports.serializeDocument = function (doc, lowerCaseTagNames) {
return domToHtml([doc], lowerCaseTagNames);
};
function processHTML(config) {
......
......@@ -3,6 +3,10 @@
const idlUtils = require("../living/generated/utils");
class DocumentAdapter {
constructor(lowerCaseTagNames){
this.lowerCaseTagNames = lowerCaseTagNames;
}
getFirstChild (node) {
return node.childNodes[0];
}
......@@ -28,7 +32,7 @@ class DocumentAdapter {
// Node data
getTagName (element) {
return element.tagName.toLowerCase();
return this.lowerCaseTagNames?element.tagName.toLowerCase():element.tagName;
}
getNamespaceURI (element) {
......
"use strict";
const parse5 = require("parse5");
const documentAdapter = require("./documentAdapter");
const DocumentAdapter = require("./documentAdapter");
const NODE_TYPE = require("../living/node-type");
const idlUtils = require("../living/generated/utils");
const serializer = new parse5.TreeSerializer(documentAdapter);
exports.domToHtml = function (iterable) {
exports.domToHtml = function (iterable, lowerCaseTagNames) {
// Если явно не указано, то true
if(typeof lowerCaseTagNames === 'undefined') {
lowerCaseTagNames = true;
}
var documentAdapter = new DocumentAdapter(lowerCaseTagNames);
var serializer = new parse5.TreeSerializer(documentAdapter);
let ret = "";
for (const node of iterable) {
if (node.nodeType === NODE_TYPE.DOCUMENT_NODE) {
......@@ -16,4 +21,4 @@ exports.domToHtml = function (iterable) {
}
}
return ret;
};
};
\ No newline at end of file
......@@ -16,8 +16,16 @@ function loadCompleteCallback(err, window){
if(err){
console.error("Произошла ошибка при загрузке DOM: "+err.toString());
} else {
// Сериализируем DOM в строку
var serializedSvg = jsdom.serializeDocument(window.document);
/* Сериализируем DOM в строку.
* Опытным путем было выяснено, что регистр "портится" при сериализации.
* В код jsdom внесены изменения: теперь serializeDocument принимает
* необязательный аргумент, отвечающий за перевод имен тегов в нижний
* регистр. Если он не указан или же его значение равно true, то
* serializeDocument ведет себя так же, как и ранее. Если этот параметр
* равен false, то имена тегов не переводятся в нижний регистр.
* В данном случае требуется не переводить имена тегов в нижний регистр,
* поэтому передаем false вторым аргументом. */
var serializedSvg = jsdom.serializeDocument(window.document, false);
try {
fs.writeFileSync(OUTPUT_FILE, serializedSvg);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment