(.using
  [library
   [lux {"-" and}
    ["$" documentation {"+" documentation:}]
    [control
     ["<>" parser
      ["<[0]>" code]]]
    [data
     ["[0]" text {"+" \n}
      ["%" format {"+" format}]]]
    [macro
     ["[0]" template]]]]
  [\\library
   ["[0]" /]])

(documentation: /.Date
  "A date specified as a year/month/day triplet.")

(documentation: /.date
  "A date, within the allowed limits."
  [(date year month day_of_month)])

(documentation: /.codec
  (format "Based on ISO 8601."
          \n "For example: 2017-01-15"))

(.def: .public documentation
  (.List $.Module)
  ($.module /._
            ""
            [..Date
             ..date
             ..codec
             ($.default /.invalid_day)
             ($.default /.epoch)
             ($.default /.year)
             ($.default /.month)
             ($.default /.day_of_month)
             ($.default /.equivalence)
             ($.default /.order)
             ($.default /.invalid_month)
             ($.default /.parser)
             ($.default /.days)
             ($.default /.of_days)
             ($.default /.enum)]
            []))
