Skip to content

Commit 441349a

Browse files
author
Harrison Ifeanyichukwu
committed
fix: fix whitespace handling of processing instructions and document type nodes
1 parent d81c956 commit 441349a

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/modules/Serializer.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -312,8 +312,10 @@ export default class Serializser {
312312
if (requireWellFormed && !this.validatePIData(node.data))
313313
throw new Error(node.data + ' contains invalid processing instruction character values');
314314

315+
let target = this.preserveWhiteSpace? node.target : node.target.trim(),
316+
data = this.preserveWhiteSpace? node.data : node.data.trim();
315317
//STEP 4
316-
let markup = `<?${node.target} ${node.data}?>`;
318+
let markup = `<?${target} ${data}?>`;
317319

318320
//STEP 4
319321
return markup;
@@ -337,24 +339,26 @@ export default class Serializser {
337339
throw new Error(docType.systemId + ' contains invalid xml document systemId character value');
338340

339341
//STEP 3, 4, 5
340-
let markup = '<!DOCTYPE ';
342+
let markup = '<!DOCTYPE ',
343+
publicId = this.preserveWhiteSpace? docType.publicId : docType.publicId.trim(),
344+
systemId = this.preserveWhiteSpace? docType.systemId : docType.systemId.trim();
341345

342-
if (docType.publicId === '' && docType.systemId === '' && /^html$/i.test(docType.name))
346+
if (publicId === '' && systemId === '' && /^html$/i.test(docType.name))
343347
markup += docType.name.toLowerCase();
344348
else
345349
markup += docType.name;
346350

347351
//STEP 7
348-
if (docType.publicId !== '')
349-
markup += ` PUBLIC "${docType.publicId}"`;
352+
if (publicId !== '')
353+
markup += ` PUBLIC "${publicId}"`;
350354

351355
//STEP 8
352-
if (docType.systemId !== '' && docType.publicId === '')
356+
if (systemId !== '' && publicId === '')
353357
markup += ` SYSTEM`;
354358

355359
//STEP 9
356-
if (docType.systemId !== '')
357-
markup += ` "${docType.systemId}"`;
360+
if (systemId !== '')
361+
markup += ` "${systemId}"`;
358362

359363
//STEP 10
360364
markup += '>';

0 commit comments

Comments
 (0)