============
Apache::Wyrd
============

This is a set of interoperating modules which provide an object-oriented
method of developing applications on Apache under mod_perl.  The system
is comprised of a handler (Apache::Wyrd::Handler) and a family of
modules that the handler is able to call based on the HTML content of
the files it processes.

The modules are configurable via tag-like strings in the HTML code
itself, and are meant to produce output on HTML pages where the strings
are placed.  The strings are meant to be intuitive for an HTML coder to
use while also giving a perl programmer a ready library of tools to draw
on to make these HTML-friendly strings.  For convenience, these strings
are referred to as "Wyrds" and are comprised of (X)HTML tags named after
the perl modules they represent.

The Apache::Wyrd modules are meant to be abstract classes, so that a
functional namespace can be derived from the Apache::Wyrd family of
modules for each web site supported on a server.  The new namespace will
then have its own set of object names for each individual Wyrd.

To illustrate, assume a namespace of "FOOBAR"--For the derived classes,
the subclassing of certain modules (FOOBAR::Wyrd, FOOBAR::Handler, and
FOOBAR::DBL) will automatically give access on pages of the site handled
by FOOBAR::Handler to all the derived classes of Apache::Wyrd in the
Apache::Wyrd namespace.  These objects are inserted onto pages by
FOOBAR::Handler when it encounters a string with the proper syntax, for
example:

  There are <FOOBAR::Lookup query="select count(*) from items" /> items
  available in this online database.

Automatically instantiates Apache::Wyrd::Lookup and uses it to make an
SQL query, inserting the result onto the location of the page where the
string is found.

In addition to deriveable classes, the Apache::Wyrd family includes some
service modules and handlers (Apache::Wyrd::Services::*) which provide
authentication, indexing, data structure management, and other services
useful for Apache mod_perl development.  There is also a small, but
robust collection of objects designed to make the creation of complex
forms and database interfaces more rapid.  Also included is a set of
interface classes to equip objects derived from Apache::Wyrd with
frequently-required functionality.

Apache::Wyrd is not meant to be a complete set of applications or a
competitor to other pre-parser software packages such as Mason, PHP, or
ColdFusion.  It is designed, rather, to give an experienced perl
programmer a set of ready tools to rapidly convert a largely "static"
website to a dynamic one within tight monetary or time constraints
without sacrificing future development options or compromising code
reuse.

It has been made available by Wyrdwright, Inc. under the GPL, and
consequently comes with the GPL's rights and caveats.  Please see the
file "LICENSE".

We hope you find it useful.

=============
DOCUMENTATION
=============

All the Wyrds have their own documentation in POD form.

The first three give the basics:

Apache::Wyrd::Handler:  The Handler Module
Apache::Wyrd            The abstract self-parsing embeddable object
Apache::Wyrd::DBL:      The "switchboard" of Apache and DBI connnections

Then the support classes provide much-used functionality:

Apache::Wyrd::Request
Apache::Wyrd::Template
Apache::Wyrd::Attribute
Apache::Wyrd::Lib
Apache::Wyrd::Query
Apache::Wyrd::Lookup
Apache::Wyrd::CGICond
Apache::Wyrd::CGISetter

There are "form-handling" modules:

Apache::Wyrd::Form
Apache::Wyrd::Form::Template.pm
Apache::Wyrd::Input
Apache::Wyrd::Datum
Apache::Wyrd::Input::Set
Apache::Wyrd::Input::Opt
Apache::Wyrd::Input::Complex
Apache::Wyrd::Input::Condenser
Apache::Wyrd::Form::Preload
Apache::Wyrd::Form::View
Apache::Wyrd::ErrTag
Apache::Wyrd::ErrFlag
Apache::Wyrd::Interfaces::SmartInput
Apache::Wyrd::Var

The interface classes:

Apache::Wyrd::Interfaces::Mother
Apache::Wyrd::Interfaces::Setter
Apache::Wyrd::Interfaces::Stealth

The service classes:

Apache::Wyrd::Services::CodeRing
Apache::Wyrd::Services::FileCache
Apache::Wyrd::Services::Key
Apache::Wyrd::Services::SAK
Apache::Wyrd::Services::Tree

The search engine components:

Apache::Wyrd::Services::Index
Apache::Wyrd::Interfaces::Indexable
Apache::Wyrd::Services::SearchParser

Database-driven objects:

Apache::Wyrd::Lookup
Apache::Wyrd::MySQLForm
Apache::Wyrd::Query
Apache::Wyrd::Defaults

A cookie-authentication system:

Apache::Wyrd::Services::Auth
Apache::Wyrd::Services::LoginServer
Apache::Wyrd::Services::TicketPad
Apache::Wyrd::User
Apache::Wyrd::Interfaces::GetUser

And the debugging/misc. tools:

Apache::Wyrd::LogDump
Apache::Wyrd::Redirect
Apache::Wyrd::CSSGene
Apache::Wyrd::Debug

--------
NB: "Wyrd" is pronounced "word" or "weird"--use whichever one you like.