| 'use strict' |
| |
| module.exports = factory |
| |
| var noop = Function.prototype |
| var own = {}.hasOwnProperty |
| |
| // Handle values based on a property. |
| function factory(key, options) { |
| var settings = options || {} |
| |
| function one(value) { |
| var fn = one.invalid |
| var handlers = one.handlers |
| |
| if (value && own.call(value, key)) { |
| fn = own.call(handlers, value[key]) ? handlers[value[key]] : one.unknown |
| } |
| |
| return (fn || noop).apply(this, arguments) |
| } |
| |
| one.handlers = settings.handlers || {} |
| one.invalid = settings.invalid |
| one.unknown = settings.unknown |
| |
| return one |
| } |