Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80684 views
1
// w3c Load/Save functionality: http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407/
2
3
var core = require('./core').dom.level3.core;
4
var events = require('./events').dom.level3.events;
5
var createFrom = require('../utils').createFrom;
6
7
var ls = {};
8
9
// TODO: what is this?
10
//typedef dom::DOMConfiguration DOMConfiguration;
11
12
ls.LSException = function LSException(code) {
13
this.code = code;
14
};
15
16
ls.LSException.prototype = {
17
// LSExceptionCode
18
PARSE_ERR : 81,
19
SERIALIZE_ERR : 82
20
};
21
22
ls.DOMImplementationLS = function DOMImplementationLS() {
23
24
};
25
26
var DOMImplementationExtension = {
27
28
// DOMImplementationLSMode
29
MODE_SYNCHRONOUS : 1,
30
MODE_ASYNCHRONOUS : 2,
31
32
// raises(dom::DOMException);
33
createLSParser : function(/* int */ mode, /* string */ schemaType) {
34
return new ls.LSParser(mode, schemaType);
35
},
36
37
createLSSerializer : function() {
38
return new ls.LSSerializer();
39
},
40
41
createLSInput : function() {
42
return new ls.LSInput();
43
},
44
45
createLSOutput : function() {
46
return new ls.LSOutput();
47
}
48
};
49
50
Object.keys(DOMImplementationExtension).forEach(function(k, v) {
51
core.DOMImplementation.prototype[k] = DOMImplementationExtension[k];
52
});
53
54
ls.DOMImplementationLS.prototype = DOMImplementationExtension;
55
56
core.Document.getFeature = function() {
57
return DOMImplementationExtension;
58
};
59
60
ls.LSParser = function LSParser() {
61
this._domConfig = new core.DOMConfiguration();
62
};
63
ls.LSParser.prototype = {
64
get domConfig() { return this._domConfig; },
65
get filter() { return this._filter || null; },
66
set filter(value) { this._filter = value; },
67
get async() { return this._async; },
68
get busy() { return this._busy; },
69
70
// raises(dom::DOMException, LSException);
71
parse : function (/* LSInput */ input) {
72
var doc = new core.Document();
73
doc._inputEncoding = 'UTF-16';
74
return doc;
75
},
76
77
// raises(dom::DOMException, LSException);
78
parseURI : function(/* string */ uri) {
79
return new core.Document();
80
},
81
82
// ACTION_TYPES
83
ACTION_APPEND_AS_CHILDREN : 1,
84
ACTION_REPLACE_CHILDREN : 2,
85
ACTION_INSERT_BEFORE : 3,
86
ACTION_INSERT_AFTER : 4,
87
ACTION_REPLACE : 5,
88
89
// @returns Node
90
// @raises DOMException, LSException
91
parseWithContext : function(/* LSInput */ input, /* Node */ contextArg, /* int */ action) {
92
return new core.Node();
93
},
94
95
abort : function() {
96
// TODO: implement
97
}
98
};
99
100
ls.LSInput = function LSInput() {};
101
ls.LSInput.prototype = {
102
get characterStream() { return this._characterStream || null; },
103
set characterStream(value) { this._characterStream = value; },
104
get byteStream() { return this._byteStream || null; },
105
set byteStream(value) { this._byteStream = value; },
106
get stringData() { return this._stringData || null; },
107
set stringData(value) { this._stringData = value; },
108
get systemId() { return this._systemId || null; },
109
set systemId(value) { this._systemId = value; },
110
get publicId() { return this._publicId || null; },
111
set publicId(value) { this._publicId = value; },
112
get baseURI() { return this._baseURI || null; },
113
set baseURI(value) { this._baseURI = value; },
114
get encoding() { return this._encoding || null; },
115
set encoding(value) { this._encoding = value; },
116
get certifiedText() { return this._certifiedText || null; },
117
set certifiedText(value) { this._certifiedText = value; },
118
};
119
120
ls.LSResourceResolver = function LSResourceResolver() {};
121
122
// @returns LSInput
123
ls.LSResourceResolver.prototype.resolveResource = function(type, namespaceURI, publicId, systemId, baseURI) {
124
return new ls.LSInput();
125
};
126
127
ls.LSParserFilter = function LSParserFilter() {};
128
ls.LSParserFilter.prototype = {
129
130
// Constants returned by startElement and acceptNode
131
FILTER_ACCEPT : 1,
132
FILTER_REJECT : 2,
133
FILTER_SKIP : 3,
134
FILTER_INTERRUPT : 4,
135
136
get whatToShow() { return this._whatToShow; },
137
138
// @returns int
139
startElement : function(/* Element */ elementArg) {
140
return 0;
141
},
142
143
// @returns int
144
acceptNode : function(/* Node */ nodeArg) {
145
return nodeArg;
146
}
147
};
148
149
ls.LSSerializer = function LSSerializer() {
150
this._domConfig = new core.DOMConfiguration();
151
};
152
ls.LSSerializer.prototype = {
153
get domConfig() { return this._domConfig; },
154
get newLine() { return this._newLine || null; },
155
set newLine(value) { this._newLine = value; },
156
get filter() { return this._filter || null; },
157
set filter(value) { this._filter = value; },
158
159
// @returns boolean
160
// @raises LSException
161
write : function(/* Node */ nodeArg, /* LSOutput */ destination) {
162
return true;
163
},
164
165
// @returns boolean
166
// @raises LSException
167
writeToURI : function(/* Node */ nodeArg, /* string */ uri) {
168
return true;
169
},
170
171
// @returns string
172
// @raises DOMException, LSException
173
writeToString : function(/* Node */ nodeArg) {
174
return "";
175
}
176
};
177
178
ls.LSOutput = function LSOutput() {};
179
ls.LSOutput.prototype = {
180
get characterStream() { return this._characterStream || null; },
181
set characterStream(value) { this._characterStream = value; },
182
get byteStream() { return this._byteStream || null; },
183
set byteStream(value) { this._byteStream = value; },
184
get systemId() { return this._systemId || null; },
185
set systemId(value) { this._systemId = value; },
186
get encoding() { return this._encoding || null; },
187
set encoding(value) { this._encoding = value; },
188
};
189
190
ls.LSProgressEvent = function LSProgressEvent() {};
191
ls.LSProgressEvent.prototype = createFrom(events.Event, {
192
constructor: ls.LSProgressEvent,
193
get input() { return this._input; },
194
get position() { return this._position; },
195
get totalSize() { return this._totalSize; },
196
});
197
198
ls.LSLoadEvent = function LSLoadEvent() {};
199
ls.LSLoadEvent.prototype = createFrom(events.Event, {
200
get newDocument() { return this._newDocument; },
201
get input() { return this._input; },
202
});
203
204
205
// TODO: do traversal
206
ls.LSSerializerFilter = function LSSerializerFilter() {};
207
ls.LSSerializerFilter.prototype = {
208
get whatToShow() { return this._whatToShow; },
209
};
210
211
// ls.LSSerializerFilter.prototype.__proto__ = level2.traversal.NodeFiler;
212
213
// Export
214
module.exports.dom = {
215
level3 : {
216
ls : ls
217
}
218
};
219
220
221