dl
Version:
DreamLab Libs
87 lines (72 loc) • 2.25 kB
JavaScript
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;