1
0
Fork 0
freesewing/src/attributes.js

58 lines
1.2 KiB
JavaScript
Raw Normal View History

2018-07-23 11:12:06 +00:00
function attributes (init = false)
{
if(init) {
for (let key in init) {
let val = init[key];
this.add(key, val);
}
}
2018-07-23 11:12:06 +00:00
return this;
2018-07-14 16:04:39 +00:00
/** Adds an attribute */
2018-07-23 11:12:06 +00:00
this.prototype.add = function (name, value)
{
if(typeof this.list[name] === 'undefined') {
this.list[name] = [];
}
this.list[name].push(value);
2018-07-14 16:04:39 +00:00
return this;
}
/** Retrieves an attribute */
2018-07-23 11:12:06 +00:00
this.prototype.get = function (name)
{
if(typeof this.list[name] === 'undefined') return false;
else return this.list[name].join(' ');
}
2018-07-14 16:04:39 +00:00
/** Returns SVG code for attributes */
2018-07-23 11:12:06 +00:00
this.prototype.render = function ()
{
2018-07-14 16:04:39 +00:00
let svg = '';
for (let key in this.list) {
svg += ` ${key}="${this.list[key].join(' ')}"`;
2018-07-14 16:04:39 +00:00
}
return svg;
}
/** Returns SVG code for attributes with a fiven prefix
* typically used for data-text*/
2018-07-23 11:12:06 +00:00
this.prototype.renderIfPrefixIs = function (prefix = '')
{
let svg = '';
let prefixLen = prefix.length;
for (let key in this.list) {
if(key.substr(0,prefixLen) === prefix) {
svg += ` ${key.substr(prefixLen)}="${this.list[key].join(' ')}"`;
}
}
return svg;
}
2018-07-14 16:04:39 +00:00
}
2018-07-23 11:12:06 +00:00
export default attributes;