Introduce TermOperator helper and refactor execute()s to use replaceSubjectMatchingTerm
This commit is contained in:
@@ -25,14 +25,16 @@ export class Enclose extends Command<EncloseData> {
|
||||
}
|
||||
|
||||
execute(vm: StrVM, data: EncloseData): Awaitable<StrVM> {
|
||||
return vm.tapInPlace(ctx => {
|
||||
const [left, right] = this.determineSurroundingStrings(
|
||||
data.left ? ctx.resolveString(data.left) : undefined,
|
||||
data.right ? ctx.resolveString(data.right) : undefined,
|
||||
)
|
||||
return vm.replaceContextMatchingTerm(ctx => ({
|
||||
string: sub => {
|
||||
const [left, right] = this.determineSurroundingStrings(
|
||||
data.left ? ctx.resolveString(data.left) : undefined,
|
||||
data.right ? ctx.resolveString(data.right) : undefined,
|
||||
)
|
||||
|
||||
return ctx.replaceSubjectAsString(sub => `${left}${sub}${right}`)
|
||||
})
|
||||
return `${left}${sub}${right}`
|
||||
}
|
||||
}))
|
||||
}
|
||||
|
||||
private determineSurroundingStrings(left?: string, right?: string): [string, string] {
|
||||
|
||||
Reference in New Issue
Block a user