123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- "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 options_1 = require("../options");
- var validate_1 = require("../validate");
- /**
- * Represents a declaration.
- *
- * A declaration is structured as follows, where `{version}` is the XML
- * version, `{encoding}` is the encoding of the document, and `{standalone}`
- * is either "yes" or "no", depending on whether the document may contain
- * external markup declarations:
- *
- * ```xml
- * <?xml version="{version}" encoding="{encoding}" standalone="{standalone}"?>
- * ```
- */
- var XmlDecl = /** @class */ (function () {
- function XmlDecl(parent, validation, options) {
- this._version = "1.0";
- this._validation = validation;
- this._parent = parent;
- this.encoding = options.encoding;
- this.standalone = options.standalone;
- if (!(0, validate_1.isUndefined)(options.version)) {
- this.version = options.version;
- }
- }
- Object.defineProperty(XmlDecl.prototype, "encoding", {
- /**
- * Gets the encoding associated with this declaration.
- */
- get: function () {
- return this._encoding;
- },
- /**
- * Sets the encoding associated with this declaration.
- */
- set: function (encoding) {
- if (this._validation && !(0, validate_1.isUndefined)(encoding)) {
- if (!validateEncoding(encoding)) {
- throw new Error((0, error_1.getContext)(this.up()) + ": declaration"
- + (" encoding attribute " + encoding + " should be a")
- + " valid encoding");
- }
- }
- this._encoding = encoding;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(XmlDecl.prototype, "standalone", {
- /**
- * Gets the value of the standalone attribute associated with this
- * declaration.
- */
- get: function () {
- return this._standalone;
- },
- /**
- * Sets the value of the standalone attribute associated with this
- * declaration.
- */
- set: function (standalone) {
- if (this._validation && !(0, validate_1.isUndefined)(standalone)) {
- if (standalone !== "yes" && standalone !== "no") {
- throw new Error((0, error_1.getContext)(this.up()) + ": declaration"
- + (" standalone attribute " + standalone + " should")
- + " be the string 'yes' or the string 'no'");
- }
- }
- this._standalone = standalone;
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(XmlDecl.prototype, "version", {
- /**
- * Gets the XML version associated with this declaration.
- */
- get: function () {
- return this._version;
- },
- /**
- * Sets the XML version associated with this declaration.
- */
- set: function (version) {
- if (this._validation && !validateVersion(version)) {
- throw new Error((0, error_1.getContext)(this.up()) + ": declaration version"
- + (" attribute " + version + " should be a valid XML")
- + " version");
- }
- this._version = version;
- },
- enumerable: false,
- configurable: true
- });
- /**
- * Returns an XML string representation of this declaration.
- */
- XmlDecl.prototype.toString = function (options) {
- if (options === void 0) { options = {}; }
- var optionsObj = new options_1.StringOptions(options);
- var quote = optionsObj.doubleQuotes ? '"' : "'";
- var str = "<?xml version=" + quote + this._version + quote;
- if (!(0, validate_1.isUndefined)(this._encoding)) {
- str += " encoding=" + quote + this._encoding + quote;
- }
- if (!(0, validate_1.isUndefined)(this._standalone)) {
- str += " standalone=" + quote + this._standalone + quote;
- }
- str += "?>";
- return str;
- };
- /**
- * Returns the parent of this declaration.
- */
- XmlDecl.prototype.up = function () {
- return this._parent;
- };
- return XmlDecl;
- }());
- exports.default = XmlDecl;
- /**
- * Returns true if the specified encoding only contains characters permitted by
- * the XML specification.
- */
- function validateEncoding(str) {
- if (str.length === 0) {
- return false;
- }
- var initialChar = str.charCodeAt(0);
- if (!((initialChar >= 0x41 && initialChar <= 0x5A)
- || (initialChar >= 0x61 && initialChar <= 0x7A))) {
- return false;
- }
- for (var i = 1; i < str.length; i++) {
- var char = str.charCodeAt(i);
- if (char === 0x5F
- || char === 0x2D
- || char === 0x2E
- || (char >= 0x30 && char <= 0x39)
- || (char >= 0x41 && char <= 0x5A)
- || (char >= 0x61 && char <= 0x7A)) {
- continue;
- }
- if (i + 1 === str.length) {
- return false;
- }
- return false;
- }
- return true;
- }
- /**
- * Returns true if the specified version only contains characters permitted by
- * the XML specification.
- */
- function validateVersion(str) {
- for (var i = 0; i <= 9; i++) {
- if (str === "1." + i) {
- return true;
- }
- }
- return false;
- }
|