UNPKG

dl

Version:

DreamLab Libs

87 lines (72 loc) 2.25 kB
var Class = require("core").Class, Types = require("core").common.Types; var CdfTag = require("./CdfTag.js").CdfTag; /** * @class CdfConfig * @extends CdfTag */ var CdfConfig = function () { this.Extends = CdfTag; /* this.main = null; this._body = null; */ this.initialize = function (data) { this.parent(data); this.main = null; this._body = null; if (data) { this._parse(); } }; this._parse = function () { var matches = this.token.match(/^<cdf:config([^>]+)>(<!\[CDATA\[)?((.|\s)*?)(\]\]>)?<\/cdf:config>$/i); var attrMatches = matches[1].match(/\S+="\S+?"/ig); var match = null; var valuePair = null; for (var i = 0, max = attrMatches.length; i < max; i++) { match = attrMatches[i]; valuePair = match.match(/(\S+)="(\S+?)"/i); this._parseParam(valuePair[1], valuePair[2]); } this.setBody(matches[2]); }; this._parseParam = function (name, value) { switch (name) { case "main": this.main = value; break; default: console.log('ERROR: CdfConfig::_parseParam : unsupported param name: '+name); break; } }; this.setBody = function (data) { if (Buffer.isBuffer(data)) { this._body = data; } else if (Types.isString(data)) { this._body = data; } else { this._body = JSON.stringify(data); } }; /** * Returns orginal body */ this.getBody = function () { return this._body; }; /** * Zwraca kompletnego stringa cdf <cdf: */ this.toString = function () { var arrVal = []; if (this.main) { arrVal.push('main="' + this.main + '"'); } var body = this._body ? '<![CDATA[\n' + this._body + '\n]]>' : "" return "<cdf:config " + arrVal.join(" ") + ">" + body + "</cdf:config>"; }; }; CdfConfig = new Class(new CdfConfig()); exports.CdfConfig = CdfConfig;