"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. */ Object.defineProperty(exports, "__esModule", { value: true }); var error_1 = require("../error"); var validate_1 = require("../validate"); /** * Represents a processing instruction. * * A processing instruction is structured as follows, where `{target}` and * `{content}` are the target and content of the processing instruction * respectively: * * ```xml * <?{target} {content}?> * ``` */ var XmlProcInst = /** @class */ (function () { function XmlProcInst(parent, validation, options) { this._validation = validation; this._parent = parent; this.content = options.content; this.target = options.target; } Object.defineProperty(XmlProcInst.prototype, "content", { /** * Gets the content of this processing instruction. */ get: function () { return this._content; }, /** * Sets the content of this processing instruction. */ set: function (content) { if (!(0, validate_1.isUndefined)(content)) { if (this._validation && !(0, validate_1.validateChar)(content)) { throw new Error((0, error_1.getContext)(this.up()) + ": processing" + (" instruction content \"" + content + "\" should") + " not contain characters not allowed in XML"); } else if (this._validation && content.indexOf("?>") !== -1) { throw new Error((0, error_1.getContext)(this.up()) + ": processing" + (" instruction content \"" + content + "\" should") + " not contain the string '?>'"); } } this._content = content; }, enumerable: false, configurable: true }); Object.defineProperty(XmlProcInst.prototype, "target", { /** * Gets the target of this processing instruction. */ get: function () { return this._target; }, /** * Sets the content of this processing instruction. */ set: function (target) { if (this._validation && !(0, validate_1.validateName)(target)) { throw new Error((0, error_1.getContext)(this.up()) + ": processing" + (" instruction target \"" + target + "\" should") + " not contain characters not allowed in XML" + " names"); } if (this._validation && target === "xml") { throw new Error((0, error_1.getContext)(this.up()) + ": processing" + (" instruction target \"" + target + "\" should") + " not be the string 'xml'"); } this._target = target; }, enumerable: false, configurable: true }); /** * Returns an XML string representation of this processing instruction. */ XmlProcInst.prototype.toString = function () { if ((0, validate_1.isUndefined)(this._content)) { return "<?" + this._target + "?>"; } else { return "<?" + this._target + " " + this._content + "?>"; } }; /** * Returns the parent of this processing instruction. */ XmlProcInst.prototype.up = function () { return this._parent; }; return XmlProcInst; }()); exports.default = XmlProcInst;