Added PeerJs error handlers
This commit is contained in:
parent
03d652f70b
commit
8fcd8f6809
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
!function n(e,t,r){function o(u,s){if(!t[u]){if(!e[u]){var c="function"==typeof require&&require;if(!s&&c)return c(u,!0);if(i)return i(u,!0);throw new Error("Cannot find module '"+u+"'")}var f=t[u]={exports:{}};e[u][0].call(f.exports,function(n){var t=e[u][1][n];return o(t?t:n)},f,f.exports,n,e,t,r)}return t[u].exports}for(var i="function"==typeof require&&require,u=0;u<r.length;u++)o(r[u]);return o}({1:[function(n,e){var t;t=function(){var n,e,t;return t=null,2===arguments.length?(t=new Peer(arguments[0]),e=arguments[1]):(t=new Peer(arguments[0],arguments[1]),e=arguments[2]),n=function(){function n(n,e,r,o){var i;this.engine=n,this.HB=e,this.execution_listener=r,this.yatta=o,this.peer=t,this.connections={},this.peer.on("connection",function(n){return function(e){return n.addConnection(e)}}(this)),i=function(n){return function(e){var t,r,o,i;if(e.uid.creator===n.HB.getUserId()&&"string"!=typeof e.uid.op_number){o=n.connections,i=[];for(r in o)t=o[r],i.push(t.send({op:e}));return i}}}(this),this.execution_listener.push(i)}return n.prototype.connectToPeer=function(n){return null==this.connections[n]&&n!==this.yatta.getUserId()?this.addConnection(t.connect(n)):void 0},n.prototype.getAllConnectionIds=function(){var n,e;e=[];for(n in this.connections)e.push(n);return e},n.prototype.addConnection=function(n){var e,t,r;return this.connections[n.peer]=n,t=!1,e=!1,n.on("data",function(r){return function(o){var i,u,s,c,f;if("empty_message"===o);else{if(null!=o.HB)return t=!0,r.engine.applyOpsCheckDouble(o.HB),n.send({conns:r.getAllConnectionIds()});if(null!=o.op)return r.engine.applyOp(o.op);if(null!=o.conns){for(c=o.conns,f=[],u=0,s=c.length;s>u;u++)i=c[u],f.push(r.connectToPeer(i));return f}if(null==o.state_vector)throw new Error("Can't parse this operation");if(!e)return n.send({HB:r.yatta.getHistoryBuffer()._encode(o.state_vector)}),e=!0}}}(this)),r=function(e){return function(){return n.send({state_vector:e.HB.getOperationCounter()}),t?void 0:setTimeout(r,100)}}(this),r()},n}(),t.on("open",function(t){return e(n,t)})},e.exports=t,"undefined"!=typeof window&&null!==window&&(null==window.Y&&(window.Y={}),window.Y.createPeerJsConnector=t)},{}]},{},[1]);
|
!function n(e,t,r){function o(u,c){if(!t[u]){if(!e[u]){var s="function"==typeof require&&require;if(!c&&s)return s(u,!0);if(i)return i(u,!0);throw new Error("Cannot find module '"+u+"'")}var f=t[u]={exports:{}};e[u][0].call(f.exports,function(n){var t=e[u][1][n];return o(t?t:n)},f,f.exports,n,e,t,r)}return t[u].exports}for(var i="function"==typeof require&&require,u=0;u<r.length;u++)o(r[u]);return o}({1:[function(n,e){var t;t=function(){var n,e,t;return t=null,2===arguments.length?(t=new Peer(arguments[0]),e=arguments[1]):(t=new Peer(arguments[0],arguments[1]),t.on("error",function(n){throw new Error("Peerjs connector: "+n)}),t.on("disconnected",function(){throw new Error("Peerjs connector disconnected from signalling server. Cannot accept new connections. Not fatal, but not so good either..")}),e=arguments[2]),n=function(){function n(n,e,r,o){var i;this.engine=n,this.HB=e,this.execution_listener=r,this.yatta=o,this.peer=t,this.connections={},this.peer.on("connection",function(n){return function(e){return n.addConnection(e)}}(this)),i=function(n){return function(e){var t,r,o,i;if(e.uid.creator===n.HB.getUserId()&&"string"!=typeof e.uid.op_number){o=n.connections,i=[];for(r in o)t=o[r],i.push(t.send({op:e}));return i}}}(this),this.execution_listener.push(i)}return n.prototype.connectToPeer=function(n){return null==this.connections[n]&&n!==this.yatta.getUserId()?this.addConnection(t.connect(n)):void 0},n.prototype.getAllConnectionIds=function(){var n,e;e=[];for(n in this.connections)e.push(n);return e},n.prototype.addConnection=function(n){var e,t,r;return this.connections[n.peer]=n,t=!1,e=!1,n.on("data",function(r){return function(o){var i,u,c,s,f;if("empty_message"===o);else{if(null!=o.HB)return t=!0,r.engine.applyOpsCheckDouble(o.HB),n.send({conns:r.getAllConnectionIds()});if(null!=o.op)return r.engine.applyOp(o.op);if(null!=o.conns){for(s=o.conns,f=[],u=0,c=s.length;c>u;u++)i=s[u],f.push(r.connectToPeer(i));return f}if(null==o.state_vector)throw new Error("Can't parse this operation");if(!e)return n.send({HB:r.yatta.getHistoryBuffer()._encode(o.state_vector)}),e=!0}}}(this)),r=function(e){return function(){return n.send({state_vector:e.HB.getOperationCounter()}),t?void 0:setTimeout(r,100)}}(this),r()},n}(),t.on("open",function(t){return e(n,t)})},e.exports=t,"undefined"!=typeof window&&null!==window&&(null==window.Y&&(window.Y={}),window.Y.createPeerJsConnector=t)},{}]},{},[1]);
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
build/browser/Frameworks/XmlFramework.min.js
vendored
4
build/browser/Frameworks/XmlFramework.min.js
vendored
File diff suppressed because one or more lines are too long
@ -9,6 +9,12 @@
|
|||||||
callback = arguments[1];
|
callback = arguments[1];
|
||||||
} else {
|
} else {
|
||||||
peer = new Peer(arguments[0], arguments[1]);
|
peer = new Peer(arguments[0], arguments[1]);
|
||||||
|
peer.on('error', function(err) {
|
||||||
|
throw new Error("Peerjs connector: " + err);
|
||||||
|
});
|
||||||
|
peer.on('disconnected', function() {
|
||||||
|
throw new Error("Peerjs connector disconnected from signalling server. Cannot accept new connections. Not fatal, but not so good either..");
|
||||||
|
});
|
||||||
callback = arguments[2];
|
callback = arguments[2];
|
||||||
}
|
}
|
||||||
PeerJsConnector = (function() {
|
PeerJsConnector = (function() {
|
||||||
|
File diff suppressed because one or more lines are too long
@ -255,8 +255,8 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
addPropertyListener = function(event, op) {
|
addPropertyListener = function(event, op) {
|
||||||
repl_manager.parent.callEvent('addProperty', property_name, op);
|
repl_manager.deleteListener('addProperty', addPropertyListener);
|
||||||
return repl_manager.deleteListener('addProperty', addPropertyListener);
|
return repl_manager.parent.callEvent('addProperty', property_name, op);
|
||||||
};
|
};
|
||||||
this.on('insert', addPropertyListener);
|
this.on('insert', addPropertyListener);
|
||||||
return ReplaceManager.__super__.setParent.call(this, parent);
|
return ReplaceManager.__super__.setParent.call(this, parent);
|
||||||
|
File diff suppressed because one or more lines are too long
@ -28,17 +28,21 @@
|
|||||||
XmlType = (function(_super) {
|
XmlType = (function(_super) {
|
||||||
__extends(XmlType, _super);
|
__extends(XmlType, _super);
|
||||||
|
|
||||||
function XmlType(uid, tagname, attributes, elements, xml, prev, next, origin) {
|
function XmlType(uid, tagname, attributes, elements, xml) {
|
||||||
var attr, element, i, last, n, word, _i, _j, _len, _ref, _ref1;
|
var attr, element, i, n, word, _i, _j, _len, _ref, _ref1;
|
||||||
this.tagname = tagname;
|
this.tagname = tagname;
|
||||||
this.xml = xml;
|
this.xml = xml;
|
||||||
if ((prev != null) && (next == null) && (prev.type != null)) {
|
|
||||||
while (prev.isDeleted()) {
|
/* In case you make this instanceof Insert again
|
||||||
prev = prev.prev_cl;
|
if prev? and (not next?) and prev.type?
|
||||||
}
|
* adjust what you actually mean. you want to insert after prev, then
|
||||||
next = prev.next_cl;
|
* next is not defined. but we only insert after non-deleted elements.
|
||||||
}
|
* This is also handled in TextInsert.
|
||||||
XmlType.__super__.constructor.call(this, uid, prev, next, origin);
|
while prev.isDeleted()
|
||||||
|
prev = prev.prev_cl
|
||||||
|
next = prev.next_cl
|
||||||
|
*/
|
||||||
|
XmlType.__super__.constructor.call(this);
|
||||||
if ((attributes != null) && (elements != null)) {
|
if ((attributes != null) && (elements != null)) {
|
||||||
this.saveOperation('attributes', attributes);
|
this.saveOperation('attributes', attributes);
|
||||||
this.saveOperation('elements', elements);
|
this.saveOperation('elements', elements);
|
||||||
@ -66,8 +70,7 @@
|
|||||||
word.push(n.textContent);
|
word.push(n.textContent);
|
||||||
this.elements.push(word);
|
this.elements.push(word);
|
||||||
} else if (n.nodeType === n.ELEMENT_NODE) {
|
} else if (n.nodeType === n.ELEMENT_NODE) {
|
||||||
last = this.elements.end;
|
element = new XmlType(void 0, void 0, void 0, void 0, n);
|
||||||
element = new XmlType(void 0, void 0, void 0, void 0, n, last.prev_cl, last);
|
|
||||||
HB.addOperation(element).execute();
|
HB.addOperation(element).execute();
|
||||||
this.elements.push(element);
|
this.elements.push(element);
|
||||||
} else {
|
} else {
|
||||||
@ -102,8 +105,9 @@
|
|||||||
} else {
|
} else {
|
||||||
prev = this._yatta.elements.end.prev_cl;
|
prev = this._yatta.elements.end.prev_cl;
|
||||||
}
|
}
|
||||||
element = new XmlType(void 0, void 0, void 0, void 0, insertedNode, prev);
|
element = new XmlType(void 0, void 0, void 0, void 0);
|
||||||
return HB.addOperation(element).execute();
|
HB.addOperation(element).execute();
|
||||||
|
return this.elements.insertAfter(prev, element);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -161,19 +165,14 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
XmlType.prototype._encode = function() {
|
XmlType.prototype._encode = function() {
|
||||||
var json, _ref, _ref1, _ref2;
|
var json;
|
||||||
json = {
|
json = {
|
||||||
'type': this.type,
|
'type': this.type,
|
||||||
'attributes': this.attributes.getUid(),
|
'attributes': this.attributes.getUid(),
|
||||||
'elements': this.elements.getUid(),
|
'elements': this.elements.getUid(),
|
||||||
'tagname': this.tagname,
|
'tagname': this.tagname,
|
||||||
'uid': this.getUid(),
|
'uid': this.getUid()
|
||||||
'prev': (_ref = this.prev_cl) != null ? _ref.getUid() : void 0,
|
|
||||||
'next': (_ref1 = this.next_cl) != null ? _ref1.getUid() : void 0
|
|
||||||
};
|
};
|
||||||
if (this.origin !== this.prev_cl) {
|
|
||||||
json["origin"] = (_ref2 = this.origin) != null ? _ref2.getUid() : void 0;
|
|
||||||
}
|
|
||||||
return json;
|
return json;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -181,9 +180,9 @@
|
|||||||
|
|
||||||
})(types.Insert);
|
})(types.Insert);
|
||||||
parser['XmlType'] = function(json) {
|
parser['XmlType'] = function(json) {
|
||||||
var attributes, elements, next, origin, prev, tagname, uid;
|
var attributes, elements, tagname, uid;
|
||||||
uid = json['uid'], attributes = json['attributes'], elements = json['elements'], tagname = json['tagname'], prev = json['prev'], next = json['next'], origin = json['origin'];
|
uid = json['uid'], attributes = json['attributes'], elements = json['elements'], tagname = json['tagname'];
|
||||||
return new XmlType(uid, tagname, attributes, elements, void 0, prev, next, origin);
|
return new XmlType(uid, tagname, attributes, elements, void 0);
|
||||||
};
|
};
|
||||||
types['XmlType'] = XmlType;
|
types['XmlType'] = XmlType;
|
||||||
return json_types;
|
return json_types;
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -271,7 +271,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -302,7 +302,7 @@ data from the received intent.</p>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -335,7 +335,7 @@ JsonFramework was initialized (Depending on the HistoryBuffer implementation).</
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -466,7 +466,7 @@ if (x.type === "JsonType") {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -139,7 +139,7 @@ console.log(w.newProperty == "Awesome") # true!</code></pre>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -222,7 +222,7 @@ on how to do that with urls.</p>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -356,7 +356,7 @@ JsonFramework was initialized (Depending on the HistoryBuffer implementation).</
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -455,7 +455,7 @@ yatta.bind(textbox);</code></pre>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -151,7 +151,7 @@ Use it in order to check whether this is an xml-type or something else.</p>
|
|||||||
<p class='signature' id='constructor-dynamic'>
|
<p class='signature' id='constructor-dynamic'>
|
||||||
#
|
#
|
||||||
(void)
|
(void)
|
||||||
<b>constructor</b><span>(uid, tagname, attributes, elements, xml, prev, next, origin)</span>
|
<b>constructor</b><span>(uid, tagname, attributes, elements, xml)</span>
|
||||||
<br>
|
<br>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -252,7 +252,7 @@ This result can be send to other clients.</p>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -70,7 +70,7 @@ But I would become really motivated if you gave me some feedback :) (<a href="ht
|
|||||||
<ul>
|
<ul>
|
||||||
<li>XML support</li>
|
<li>XML support</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2 id="support">Support</h2><p>Please report any issues to the <a href="https://github.com/DadaMonad/Yatta/issues">Github issue page</a>!</p><h2 id="license">License</h2><p>Yatta! is licensed under the <a href="./LICENSE.txt">MIT License</a>.</p><a href="mailto:kevin.jahns@rwth-aachen.de">kevin.jahns@rwth-aachen.de</a>
|
<h2 id="support">Support</h2><p>Please report any issues to the <a href="https://github.com/DadaMonad/Yatta/issues">Github issue page</a>!</p><h2 id="license">License</h2><p>Yatta! is licensed under the <a href="./LICENSE.txt">MIT License</a>.</p><a href="mailto:kevin.jahns@rwth-aachen.de">kevin.jahns@rwth-aachen.de</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -79,7 +79,7 @@ But I would become really motivated if you gave me some feedback :) (<a href="ht
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -100,7 +100,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -158,7 +158,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -65,7 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 29, 14 09:30:23 by
|
September 29, 14 11:05:22 by
|
||||||
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
<a href='https://github.com/coffeedoc/codo' title='CoffeeScript API documentation generator'>
|
||||||
Codo
|
Codo
|
||||||
</a>
|
</a>
|
||||||
|
@ -15,6 +15,10 @@ createPeerJsConnector = ()->
|
|||||||
callback = arguments[1]
|
callback = arguments[1]
|
||||||
else
|
else
|
||||||
peer = new Peer arguments[0], arguments[1]
|
peer = new Peer arguments[0], arguments[1]
|
||||||
|
peer.on 'error', (err)->
|
||||||
|
throw new Error "Peerjs connector: #{err}"
|
||||||
|
peer.on 'disconnected', ()->
|
||||||
|
throw new Error "Peerjs connector disconnected from signalling server. Cannot accept new connections. Not fatal, but not so good either.."
|
||||||
callback = arguments[2]
|
callback = arguments[2]
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +21,8 @@ module.exports = (HB)->
|
|||||||
#
|
#
|
||||||
class XmlType extends types.Insert
|
class XmlType extends types.Insert
|
||||||
|
|
||||||
constructor: (uid, @tagname, attributes, elements, @xml, prev, next, origin)->
|
constructor: (uid, @tagname, attributes, elements, @xml)->
|
||||||
|
### In case you make this instanceof Insert again
|
||||||
if prev? and (not next?) and prev.type?
|
if prev? and (not next?) and prev.type?
|
||||||
# adjust what you actually mean. you want to insert after prev, then
|
# adjust what you actually mean. you want to insert after prev, then
|
||||||
# next is not defined. but we only insert after non-deleted elements.
|
# next is not defined. but we only insert after non-deleted elements.
|
||||||
@ -29,8 +30,9 @@ module.exports = (HB)->
|
|||||||
while prev.isDeleted()
|
while prev.isDeleted()
|
||||||
prev = prev.prev_cl
|
prev = prev.prev_cl
|
||||||
next = prev.next_cl
|
next = prev.next_cl
|
||||||
|
###
|
||||||
|
|
||||||
super uid, prev, next, origin
|
super()
|
||||||
|
|
||||||
if attributes? and elements?
|
if attributes? and elements?
|
||||||
@saveOperation 'attributes', attributes
|
@saveOperation 'attributes', attributes
|
||||||
@ -56,8 +58,7 @@ module.exports = (HB)->
|
|||||||
word.push n.textContent
|
word.push n.textContent
|
||||||
@elements.push word
|
@elements.push word
|
||||||
else if n.nodeType is n.ELEMENT_NODE
|
else if n.nodeType is n.ELEMENT_NODE
|
||||||
last = @elements.end
|
element = new XmlType undefined, undefined, undefined, undefined, n
|
||||||
element = new XmlType undefined, undefined, undefined, undefined, n, last.prev_cl, last
|
|
||||||
HB.addOperation(element).execute()
|
HB.addOperation(element).execute()
|
||||||
@elements.push element
|
@elements.push element
|
||||||
else
|
else
|
||||||
@ -88,8 +89,9 @@ module.exports = (HB)->
|
|||||||
prev = next.prev_cl
|
prev = next.prev_cl
|
||||||
else
|
else
|
||||||
prev = @_yatta.elements.end.prev_cl
|
prev = @_yatta.elements.end.prev_cl
|
||||||
element = new XmlType undefined, undefined, undefined, undefined, insertedNode, prev
|
element = new XmlType undefined, undefined, undefined, undefined
|
||||||
HB.addOperation(element).execute()
|
HB.addOperation(element).execute()
|
||||||
|
@elements.insertAfter prev, element
|
||||||
|
|
||||||
val: (enforce = false)->
|
val: (enforce = false)->
|
||||||
if document?
|
if document?
|
||||||
@ -104,11 +106,12 @@ module.exports = (HB)->
|
|||||||
|
|
||||||
e = @elements.beginning.next_cl
|
e = @elements.beginning.next_cl
|
||||||
while e.type isnt "Delimiter"
|
while e.type isnt "Delimiter"
|
||||||
if not e.isDeleted()
|
n = e.content
|
||||||
if e.type is "XmlType"
|
if not n.isDeleted()
|
||||||
@xml.appendChild e.val(enforce)
|
if n.type is "XmlType"
|
||||||
else if e.type is "WordType"
|
@xml.appendChild n.val(enforce)
|
||||||
text_node = document.createTextNode e.val()
|
else if n.type is "WordType"
|
||||||
|
text_node = document.createTextNode n.val()
|
||||||
@xml.appendChild text_node
|
@xml.appendChild text_node
|
||||||
else
|
else
|
||||||
throw new Error "Internal structure cannot be transformed to dom"
|
throw new Error "Internal structure cannot be transformed to dom"
|
||||||
@ -153,11 +156,8 @@ module.exports = (HB)->
|
|||||||
'elements' : @elements.getUid()
|
'elements' : @elements.getUid()
|
||||||
'tagname' : @tagname
|
'tagname' : @tagname
|
||||||
'uid' : @getUid()
|
'uid' : @getUid()
|
||||||
'prev': @prev_cl?.getUid()
|
|
||||||
'next': @next_cl?.getUid()
|
|
||||||
}
|
}
|
||||||
if @origin isnt @prev_cl
|
|
||||||
json["origin"] = @origin?.getUid()
|
|
||||||
json
|
json
|
||||||
|
|
||||||
parser['XmlType'] = (json)->
|
parser['XmlType'] = (json)->
|
||||||
@ -166,12 +166,9 @@ module.exports = (HB)->
|
|||||||
'attributes' : attributes
|
'attributes' : attributes
|
||||||
'elements' : elements
|
'elements' : elements
|
||||||
'tagname' : tagname
|
'tagname' : tagname
|
||||||
'prev': prev
|
|
||||||
'next': next
|
|
||||||
'origin' : origin
|
|
||||||
} = json
|
} = json
|
||||||
|
|
||||||
new XmlType uid, tagname, attributes, elements, undefined, prev, next, origin
|
new XmlType uid, tagname, attributes, elements, undefined
|
||||||
|
|
||||||
|
|
||||||
types['XmlType'] = XmlType
|
types['XmlType'] = XmlType
|
||||||
|
Loading…
x
Reference in New Issue
Block a user