json-strict
Version:
Json Specification & Validation & Document Generation
41 lines (36 loc) • 809 B
text/coffeescript
require 'coffee-mate/global'
{instance} = require '../typeclass'
{show} = require '../typespec'
#`function Enum(ls){
# return {
# constructor: Enum,
# enum: ls
# }
#}`
class Enum
constructor: (ls) ->
if not (all((x) -> x?) ls)
throw Error "Bad Enum Type Definition: Array Of Non-Null Values Expected, Bot Got #{ls}"
return {
constructor: Enum
enum: ls
}
instance('TypeSpec')(Enum).where
shape: (t) -> t
match: ({enum: vs}) -> (v) ->
v in vs
constraints: (t) ->
{enum: vs} = t
(v) -> [
{
label: -> "#{show t} Expected, But Got #{json v}"
flag: -> v in vs
}
]
show: ({enum: vs}) ->
"Enum(#{json vs})"
samples: ({enum: vs}) ->
concat repeat vs
htmlInline: ({enum: vs}) ->
"<span class='type-maker unwrapped'>Enum #{json vs}</span>"
module.exports = {Enum}