-// var registerTransformationsFromObject = function(object) {
-// _.values(object).filter(function(val) {
-// return typeof val === 'function' && val._isTransformation;
-// })
-// .forEach(function(val) {
-// registerTransformation(val._transformationName, val, object);
-// });
-// };
-// registerTransformationsFromObject(ElementNode.prototype);
-// registerTransformationsFromObject(TextNode.prototype);
-// registerTransformationsFromObject(Document.prototype);
-
-// var Transformation = function() {
-// };
-// $.extend(Transformation.prototype, {
-
-// });
-
-
-// var createDumbTransformation = function(impl, contextObject) {
-// var DumbTransformation = function(args) {
-// this.args = this.args;
-// };
-// DumbTransformation.prototype = Object.create(Transformation.prototype);
-// $.extend(DumbTransformation.prototype, {
-// run: function() {
-// impl.apply(contextObject, this.args);
-// }
-// });
-
-// return DumbTransformation;
-
-
-// };
-
-var transformations = {};
-// var registerTransformation = function(name, impl, contextObject) {
-// if(typeof impl === 'function') {
-// transformations[name] = createDumbTransformation(impl, contextObject);
-// }
-// };
-
-// registerTransformation('detachx', DocumentNode.prototype.detach, )
-
-
-// 1. detach via totalny fallback
-var DetachNodeTransformation = function(args) {
- this.node = args.node;
- this.document = this.node.document;
-};
-$.extend(DetachNodeTransformation.prototype, {
- run: function() {
- this.oldRoot = this.node.document.root.clone();
- this.path = this.node.getPath();
- this.node.detach(); // @TS
-
- },
- undo: function() {
- this.document.root.replaceWith(this.oldRoot); // this.getDocument?
- this.node = this.document.getNodeByPath(this.path);
- }
-});
-transformations['detach'] = DetachNodeTransformation;
-
-//2. detach via wskazanie changeroot
-
-var Detach2NodeTransformation = function(args) {
- this.nodePath = args.node.getPath();
- this.document = args.node.document;
-};
-$.extend(Detach2NodeTransformation.prototype, {
- run: function() {
- var node = this.document.getNodeByPath(this.nodePath),
- root = node.parent() ? node.parent() : this.document.root;
-
- this.rootPath = root.getPath();
- this.oldRoot = (root).clone();
- node.detach();
- },
- undo: function() {
- this.document.getNodeByPath(this.rootPath).replaceWith(this.oldRoot);
- }
-});
-//transformations['detach2'] = Detach2NodeTransformation;
-
-//2a. generyczna transformacja
-
-var createTransformation = function(desc) {
-
- var NodeTransformation = function(args) {
- this.nodePath = args.node.getPath();
- this.document = args.node.document;
- this.args = args;
- };
- $.extend(NodeTransformation.prototype, {
- run: function() {
- var node = this.document.getNodeByPath(this.nodePath),
- root;
-
- if(desc.getRoot) {
- root = desc.getRoot(node);
- } else {
- root = this.document.root;
- }
-
- this.rootPath = root.getPath();
- this.oldRoot = (root).clone();
- desc.impl.call(node, this.args);
- },
- undo: function() {
- this.document.getNodeByPath(this.rootPath).replaceWith(this.oldRoot);
- }
- });
-
- return NodeTransformation;
-}
-
-///
-var Transformation = function(args) {
- this.args = args;
-};
-$.extend(Transformation.prototype, {
- run: function() {
- throw new Error('not implemented');
- },
- undo: function() {
- throw new Error('not implemented');
- },
-});
-
-var createGenericTransformation = function(desc) {
- var GenericTransformation = function(document, args) {
- //document.getNodeByPath(contextPath).call(this, args);
- this.args = args;
- this.document = document;
- };
- $.extend(GenericTransformation.prototype, {
- run: function() {
- var changeRoot = desc.getChangeRoot ? desc.getChangeRoot.call(this) : this.document.root;
- this.snapshot = changeRoot.clone();
- this.changeRootPath = changeRoot.getPath();
- return desc.impl.call(this.context, this.args); // a argumenty do metody?
- },
- undo: function() {
- this.document.getNodeByPath(this.changeRootPath).replaceWith(this.snapshot);
- },
- });
-
- return GenericTransformation;
-};
-
-// var T = createGenericTransformation({impl: function() {}});
-// var t = T(doc, {a:1,b:2,c3:3});
-
-
-var createContextTransformation = function(desc) {
- // mozna sie pozbyc przez przeniesienie object/context na koniec argumentow konstruktora generic transformation
- var GenericTransformation = createGenericTransformation(desc);
-
- var ContextTransformation = function(document, object, args) {
- var contextPath = object.getPath();
-
- GenericTransformation.call(this, document, args);
-
- Object.defineProperty(this, 'context', {
- get: function() {
- return document.getNodeByPath(contextPath);
- }
- });
- }
- ContextTransformation.prototype = Object.create(GenericTransformation.prototype);
- return ContextTransformation;
-}
-// var T = createContextTransformation({impl: function() {}});
-// var t = T(doc, node, {a:1,b:2,c3:3});
-///
-
-var contextTransformations = {};
-contextTransformations['setText'] = createContextTransformation({
- impl: function(args) {
- this.setText(args.text);
- },
- getChangeRoot: function() {
- return this.context;
- }
-});
-
-contextTransformations['setAttr'] = createContextTransformation({
- impl: function(args) {
- this.setAttr(args.name, args.value);
- },
- getChangeRoot: function() {
- return this.context;
- }
-});
-
-contextTransformations['split'] = createContextTransformation({
- impl: function(args) {
- return this.split({offset: args.offset});
- }//,