var _ = require('libs/underscore'),
toret = {};
+var getTransDesc = function(desc, name) {
+ if(typeof desc === 'function') {
+ desc = {impl: desc};
+ }
+ if(!desc.impl) {
+ throw new Error('Got transformation description without implementation.')
+ }
+ desc.name = desc.name || name;
+ return desc;
+};
-toret.createGenericTransformation = function(desc) {
+toret.createGenericTransformation = function(desc, name) {
+ desc = getTransDesc(desc, name);
var GenericTransformation = function(document, args) {
this.args = args || {};
Object.defineProperty(transformation.args, key, {
get: function() {
if(transformation.hasRun) {
- console.log('returning via path');
+ //console.log('returning via path');
return transformation.document.getNodeByPath(path);
} else {
- console.log('returning original arg');
+ //console.log('returning original arg');
return value;
}
// var t = T(doc, {a:1,b:2,c3:3});
-toret.createContextTransformation = function(desc) {
+toret.createContextTransformation = function(desc, name) {
// mozna sie pozbyc przez przeniesienie object/context na koniec argumentow konstruktora generic transformation
- var GenericTransformation = toret.createGenericTransformation(desc);
+ var GenericTransformation = toret.createGenericTransformation(desc, name);
var ContextTransformation = function(document, object, args) {
GenericTransformation.call(this, document, args);
-toret.TransformationStorage = function() {};
+toret.TransformationStorage = function() {
+ this._transformations = {};
+};
_.extend(toret.TransformationStorage.prototype, {
- _transformations: {},
register: function(Transformation) {
var list = (this._transformations[Transformation.prototype.name] = this._transformations[Transformation.prototype.name] || []);