1
0
mirror of https://github.com/robertkrimen/otto synced 2025-10-19 19:55:30 +08:00

Add delete to type_array

This commit is contained in:
Robert Krimen 2013-02-04 07:30:53 -08:00
parent 38f6d71ff2
commit e5ff4cef59
2 changed files with 27 additions and 5 deletions

View File

@ -1262,9 +1262,9 @@ func TestArray(t *testing.T) {
test := runTest() test := runTest()
test(` test(`
abc = ""+[0, 1, 2, 3] abc = ""+[0, 1, 2, 3];
def = [].toString() def = [].toString();
ghi = [null, 4, "null"].toString() ghi = [null, 4, "null"].toString();
`) `)
test("abc", "0,1,2,3") test("abc", "0,1,2,3")
test("def", "") test("def", "")
@ -1272,6 +1272,12 @@ func TestArray(t *testing.T) {
test(`new Array(0).length`, "0") test(`new Array(0).length`, "0")
test(`new Array(11).length`, "11") test(`new Array(11).length`, "11")
test(`new Array(11, 1).length`, "2") test(`new Array(11, 1).length`, "2")
test(`
abc = [0, 1, 2, 3];
delete abc[1];
abc;
`, "0,,2,3")
} }
func TestArray_toString(t *testing.T) { func TestArray_toString(t *testing.T) {

View File

@ -117,7 +117,7 @@ func (self *_arrayStash) property(name string) *_property {
if name == "length" { if name == "length" {
return &_property{ return &_property{
value: toValue(len(self.valueArray)), value: toValue(len(self.valueArray)),
mode: 0100, // +Write -Enumerate -Configure mode: 0100, // +w-ec
} }
} }
@ -130,7 +130,7 @@ func (self *_arrayStash) property(name string) *_property {
} }
return &_property{ return &_property{
value: value, value: value,
mode: 0111, // +Write +Enumerate +Configure mode: 0111, // +wec
} }
} }
@ -148,3 +148,19 @@ func (self *_arrayStash) enumerate(each func(string)) {
} }
self._stash.enumerate(each) self._stash.enumerate(each)
} }
func (self *_arrayStash) delete(name string) {
// length
if name == "length" {
return
}
// .0, .1, .2, ...
index := stringToArrayIndex(name)
if index >= 0 {
if index < int64(len(self.valueArray)) {
self.valueArray[index] = emptyValue()
}
}
}