From 9e02ff51c8b6db88e1a0ea0967db13c1b5f41cc1 Mon Sep 17 00:00:00 2001 From: Tristan Cavelier <tristan.cavelier@tiolive.com> Date: Thu, 29 Aug 2013 11:16:08 +0200 Subject: [PATCH] Metadata.js check method added --- src/jio/core/Metadata.js | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/jio/core/Metadata.js b/src/jio/core/Metadata.js index ee6f402..0af4a4e 100644 --- a/src/jio/core/Metadata.js +++ b/src/jio/core/Metadata.js @@ -23,6 +23,20 @@ Metadata.prototype.format = function () { return this.update(this._dict); }; +Metadata.prototype.check = function () { + var k; + for (k in this._dict) { + if (this._dict.hasOwnProperty(k)) { + if (k[0] !== '_') { + if (!Metadata.checkValue(this._dict[k])) { + return false; + } + } + } + } + return true; +}; + Metadata.prototype.update = function (metadata) { var k; for (k in metadata) { @@ -251,4 +265,50 @@ Metadata.normalizeValue = function (value) { } }; +Metadata.checkArray = function (value) { + var i; + for (i = 0; i < value.length; i += 1) { + if (Metadata.isDict(value[i])) { + if (!Metadata.checkObject(value[i])) { + return false; + } + } else if (!Metadata.isContent(value[i])) { + return false; + } + } + return true; +}; + +Metadata.checkObject = function (value) { + var i, ok = false; + for (i in value) { + if (value.hasOwnProperty(i)) { + if (Metadata.isContent(value[i])) { + if (i === 'content') { + ok = true; + } + } else { + return false; + } + } + } + if (ok === false) { + return false; + } + return true; +}; + +Metadata.checkValue = function (value) { + if (Metadata.isContent(value)) { + return true; + } + if (Array.isArray(value)) { + return Metadata.checkArray(value); + } + if (Metadata.isDict(value)) { + return Metadata.checkObject(value); + } + return false; +}; + exports.Metadata = Metadata; -- 2.30.9