XmlCharData.js
4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Copyright (C) 2016 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 escape_1 = require("../escape");
var utils_1 = require("../utils");
var validate_1 = require("../validate");
var XmlNode_1 = require("./XmlNode");
/**
* Represents character data in an XML document.
*
* Restricted characters, such as the ampersand (`&`), the opening angle
* bracket (`<`), and the closing angle bracket (`>`) when it appears in the
* string `]]>`, are all automatically escaped.
*
* To create an character reference or entity reference, you should use
* {@link XmlCharRef} or {@link XmlEntityRef} respectively instead.
*
* XmlCharData nodes cannot have any children.
*/
var XmlCharData = (function (_super) {
__extends(XmlCharData, _super);
/**
* Initializes a new instance of the {@link XmlCharData} class.
*
* @param charData Character data.
*/
function XmlCharData(charData) {
var _this = _super.call(this) || this;
_this.charData = charData;
return _this;
}
Object.defineProperty(XmlCharData.prototype, "charData", {
/**
* Gets the character data associated with this node.
*
* @returns The character data associated with this node.
*/
get: function () {
return this._charData;
},
/**
* Sets the character data associated with this node.
*
* @param charData Character data.
*/
set: function (charData) {
if (!utils_1.isString(charData)) {
throw new TypeError("charData should be a string");
}
else if (!validate_1.validateChar(charData)) {
throw new Error("charData should not contain characters not allowed"
+ " in XML");
}
this._charData = charData;
},
enumerable: true,
configurable: true
});
/**
* Throws an exception since {@link XmlCharData} nodes cannot have any
* children.
*
* @returns This method does not return.
*/
XmlCharData.prototype.children = function () {
throw new Error("XmlCharData nodes cannot have children");
};
/**
* Throws an exception since {@link XmlCharData} nodes cannot have any
* children.
*
* @param node This parameter is unused.
* @param index This parameter is unused.
*
* @returns This method does not return.
*/
XmlCharData.prototype.insertChild = function (node, index) {
throw new Error("XmlCharData nodes cannot have children");
};
/**
* Throws an exception since {@link XmlCharData} nodes cannot have any
* children.
*
* @param node This parameter is unused.
*
* @returns This method does not return.
*/
XmlCharData.prototype.removeChild = function (node) {
throw new Error("XmlCharData nodes cannot have children");
};
/**
* Throws an exception since {@link XmlCharData} nodes cannot have any
* children.
*
* @param index This parameter is unused.
*
* @returns This method does not return.
*/
XmlCharData.prototype.removeChildAtIndex = function (index) {
throw new Error("XmlCharData nodes cannot have children");
};
/**
* Returns an XML string representation of this node.
*
* @param options Formatting options for the string representation.
*
* @returns {string} An XML string representation of this node.
*/
XmlCharData.prototype.toString = function (options) {
if (options === void 0) { options = {}; }
var str = this.charData;
str = escape_1.escapeAmpersands(str);
str = escape_1.escapeLeftAngleBrackets(str);
str = escape_1.escapeRightAngleBracketsInCdataTerminator(str);
return str;
};
return XmlCharData;
}(XmlNode_1.default));
exports.default = XmlCharData;