code: function genEnumValidator(list) {
    return function ENUM_VALIDATOR(v) {
      var index = list.indexOf(v)
      if (index > 0) {
        return {value: v}
      }
      if (index === 0) {
        return {
          value: v,
          reason: function reason(k, v, result) {
            return 'NOTE: property value `' + v + '` is the DEFAULT value for `' + util.camelCaseToHyphened(k) + '` (could be removed)'
          }
        }
      }
      else {
        return {
          value: null,
          reason: function reason(k, v, result) {
            return 'ERROR: property value `' + v + '` is not supported for `' + util.camelCaseToHyphened(k) + '` (supported values are: `' + list.join('`|`') + '`)'
          }
        }
      }
    }
  }
docs: generate a function to check whether a value is in `list`
  - first value: default, could be removed
  - not in `list`: error
  
  @param  {Array} list
  @return {function} a function(v) which returns a function to return
  - value: string|null
  - reason(k, v, result)