The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
name:      MAIN
type:      map
required:  yes
mapping:   &main-rule
 "name":
    type:      str
 "desc":
    type:      str
 "classname":
    type:      str
 "type":
    type:      str
    #required:  yes
    enum:
      - seq
      #- sequence
      #- list
      - map
      #- mapping
      #- hash
      - str
      #- string
      - int
      #- integer
      - float
      - number
      #- numeric
      - bool
      #- boolean
      - text
      - date
      - time
      - timestamp
      #- object
      - any
      - scalar
      #- collection
 "required":
    type:      bool
 "enum":
    type:      seq
    sequence:
      - type:     scalar
        unique:   yes
 "pattern":
    type:      str
 "assert":
    type:      str
    pattern:   /\bval\b/
 "range":
    type:      map
    mapping:
     "max":
        type:     scalar
     "min":
        type:     scalar
     "max-ex":
        type:     scalar
     "min-ex":
        type:     scalar
 "length":
    type:      map
    mapping:
     "max":
        type:     int
     "min":
        type:     int
     "max-ex":
        type:     int
     "min-ex":
        type:     int
 "ident":
    type:      bool
 "unique":
    type:      bool
 "sequence":
    name:      SEQUENCE
    type:      seq
    sequence:
      - type:      map
        mapping:   *main-rule
        name:      MAIN
        #required:  yes
 "mapping":
    name:      MAPPING
    type:      map
    mapping:
      =:
        type:      map
        mapping:   *main-rule
        name:      MAIN
        #required:  yes