.. _glossary:

Glossary
========

.. glossary::
   :sorted:

   renderer
     A function which accepts a logical template name and a set of
     keywords, with the signature ``(template_name, **kw)``, and
     which returns the rendering of a deform widget template.

   cstruct
     Data serialized by :term:`Colander` to a representation suitable
     for consumption by the ``serialize`` method of a :mod:`deform`
     widget, usually while a form is being rendered.

   pstruct
     Data deserialized by :term:`Peppercorn` from one or more form
     controls to a representation suitable for consumption by the
     ``deserialize`` method of a :mod:`deform` widget, usually while a
     form is being submitted.

   appstruct
     A raw application data structure (complex Python objects).

   Colander
     A `schema package
     <https://docs.pylonsproject.org/projects/colander/en/latest/>`_ used by Deform
     to provide serialization and validation facilities.

   Peppercorn
     A `package <https://docs.pylonsproject.org/projects/peppercorn/en/latest/>`_
     used by Deform for structured form submission value deserialization.

   schema
     A nested collection of :term:`schema node` objects representing
     an arrangement of data.

   schema node
     A schema node can serialize an :term:`appstruct` to a
     :term:`cstruct` and deserialize a :term:`cstruct` to an
     :term:`appstruct` (object derived from
     :class:`colander.SchemaNode` or one of the colander Schema
     classes).  Schemas are a concept used by Deform, but actually
     implemented and offered by the :term:`Colander` package.

   widget
     Serializes a :term:`cstruct` into a form rendering and
     deserializes a :term:`pstruct` into a :term:`cstruct`.

   form controls
     A sequence of browser renderings of user interface elements.
     These are also known as "fields" as per the the `RFC 2388
     <http://www.servlets.com/rfcs/rfc2388.txt>`_ definition of
     "field", however Deform uses the term :term:`field` for another
     concept, so we call them controls within the Deform
     documentation.

   Chameleon
     `chameleon <https://chameleon.readthedocs.io/en/latest/>`_ is an attribute
     language template compiler which supports the ZPT (Zope Page
     Templates) templating specification.  It is written and
     maintained by Malthe Borch.

   field
     An object in the graph generated by :mod:`deform` that has access
     to a :term:`schema` node object and a :term:`widget` object.  The
     scope of a field object is generally limited to the scope of a
     single HTTP request, so field objects are often used to maintain
     state information during the request.

   default renderer
     The template :term:`renderer` used when no other renderer is
     specified.  It uses the :term:`Chameleon` templating engine.

   WebOb
     `WebOb <https://webob.org/>`_ is a WSGI request/response
     library created by Ian Bicking.

   gettext
     The GNU `gettext <https://www.gnu.org/software/gettext/>`_
     library, used by the :mod:`deform` translation machinery.

   jquery.maskedinput
     A JQuery plugin library that allows for input masks in text
     inputs.  For example, a mask for a US telephone number might be
     ``(999)-999-9999``.  See also
     https://github.com/digitalBush/jquery.maskedinput.  Deform
     supports input masks in its default
     :class:`deform.widget.TextInputWidget` widget.

   validator
     A :term:`Colander` validator callable.  Accepts a ``node`` object
     and a ``value`` and either raises an :exc:`colander.Invalid`
     exception or returns ``None``.  Used in deform as the
     ``validator=`` argument to a schema node, ensuring that the input
     meets the requirements of the schema.

   TinyMCE Editor
     `TinyMCE <https://www.tiny.cloud/>`_ is a platform
     independent web based Javascript HTML WYSIWYG editor control
     released as Open Source under `LGPL
     <https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>`_ by
     `Moxiecode Systems AB <http://www.moxiecode.com/>`_. It
     has the ability to convert HTML textarea fields or other HTML
     elements to editor instances. TinyMCE is very easy to integrate
     into other Content Management Systems.

   jquery.autocomplete
     A  :term:`jQuery` plugin library that allows for autocompleting a
     value in a text input, making it easier to find and select a
     value from a possibly large list. The data may be local or
     remote. See https://jqueryui.com/autocomplete/ for more details.

   XHR
     ``XHR`` an XMLHTTPRequest. See https://www.w3.org/TR/XMLHttpRequest/.

   JSON
     ``JSON`` (JavaScript Object Notation) is a lightweight
     data-interchange format. It is easy for humans to read and write.
     See also https://www.json.org/.

   jQuery
     `jQuery <https://jquery.com/>`_ is a JavaScript library for making
     client side changes to HTML.

   resource registry
      An attribute of a Deform form which maps :term:`widget
      requirement` declarations made by widgets to relative file
      paths.  Useful to obtain all the CSS and/or Javascript resources
      required by all the widgets in a concrete form rendering.  See
      also :ref:`get_widget_resources`.

   widget requirement
      A sequence of tuples attached to a widget object representing
      the *logical* Javascript and/or CSS requirements of the widget.
      See also :ref:`specifying_widget_requirements`.

   sequence
      A widget which allows you to add multiple subwidgets, each of
      the same type.  

   jQuery UI
      A library used by Deform for various widget theming, effects and
      functionality: See https://jqueryui.com/.

   jquery.ui.autocomplete
      A :term:`jQuery UI` sublibrary for autocompletion of text
      fields.  See https://api.jqueryui.com/autocomplete/.
