123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- "use strict";
- /**
- * Copyright (C) 2016-2019 Michael Kourlas
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- var error_1 = require("../error");
- var escape_1 = require("../escape");
- var options_1 = require("../options");
- var validate_1 = require("../validate");
- var XmlAttributeText_1 = __importDefault(require("./XmlAttributeText"));
- var XmlCharRef_1 = __importDefault(require("./XmlCharRef"));
- var XmlEntityRef_1 = __importDefault(require("./XmlEntityRef"));
- /**
- * Represents an attribute.
- *
- * An attribute is part of the start tag of an element and is
- * structured as follows, where `{name}` is the name of the attribute and
- * `{value}` is the value of the attribute:
- *
- * ```xml
- * <element {name}="{value}">
- * ```
- *
- * The `{name}` value is a property of this node, while the `{value}` property
- * consists of the children of this node.
- *
- * Attributes can have an unlimited number of attribute text, character
- * references, and entity references.
- */
- var XmlAttribute = /** @class */ (function () {
- function XmlAttribute(parent, validation, options) {
- this._validation = validation;
- if (!(0, validate_1.isUndefined)(options.replaceInvalidCharsInName)) {
- this._replaceInvalidCharsInName = options.replaceInvalidCharsInName;
- }
- else {
- this._replaceInvalidCharsInName = false;
- }
- this._children = [];
- this._parent = parent;
- this.name = options.name;
- }
- Object.defineProperty(XmlAttribute.prototype, "name", {
- /**
- * Gets the name of this attribute.
- */
- get: function () {
- return this._name;
- },
- /**
- * Sets the name of this attribute.
- */
- set: function (name) {
- if (this._replaceInvalidCharsInName) {
- name = (0, validate_1.fixName)(name);
- if (name.length === 0) {
- throw new Error((0, error_1.getContext)(this.up()) + ": attribute name"
- + " should not be empty");
- }
- }
- else if (this._validation && !(0, validate_1.validateName)(name)) {
- if (name.length === 0) {
- throw new Error((0, error_1.getContext)(this.up()) + ": attribute name"
- + " should not be empty");
- }
- else {
- throw new Error((0, error_1.getContext)(this.up()) + ": attribute name"
- + (" \"" + name + "\" should not contain characters not")
- + " allowed in XML names");
- }
- }
- this._name = name;
- },
- enumerable: false,
- configurable: true
- });
- /**
- * Adds a character reference to this attribute and returns the new
- * character reference.
- */
- XmlAttribute.prototype.charRef = function (options) {
- var charRef = new XmlCharRef_1.default(this, this._validation, options);
- this._children.push(charRef);
- return charRef;
- };
- /**
- * Adds an entity reference to this attribute and returns the new entity
- * reference.
- */
- XmlAttribute.prototype.entityRef = function (options) {
- var charRef = new XmlEntityRef_1.default(this, this._validation, options);
- this._children.push(charRef);
- return charRef;
- };
- /**
- * Adds attribute text to this attribute and returns the new text.
- */
- XmlAttribute.prototype.text = function (options) {
- var textNode = new XmlAttributeText_1.default(this, this._validation, options);
- this._children.push(textNode);
- return textNode;
- };
- /**
- * Returns an XML string representation of this attribute.
- */
- XmlAttribute.prototype.toString = function (options) {
- if (options === void 0) { options = {}; }
- var optionsObj = new options_1.StringOptions(options);
- var quote = optionsObj.doubleQuotes ? "\"" : "'";
- var str = this._name + "=" + quote;
- for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
- var child = _a[_i];
- if (optionsObj.doubleQuotes) {
- str += (0, escape_1.escapeDoubleQuotes)(child.toString());
- }
- else {
- str += (0, escape_1.escapeSingleQuotes)(child.toString());
- }
- }
- str += quote;
- return str;
- };
- /**
- * Returns the parent of this attribute.
- */
- XmlAttribute.prototype.up = function () {
- return this._parent;
- };
- return XmlAttribute;
- }());
- exports.default = XmlAttribute;
|