/**
 * Filename    : Schema.js
 * Author      : Robert Cerny
 * Created     : 2006-11-17
 * Last Change : 2006-11-26
 *
 * Description:
 *   Defines a schema for script documentation. Servers as an example
 *   for a schema as well. See source code for more information.
 *
 * History:
 *   2006-11-17 Created.
 *
 * License:
 */

CERNY.require("CERNY.js.doc.Schema",
              "CERNY.text.DateFormat",
              "CERNY.schema");

arrayOf = CERNY.schema.arrayOf;
optional = CERNY.schema.optional;
nonEmptyString = CERNY.schema.nonEmptyString;
isoDate = CERNY.schema.isoDate;

CERNY.js.doc.Parameter = {
    name: nonEmptyString,
    documentation: nonEmptyString
};

CERNY.js.doc.Function = {
    name: nonEmptyString,
    documentation: arrayOf(nonEmptyString),
    parameters: arrayOf(CERNY.js.doc.Parameter),
    returnValue: optional(nonEmptyString)
};

CERNY.js.doc.HistoryEntry = {
    date: isoDate,
    entry: nonEmptyString
};

CERNY.js.doc.Script = {
    name: nonEmptyString,
    author: nonEmptyString,
    creationDate: isoDate,
    modificationDate: optional(isoDate),
    documentation: arrayOf(nonEmptyString),
    history: arrayOf(CERNY.js.doc.HistoryEntry),
    functions: arrayOf(CERNY.js.doc.Function),
    uses: arrayOf(nonEmptyString)
};

