1
0
Fork 0

📦 Renamed freesewing pkg to @freesewing/core

This commit is contained in:
Joost De Cock 2019-04-19 10:09:50 +02:00
parent d249b0f1ae
commit 476f4b8088
36 changed files with 31 additions and 32 deletions

View file

@ -0,0 +1,83 @@
function Attributes() {
this.list = {};
}
/** Adds an attribute */
Attributes.prototype.add = function(name, value) {
if (typeof this.list[name] === "undefined") {
this.list[name] = [];
}
this.list[name].push(value);
return this;
};
/** Sets an attribute, overwriting existing value */
Attributes.prototype.set = function(name, value) {
this.list[name] = [value];
return this;
};
/** Removes an attribute */
Attributes.prototype.remove = function(name) {
delete this.list[name];
return this;
};
/** Retrieves an attribute */
Attributes.prototype.get = function(name) {
if (typeof this.list[name] === "undefined") return false;
else return this.list[name].join(" ");
};
/** Retrieves an attribute as array*/
Attributes.prototype.getAsArray = function(name) {
if (typeof this.list[name] === "undefined") return false;
else return this.list[name];
};
/** Returns SVG code for attributes */
Attributes.prototype.render = function() {
let svg = "";
for (let key in this.list) {
svg += ` ${key}="${this.list[key].join(" ")}"`;
}
return svg;
};
/** Returns CSS code for attributes */
Attributes.prototype.renderAsCss = function() {
let css = "";
for (let key in this.list) {
css += ` ${key}:${this.list[key].join(" ")};`;
}
return css;
};
/** Returns SVG code for attributes with a fiven prefix
* typically used for data-text*/
Attributes.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;
};
/** Returns a deep copy of this */
Attributes.prototype.clone = function() {
let clone = new Attributes();
clone.list = JSON.parse(JSON.stringify(this.list));
return clone;
};
export default Attributes;