Create copies when tagging

Not sure if this behaviour is identical to previous version,
or in truth how important it really is anyway
This commit is contained in:
John J. Camilleri
2019-06-10 09:45:04 +02:00
parent 63606fd2d0
commit 4793d376d9

View File

@@ -662,8 +662,10 @@ interface String {
tagWith: (tag: string) => string;
}
String.prototype.tagWith = function (tag: string): string {
this.tag = tag
return this
// returns a copy
let s2 = this
s2.tag = tag
return s2
}
/**
@@ -833,10 +835,11 @@ class SymKS implements Taggable {
return terminalStr.join('')
}
// TODO magic numbering fails here
public tagWith(tag: string): SymKS {
this.tag = tag
return this
let s = new SymKS()
s.tokens = [...this.tokens] // copy array
s.tag = tag
return s
}
}
@@ -861,10 +864,10 @@ class SymKP implements Taggable {
return terminalStr.join('')
}
// TODO magic numbering fails here
public tagWith(tag: string): SymKP {
this.tag = tag
return this
let s = new SymKP([...this.tokens], [...this.alts]) // copy arguments
s.tag = tag
return s
}
}