begin implementing xml support
This commit is contained in:
parent
b750d95b98
commit
977e4d2a7c
@ -74,7 +74,8 @@
|
|||||||
HistoryBuffer.prototype.getReservedUniqueIdentifier = function() {
|
HistoryBuffer.prototype.getReservedUniqueIdentifier = function() {
|
||||||
return {
|
return {
|
||||||
creator: '_',
|
creator: '_',
|
||||||
op_number: "_" + (this.reserved_identifier_counter++)
|
op_number: "_" + (this.reserved_identifier_counter++),
|
||||||
|
doSync: false
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
@ -231,24 +231,11 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
<ul>
|
|
||||||
<li class='letter'>x</li>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href='file/lib/Types/XmlTypes.coffee.html'>
|
|
||||||
XmlTypes.coffee
|
|
||||||
</a>
|
|
||||||
<small>
|
|
||||||
(lib/Types)
|
|
||||||
</small>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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>
|
||||||
|
@ -415,7 +415,7 @@ yatta.bind(textbox);</code></pre>
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id='footer'>
|
<div id='footer'>
|
||||||
September 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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 17, 14 18:11:46 by
|
September 23, 14 12:59:35 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>
|
||||||
|
@ -145,14 +145,6 @@
|
|||||||
lib/Types
|
lib/Types
|
||||||
</small>
|
</small>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<a href='file/lib/Types/XmlTypes.coffee.html' target='main'>
|
|
||||||
XmlTypes.coffee
|
|
||||||
</a>
|
|
||||||
<small class='namespace'>
|
|
||||||
lib/Types
|
|
||||||
</small>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
|
File diff suppressed because one or more lines are too long
@ -69,6 +69,7 @@ class HistoryBuffer
|
|||||||
{
|
{
|
||||||
creator : '_'
|
creator : '_'
|
||||||
op_number : "_#{@reserved_identifier_counter++}"
|
op_number : "_#{@reserved_identifier_counter++}"
|
||||||
|
doSync: false
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -26,13 +26,14 @@ module.exports = (HB)->
|
|||||||
@is_deleted = false
|
@is_deleted = false
|
||||||
@doSync = true
|
@doSync = true
|
||||||
@garbage_collected = false
|
@garbage_collected = false
|
||||||
if uid?
|
if not uid?
|
||||||
@doSync = not isNaN(parseInt(uid.op_number))
|
|
||||||
else
|
|
||||||
uid = HB.getNextOperationIdentifier()
|
uid = HB.getNextOperationIdentifier()
|
||||||
|
if not uid.doSync?
|
||||||
|
uid.doSync = not isNaN(parseInt(uid.op_number))
|
||||||
{
|
{
|
||||||
'creator': @creator
|
'creator': @creator
|
||||||
'op_number' : @op_number
|
'op_number' : @op_number
|
||||||
|
'doSync' : @doSync
|
||||||
} = uid
|
} = uid
|
||||||
|
|
||||||
type: "Insert"
|
type: "Insert"
|
||||||
|
@ -341,7 +341,6 @@ module.exports = (HB)->
|
|||||||
if @content?
|
if @content?
|
||||||
@content.applyDelete()
|
@content.applyDelete()
|
||||||
@content.dontSync()
|
@content.dontSync()
|
||||||
@beforeDelete = @content # TODO!!!!!!!!!!
|
|
||||||
@content = null
|
@content = null
|
||||||
super
|
super
|
||||||
|
|
||||||
|
@ -0,0 +1,125 @@
|
|||||||
|
|
||||||
|
json_types_uninitialized = require "./JsonTypes"
|
||||||
|
|
||||||
|
module.exports = (HB)->
|
||||||
|
json_types = json_types_uninitialized HB
|
||||||
|
types = json_types.types
|
||||||
|
parser = json_types.parser
|
||||||
|
|
||||||
|
#
|
||||||
|
# Manages XML types
|
||||||
|
#
|
||||||
|
class XmlType extends types.Insert
|
||||||
|
|
||||||
|
constructor: (uid, @tagname, attributes, elements, prev_cl, next_cl, origin)->
|
||||||
|
super uid, prev_cl, next_cl, origin
|
||||||
|
|
||||||
|
if attributes? and elements?
|
||||||
|
@saveOperation 'attributes', attributes
|
||||||
|
@saveOperation 'elements', elements
|
||||||
|
else if (not attributes?) and (not elements?)
|
||||||
|
@attributes = new types.JsonType()
|
||||||
|
HB.addOperation(@attributes).execute()
|
||||||
|
@elements = new types.WordType()
|
||||||
|
HB.addOperation(@elements).execute()
|
||||||
|
else
|
||||||
|
throw new Error "Either define attribute and elements both, or none of them"
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Identifies this class.
|
||||||
|
# Use it in order to check whether this is an xml-type or something else.
|
||||||
|
#
|
||||||
|
type: "XmlType"
|
||||||
|
|
||||||
|
applyDelete: ()->
|
||||||
|
@attributes.applyDelete()
|
||||||
|
@elements.applyDelete()
|
||||||
|
super()
|
||||||
|
|
||||||
|
cleanup: ()->
|
||||||
|
super()
|
||||||
|
|
||||||
|
val: ()->
|
||||||
|
if document?
|
||||||
|
if arguments.length is 0
|
||||||
|
if not @xml?
|
||||||
|
@xml = document.createElement @tagname
|
||||||
|
|
||||||
|
attr = @attributes.val()
|
||||||
|
for attr_name, value of attr
|
||||||
|
a = document.createAttribute attr_name
|
||||||
|
a.value = value
|
||||||
|
@xml.setAttributeNode a
|
||||||
|
|
||||||
|
e = @elements.beginning.next_cl
|
||||||
|
while e.type isnt "Delimiter"
|
||||||
|
if not e.isDeleted()
|
||||||
|
@xml.appendChild e.val()
|
||||||
|
e.next_cl
|
||||||
|
@xml
|
||||||
|
else if arguments.length is 1
|
||||||
|
|
||||||
|
else
|
||||||
|
throw new Error "Can only parse one parameter"
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# If possible set the replace manager in the content.
|
||||||
|
# @see WordType.setReplaceManager
|
||||||
|
#
|
||||||
|
execute: ()->
|
||||||
|
super
|
||||||
|
###
|
||||||
|
if not @validateSavedOperations()
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
|
||||||
|
return true
|
||||||
|
###
|
||||||
|
|
||||||
|
#
|
||||||
|
# Get the parent of this JsonType.
|
||||||
|
# @return {XmlType}
|
||||||
|
#
|
||||||
|
getParent: ()->
|
||||||
|
@parent
|
||||||
|
|
||||||
|
#
|
||||||
|
# @private
|
||||||
|
#
|
||||||
|
# Convert all relevant information of this operation to the json-format.
|
||||||
|
# This result can be send to other clients.
|
||||||
|
#
|
||||||
|
_encode: ()->
|
||||||
|
json =
|
||||||
|
{
|
||||||
|
'type' : @type
|
||||||
|
'attributes' : @attributes.getUid()
|
||||||
|
'elements' : @elements.getUid()
|
||||||
|
'tagname' : @tagname
|
||||||
|
'uid' : @getUid()
|
||||||
|
'uid' : @getUid()
|
||||||
|
'prev': @prev_cl.getUid()
|
||||||
|
'next': @next_cl.getUid()
|
||||||
|
}
|
||||||
|
if @origin isnt @prev_cl
|
||||||
|
json["origin"] = @origin.getUid()
|
||||||
|
json
|
||||||
|
|
||||||
|
parser['XmlType'] = (json)->
|
||||||
|
{
|
||||||
|
'uid' : uid
|
||||||
|
'attributes' : attributes
|
||||||
|
'elements' : elements
|
||||||
|
'tagname' : tagname
|
||||||
|
'prev': prev
|
||||||
|
'next': next
|
||||||
|
'origin' : origin
|
||||||
|
} = json
|
||||||
|
new XmlType uid, tagname, attributes, elements, prev, next, origin
|
||||||
|
|
||||||
|
|
||||||
|
types['XmlType'] = XmlType
|
||||||
|
|
||||||
|
json_types
|
Loading…
x
Reference in New Issue
Block a user