diff src/implab/data/MapSchema.js @ 34:27e8e9e38e07 default tip

Слияние
author nickolay
date Wed, 05 Jun 2019 20:44:15 +0300
parents 8af8e840dd49 1dc2fd263b90
children
line wrap: on
line diff
--- a/src/implab/data/MapSchema.js	Wed Jun 05 17:44:17 2019 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-define([ "dojo/_base/declare", "../safe" ], function(declare, safe) {
-    return declare(null, {
-        /**
-         * Отображение одного типа объектов в другой.
-         * 
-         * @remarks Отображения являются односторонними, т.е. позволяют
-         *          перенести часть содержимого одного объекта в другой. Каждая
-         *          схема отображения строится из набора примитивных
-         *          отображений, которые будут применены в произвольном порядке.
-         */
-        _schema : null,
-
-        constructor : function(schema) {
-            this._schema = schema;
-        },
-
-        /**
-         * Осуществляет отображение одного объекта в другой
-         * 
-         * @src{Object} Исходный объект из которого будут взяты данные
-         * @dst{Object}
-         */
-        map : function(src, dst, ctx) {
-            safe.argumentNotNull(src, "src");
-            safe.argumentNotNull(dst, "dst");
-
-            for ( var p in this._schema) {
-                var mapper = this._schema[p];
-                if (mapper instanceof Function) {
-                    dst[p] = mapper(src[p]);
-                } else if (mapper && mapper.map) {
-                    mapper.map(src, dst, p, ctx);
-                } else {
-                    this._defaultMapper(src, dst, p, mapper, ctx);
-                }
-            }
-        },
-
-        _defaultMapper : function(src, dst, prop, opts) {
-            if (typeof (opts) == "string") {
-                if (opts in src)
-                    dst[prop] = src[opts];
-            } else if (opts && opts.type instanceof Function) {
-                if (src[prop] instanceof opts.type)
-                    dst[prop] = src[prop];
-                else
-                    dst[prop] = this._isPrimitiveType(opts.type) ? opts.type
-                        .call(null, src[prop]) : new opts.type(src[prop]);
-
-            } else {
-                if (!(prop in src))
-                    if (opts && opts.required)
-                        throw new Error("The " + prop + "is missing");
-                    else
-                        return;
-                dst[prop] = src[prop];
-            }
-        },
-
-        _isPrimitiveType : function(type) {
-            return (type === String || type === Number || type === Boolean
-                || type === Number || type === Date);
-        }
-
-    });
-
-});
\ No newline at end of file