Add event/hap context
This commit is contained in:
parent
db22653124
commit
912c36d590
2 changed files with 29 additions and 2 deletions
16
strudel.mjs
16
strudel.mjs
|
|
@ -172,12 +172,14 @@ class Hap {
|
|||
then the whole will be returned as None, in which case the given
|
||||
value will have been sampled from the point halfway between the
|
||||
start and end of the 'part' timespan.
|
||||
The context is to store a list of source code locations causing the event
|
||||
*/
|
||||
|
||||
constructor(whole, part, value) {
|
||||
constructor(whole, part, value, context=[]) {
|
||||
this.whole = whole
|
||||
this.part = part
|
||||
this.value = value
|
||||
this.context = context
|
||||
}
|
||||
|
||||
withSpan(func) {
|
||||
|
|
@ -214,6 +216,10 @@ class Hap {
|
|||
show() {
|
||||
return "(" + (this.whole == undefined ? "~" : this.whole.show()) + ", " + this.part.show() + ", " + this.value + ")"
|
||||
}
|
||||
|
||||
setContext(context) {
|
||||
return new Hap(this.whole, this.part, this.value, context)
|
||||
}
|
||||
}
|
||||
|
||||
export class State {
|
||||
|
|
@ -298,6 +304,14 @@ class Pattern {
|
|||
return new Pattern(state => func(this.query(state)))
|
||||
}
|
||||
|
||||
_withEvent(func) {
|
||||
return this._withEvents(events => events.map(func))
|
||||
}
|
||||
|
||||
_setContext(context) {
|
||||
return this._withEvent(event => event.setContext(context))
|
||||
}
|
||||
|
||||
withLocation(location) {
|
||||
return this.fmap(value => {
|
||||
value = typeof value === 'object' && !Array.isArray(value) ? value : { value };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue