Skip to content

Commit 74cee4a

Browse files
committed
Implement Path#remove() and add tests for it.
1 parent 6d4d07f commit 74cee4a

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

src/path/Path.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,25 @@ var Path = this.Path = PathItem.extend({
109109
return segment ? this._add(segment, index) : null;
110110
},
111111

112-
// TODO: remove(index) / remove(segment) / remove(fromIndex, toIndex)
112+
remove: function() {
113+
if (!arguments.length) {
114+
// remove()
115+
this.base();
116+
} else if (arguments.length == 1) {
117+
if (arguments[0].point) {
118+
// remove(segment)
119+
arguments[0].remove();
120+
} else {
121+
// remove(index)
122+
this._segments[arguments[0]].remove();
123+
}
124+
} else {
125+
// remove(fromIndex, toIndex)
126+
for(var i = arguments[1], l = arguments[0]; i >= l; i--)
127+
this._segments[i].remove();
128+
}
129+
},
130+
113131
// TODO: pointsToCurves([tolerance[, threshold[, cornerRadius[, scale]]]])
114132
// TODO: curvesToPoints([maxPointDistance[, flatness]])
115133
// TODO: reduceSegments([flatness])

test/tests/Path.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,26 @@ test('path.join(path)', function() {
5353
new Segment(new Point(10, 0)), new Segment(new Point(20, 10)),
5454
new Segment(new Point(10, 5))]);
5555
equals(path.closed, true);
56+
});
57+
58+
test('path.remove()', function() {
59+
var doc = new Document();
60+
var path = new Path();
61+
path.add(0, 0);
62+
path.add(10, 0);
63+
path.add(20, 0);
64+
path.add(30, 0);
65+
66+
path.remove(0);
67+
equals(path.segments.length, 3);
68+
69+
path.remove(path.segments[0]);
70+
equals(path.segments.length, 2);
71+
72+
path.remove(0, 1);
73+
equals(path.segments.length, 0);
74+
75+
path.remove();
76+
77+
equals(doc.activeLayer.children.length, 0);
5678
});

0 commit comments

Comments
 (0)