Skip to content

Instantly share code, notes, and snippets.

@dandirks
Created April 22, 2012 01:45
Show Gist options
  • Save dandirks/2440749 to your computer and use it in GitHub Desktop.
Save dandirks/2440749 to your computer and use it in GitHub Desktop.
CoffeeScript implementation of Python-like decorators
class window.EasyMath
# decorators
remember_last_result = (func) -> ->
@last_result = func.apply(@, arguments)
verify_number = (func) -> (args...) ->
if args.some((arg) -> typeof arg isnt 'number')
throw new Error('Numbers, idiot.')
func.apply(@, arguments)
last_result: null
add: remember_last_result verify_number (num1, num2) ->
num1 + num2
subtract: remember_last_result verify_number (num1, num2) ->
num1 - num2
divide: remember_last_result verify_number (num1, num2) ->
num1 / num2
multiply: remember_last_result verify_number (num1, num2) ->
num1 * num2
max: remember_last_result verify_number (numbers...) ->
Math.max.apply(null, numbers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment