diff --git a/src/pattern.js b/src/pattern.js
index 2da9adccf45..84dc46ad0f9 100644
--- a/src/pattern.js
+++ b/src/pattern.js
@@ -278,19 +278,21 @@ Pattern.prototype.pack = function() {
* If partName is an array of names, any name needed
* will cause this to return true
*/
-Pattern.prototype.needs = function(partName) {
+Pattern.prototype.needs = function(partName, strict = false) {
if (typeof partName !== "string") {
for (let part of partName) {
- if (this.needs(part)) return true;
+ if (this.needs(part, strict)) return true;
}
return false;
}
- if (typeof this.settings.only === "undefined") return true;
- else if (this.settings.only === partName) return true;
+ if (typeof this.settings.only === "undefined") {
+ if (strict) return false;
+ else return true;
+ } else if (this.settings.only === partName) return true;
else if (
typeof this.settings.only === "object" &&
this.settings.only.indexOf(partName) !== -1
- )
+ ) {
return true;
- else return false;
+ } else return false;
};
diff --git a/src/svg.js b/src/svg.js
index b7095c88875..fddb14ab066 100644
--- a/src/svg.js
+++ b/src/svg.js
@@ -214,9 +214,6 @@ Svg.prototype.renderSnippet = function(snippet) {
let svg = this.nl();
svg += `";
return svg;
diff --git a/tests/fixtures/render.js b/tests/fixtures/render.js
index 2a206a90bce..72c0419433c 100644
--- a/tests/fixtures/render.js
+++ b/tests/fixtures/render.js
@@ -372,7 +372,7 @@ var render = {
-
+
diff --git a/tests/pattern.test.js b/tests/pattern.test.js
index bb845543e02..ab1a8786899 100644
--- a/tests/pattern.test.js
+++ b/tests/pattern.test.js
@@ -157,8 +157,14 @@ it("Should check whether a parts is needed with array", () => {
let pattern = new freesewing.Pattern();
pattern.settings.only = ["test", "foo", "bar"];
expect(pattern.needs("foo")).to.equal(true);
- //expect(pattern.needs(["bar"])).to.equal(true);
- //expect(pattern.needs(["mest", "foo"])).to.equal(true);
expect(pattern.needs(["mist", "hugs"])).to.equal(false);
- //expect(pattern.needs("fo")).to.equal(false);
+});
+
+it("Should check whether a parts is strictly needed", () => {
+ let pattern = new freesewing.Pattern();
+ expect(pattern.needs("foo")).to.equal(true);
+ expect(pattern.needs("foo", true)).to.equal(false);
+ pattern.settings.only = ["test", "foo", "bar"];
+ expect(pattern.needs("foo")).to.equal(true);
+ expect(pattern.needs("foo", true)).to.equal(true);
});
diff --git a/tests/snippet.test.js b/tests/snippet.test.js
index 76b1833e522..64de9b15db6 100644
--- a/tests/snippet.test.js
+++ b/tests/snippet.test.js
@@ -2,30 +2,27 @@ let expect = require("chai").expect;
let freesewing = require("./dist/index.js");
it("Should create a snippet", () => {
- let snip1 = new freesewing.Snippet(
- "test",
- new freesewing.Point(12, 34),
- "this is an example"
- );
+ let snip1 = new freesewing.Snippet("test", new freesewing.Point(12, 34));
expect(snip1.def).to.equal("test");
expect(snip1.anchor.x).to.equal(12);
expect(snip1.anchor.y).to.equal(34);
- expect(snip1.description).to.equal("this is an example");
-});
-
-it("Should default to empty description", () => {
- let snip2 = new freesewing.Snippet("test", new freesewing.Point(12, 34));
- expect(snip2.description).to.equal("");
});
it("Should clone a snippet", () => {
- let snip3 = new freesewing.Snippet(
- "boo",
- new freesewing.Point(56, 78),
- "clone me"
- );
+ let snip3 = new freesewing.Snippet("boo", new freesewing.Point(56, 78));
expect(snip3.clone().def).to.equal("boo");
expect(snip3.clone().anchor.x).to.equal(56);
expect(snip3.clone().anchor.y).to.equal(78);
- expect(snip3.clone().description).to.equal("clone me");
+});
+
+it("Should set an attribute", () => {
+ let s = new freesewing.Snippet("test", new freesewing.Point(12, -34)).attr(
+ "class",
+ "test"
+ );
+ expect(s.attributes.get("class")).to.equal("test");
+ s.attr("class", "more");
+ expect(s.attributes.get("class")).to.equal("test more");
+ s.attr("class", "less", true);
+ expect(s.attributes.get("class")).to.equal("less");
});