@journeyapps/core-xml
Advanced tools
Comparing version 0.0.0-dev.ae608c2.224c284 to 0.0.0-dev.b2396e8.9f0d873
@@ -26,5 +26,17 @@ import { XMLElement } from '@journeyapps/domparser/types'; | ||
private tagMap; | ||
/** | ||
* null means clear; undefined means unchanged. | ||
*/ | ||
private textContent; | ||
constructor(sourceElement: XMLElement, handledTags: string[]); | ||
append(sourceElement: XMLElement | null, builder: ElementBuilder): void; | ||
/** | ||
* If there is an existing text node, replace it. | ||
* If there are multiple text nodes, remove all after the first one. | ||
* If there are no text nodes, append one. | ||
* | ||
* @param text The text, or null to clear. | ||
*/ | ||
setTextContent(text: string | null): void; | ||
update(element: XMLElement): void; | ||
} |
"use strict"; | ||
function __export(m) { | ||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
} | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__export(require("./xml")); | ||
__export(require("./utils")); | ||
__export(require("./OrderedIncrementalUpdater")); | ||
__export(require("./UnorderedIncrementalUpdater")); | ||
__export(require("./pretty")); | ||
__exportStar(require("./xml"), exports); | ||
__exportStar(require("./utils"), exports); | ||
__exportStar(require("./OrderedIncrementalUpdater"), exports); | ||
__exportStar(require("./UnorderedIncrementalUpdater"), exports); | ||
__exportStar(require("./pretty"), exports); | ||
__exportStar(require("./ElementBuilder"), exports); | ||
//# sourceMappingURL=index.js.map |
"use strict"; | ||
// This is the default import for NodeJS. | ||
function __export(m) { | ||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
} | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
// Export the same values as for browsers. | ||
__export(require("./index")); | ||
__exportStar(require("./index"), exports); | ||
// Auto-configure the parser | ||
require("./domparser"); | ||
//# sourceMappingURL=node.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.OrderedIncrementalUpdater = void 0; | ||
const index_1 = require("./index"); | ||
@@ -35,2 +36,12 @@ /** | ||
} | ||
/** | ||
* If there is an existing text node, replace it. | ||
* If there are multiple text nodes, remove all after the first one. | ||
* If there are no text nodes, append one. | ||
* | ||
* @param text The text, or null to clear. | ||
*/ | ||
setTextContent(text) { | ||
this.textContent = text; | ||
} | ||
update(element) { | ||
@@ -58,2 +69,3 @@ const doc = element.ownerDocument; | ||
// 2. Merge source elements. | ||
let seenSourceText = false; | ||
if (this.sourceElement) { | ||
@@ -72,2 +84,18 @@ const sourceNodes = this.sourceElement.childNodes; | ||
} | ||
else if (index_1.isText(child) && this.textContent !== undefined) { | ||
// Skip any nodes after the first one. | ||
if (!seenSourceText) { | ||
if (this.textContent !== null) { | ||
// Replace the text | ||
const textNode = doc.createTextNode(this.textContent); | ||
if (insertBefore) { | ||
element.insertBefore(textNode, insertBefore); | ||
} | ||
else { | ||
element.appendChild(textNode); | ||
} | ||
} | ||
seenSourceText = true; | ||
} | ||
} | ||
else { | ||
@@ -86,2 +114,6 @@ // Insert before the last known one | ||
} | ||
if (!seenSourceText && this.textContent !== undefined && this.textContent !== null) { | ||
// No source text found - append text | ||
element.appendChild(doc.createTextNode(this.textContent)); | ||
} | ||
} | ||
@@ -88,0 +120,0 @@ } |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.stripWhitespace = exports.serializeToString = exports.prettyText = exports.pretty = void 0; | ||
const types_1 = require("@journeyapps/domparser/types"); | ||
@@ -13,6 +14,3 @@ const utils_1 = require("./utils"); | ||
const newDoc = document.implementation.createDocument(document.documentElement.tagName, null, null); | ||
const actualOptions = { | ||
indentSpaces: 4, | ||
...options | ||
}; | ||
const actualOptions = Object.assign({ indentSpaces: 4 }, options); | ||
for (let i = 0; i < document.childNodes.length; i++) { | ||
@@ -35,10 +33,6 @@ const child = document.childNodes.item(i); | ||
const doc = pretty(node, options); | ||
// TODO: close tags with " />". | ||
return serializeToString(doc); | ||
} | ||
else { | ||
const actualOptions = { | ||
indentSpaces: 4, | ||
...options | ||
}; | ||
const actualOptions = Object.assign({ indentSpaces: 4 }, options); | ||
const prettyElement = prettyNode(node.ownerDocument, node, actualOptions, 0); | ||
@@ -58,4 +52,3 @@ return serializeToString(prettyElement); | ||
let result = ''; | ||
if (node.firstChild && | ||
node.firstChild.nodeType == types_1.PROCESSING_INSTRUCTION_NODE) { | ||
if (node.firstChild && node.firstChild.nodeType == types_1.PROCESSING_INSTRUCTION_NODE) { | ||
// Has a processing instruction. | ||
@@ -139,3 +132,3 @@ } | ||
} | ||
filteredChildren = filteredChildren.filter(node => node != null); | ||
filteredChildren = filteredChildren.filter((node) => node != null); | ||
if (filteredChildren.length == 1 && utils_1.isText(filteredChildren[0])) { | ||
@@ -142,0 +135,0 @@ // Text on its own. Preserve whitespace. |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.serialize = exports.serializer = void 0; | ||
const types_1 = require("@journeyapps/domparser/types"); | ||
@@ -30,4 +31,3 @@ const utils_1 = require("./utils"); | ||
} | ||
if ((prefix === 'xml' && uri === 'http://www.w3.org/XML/1998/namespace') || | ||
uri == 'http://www.w3.org/2000/xmlns/') { | ||
if ((prefix === 'xml' && uri === 'http://www.w3.org/XML/1998/namespace') || uri == 'http://www.w3.org/2000/xmlns/') { | ||
return false; | ||
@@ -114,4 +114,3 @@ } | ||
} | ||
else if (node.nodeType == types_1.DOCUMENT_NODE || | ||
node.nodeType == types_1.DOCUMENT_FRAGMENT_NODE) { | ||
else if (node.nodeType == types_1.DOCUMENT_NODE || node.nodeType == types_1.DOCUMENT_FRAGMENT_NODE) { | ||
let child = node.firstChild; | ||
@@ -118,0 +117,0 @@ while (child) { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.UnorderedIncrementalUpdater = void 0; | ||
const index_1 = require("./index"); | ||
@@ -4,0 +5,0 @@ /** |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.iter = exports.setAttributes = exports.isCommentNode = exports.isCdataNode = exports.isText = exports.isElement = exports.isAttribute = exports.DOCUMENT_NODE = exports.TEXT_NODE = exports.ATTRIBUTE_NODE = exports.ELEMENT_NODE = void 0; | ||
const types_1 = require("@journeyapps/domparser/types"); | ||
@@ -13,4 +14,3 @@ // From: http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247 | ||
return (node.nodeType == exports.ATTRIBUTE_NODE || | ||
(typeof node.name == 'string' && | ||
typeof node.ownerElement == 'object')); | ||
(typeof node.name == 'string' && typeof node.ownerElement == 'object')); | ||
} | ||
@@ -17,0 +17,0 @@ exports.isAttribute = isAttribute; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.childContent = exports.childNode = exports.documentToText = exports.createDocument = exports.parse = exports.configureParser = exports.getParser = exports.validateChildren = exports.children = exports.attribute = exports.parseElement = exports.warning = exports.error = exports.attributeNode = exports.elementTextPosition = exports.attributeValuePosition = exports.getPosition = exports.getAttribute = void 0; | ||
const utils_1 = require("./utils"); | ||
@@ -60,5 +61,3 @@ let configuredParser = null; | ||
} | ||
else if (utils_1.isElement(node) && | ||
node.openStart != null && | ||
node.nameEnd != null) { | ||
else if (utils_1.isElement(node) && node.openStart != null && node.nameEnd != null) { | ||
// This is an element | ||
@@ -70,8 +69,4 @@ position.start = locator.position(node.openStart + 1); | ||
// This is an attribute | ||
var attrPosition = node.ownerElement.attributePositions == null | ||
? null | ||
: node.ownerElement.attributePositions[node.name]; | ||
if (attrPosition != null && | ||
attrPosition.valueStart != null && | ||
attrPosition.end != null) { | ||
var attrPosition = node.ownerElement.attributePositions == null ? null : node.ownerElement.attributePositions[node.name]; | ||
if (attrPosition != null && attrPosition.valueStart != null && attrPosition.end != null) { | ||
if (attrPosition.end - attrPosition.valueStart > 2) { | ||
@@ -97,4 +92,3 @@ // Exclude quotes | ||
if (locator) { | ||
if (element.attributePositions != null && | ||
element.attributePositions.hasOwnProperty(attributeName)) { | ||
if (element.attributePositions != null && element.attributePositions.hasOwnProperty(attributeName)) { | ||
var p = element.attributePositions[attributeName]; | ||
@@ -118,4 +112,3 @@ return { | ||
if (locator) { | ||
if (element.attributePositions != null && | ||
element.attributePositions.hasOwnProperty(attributeName)) { | ||
if (element.attributePositions != null && element.attributePositions.hasOwnProperty(attributeName)) { | ||
var p = element.attributePositions[attributeName]; | ||
@@ -208,3 +201,4 @@ if (start == end) { | ||
}; | ||
if (type == null) { | ||
// The specific tag exclusions if for the specs | ||
if (type == null && tag != 'context-menu' && tag != 'button') { | ||
result.type = null; | ||
@@ -277,5 +271,3 @@ result.errors.push(warning(element, "Invalid element '" + tag + "'")); | ||
if (options.indexOf(value) == -1) { | ||
var message = customMessage == null | ||
? element.name + ' must be one of ' + options | ||
: customMessage; | ||
var message = customMessage == null ? element.name + ' must be one of ' + options : customMessage; | ||
throw new Error(message); | ||
@@ -293,5 +285,3 @@ } | ||
if (options.indexOf(value) == -1) { | ||
var message = customMessage == null | ||
? element.name + ' must be one of ' + options | ||
: customMessage; | ||
var message = customMessage == null ? element.name + ' must be one of ' + options : customMessage; | ||
throw new Error(message); | ||
@@ -304,21 +294,31 @@ } | ||
return function (valuesString, element) { | ||
var values = valuesString.split(','); | ||
var invalidValues = []; | ||
Array.prototype.forEach.call(values, function (value) { | ||
if (options.indexOf(value) == -1) { | ||
invalidValues.push(value); | ||
} | ||
}); | ||
if (invalidValues.length === 0) { | ||
return validateMultiOptions(valuesString, element, options, customMessage); | ||
}; | ||
}; | ||
exports.attribute.multiOptionListWithFunctions = function multiOptionList(options, functionPrefix, customMessage) { | ||
return function (valuesString, element) { | ||
if (valuesString.indexOf(functionPrefix) === 0) { | ||
// function token expression, therefore allow | ||
return valuesString; | ||
} | ||
else { | ||
var message = 'Invalid values: ' + invalidValues + '. '; | ||
var extraMessage = customMessage == null | ||
? element.name + ' values must be from ' + options | ||
: customMessage; | ||
throw new Error(message + extraMessage); | ||
} | ||
return validateMultiOptions(valuesString, element, options, customMessage); | ||
}; | ||
}; | ||
function validateMultiOptions(valuesString, element, options, customMessage) { | ||
var values = valuesString.split(','); | ||
var invalidValues = []; | ||
values.forEach((value) => { | ||
if (options.indexOf(value) == -1) { | ||
invalidValues.push(value); | ||
} | ||
}); | ||
if (invalidValues.length === 0) { | ||
return valuesString; | ||
} | ||
else { | ||
var message = 'Invalid values: ' + invalidValues + '. '; | ||
var extraMessage = customMessage == null ? element.name + ' values must be from ' + options : customMessage; | ||
throw new Error(message + extraMessage); | ||
} | ||
} | ||
// filter can be an array of strings, or a comma-separated list | ||
@@ -387,4 +387,3 @@ function children(element, filter) { | ||
function loadDefaultParser() { | ||
if (typeof document != 'undefined' && | ||
typeof document.implementation != 'undefined') { | ||
if (typeof document != 'undefined' && typeof document.implementation != 'undefined') { | ||
configureParser({ | ||
@@ -391,0 +390,0 @@ implementation: document.implementation, |
{ | ||
"name": "@journeyapps/core-xml", | ||
"version": "0.0.0-dev.ae608c2.224c284", | ||
"version": "0.0.0-dev.b2396e8.9f0d873", | ||
"description": "Journey JS library", | ||
@@ -18,3 +18,3 @@ "main": "./dist/src/node.js", | ||
"devDependencies": { | ||
"@journeyapps/core-test-helpers": "0.0.0-dev.ae608c2.224c284" | ||
"@journeyapps/core-test-helpers": "0.0.0-dev.b2396e8.9f0d873" | ||
}, | ||
@@ -26,3 +26,3 @@ "files": [ | ||
], | ||
"gitHead": "e1cedf0b9f9515cbca7436ed517e9bbdad9560b4" | ||
"gitHead": "e386dc5767060b4d299a4715f138180c1c75bd96" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
152820
1383