Skip to content

Instantly share code, notes, and snippets.

@deconstructionalism
Created June 24, 2019 00:09
Show Gist options
  • Save deconstructionalism/e07ab4f01c5d429d78536c2764454f09 to your computer and use it in GitHub Desktop.
Save deconstructionalism/e07ab4f01c5d429d78536c2764454f09 to your computer and use it in GitHub Desktop.
const materials = [
'course_work',
'course_work',
'exam',
'project',
'course_work'
]
const wrapPolymorphicAction = (action) => {
const polymorphicWrapper = function (action) {
return function () {
const args = Array.from(arguments)
const materialId = args[0]
const materialType = materials[materialId]
const controller = `controller for ${materialType} as parent`
action.apply(this, [...args, controller])
}
}
const wrappedAction = polymorphicWrapper(action)
return wrappedAction
}
const getGradableChunk = (materialId, id, controller, trx) => {
console.log(controller)
return {
content: 'stuff',
name: 'thing',
material_type: 'course_work'
}
}
const wrappedGetGradableChunk = wrapPolymorphicAction(getGradableChunk)
wrappedGetGradableChunk(3, 45)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment