NAME
   JavaScript::Dependency::Manager - Manage your JavaScript dependencies

VERSION
   version 0.001002

SYNOPSIS
   First, annotate your javascript files with "provides" and/or "requires":

    // provides: Ack
    // requires: underscore
    var Ack = _.throttle(function(foo) {
      alert('ACK! ' + foo)
    }, 100)

    // etc, etc

   Now you can use "JavaScript::Dependency::Manager" to automatically
   create a list of files needed for a given "provision".

    use JavaScript::Dependency::Manager;

    my $mgr = JavaScript::Dependency::Manager->new(
      lib_dir => ['root/js/lib'],
      provisions => {
        underscore => ['root/js/lib/underscore/underscore.js'],
      },
    );

    my @files = $mgr->file_list_for_provisions(['Lynx.ui.form.MWHY']);

   Note that I manually set a provision above. That's because "underscore"
   is an external library, so I shouldn't edit it's source to set it's
   provisions.

DESCRIPTION
   This module simply helps you automatically create a list of necessary
   files based on a list of "modules", which are merely your way of
   identifying functions, objects, classes, or whatever else that you would
   like to load. It will correctly order the list of files to load based on
   your defined requirements.

TERMS
 requirement
   A "requirement" is simply a module that a given file needs to run.

 provision
   A "provision" is simply a module that a given file has within it.

METHODS
 file_list_for_provisions
    my @files = $mgr->file_list_for_provisions(['Foo', 'Bar'])

   This method returns a list of files needed to load a list of provisions.

ATTRIBUTES
 lib_dir
   required. An "ArrayRef" of directories to scan to create the list of
   "requirement"s and "provision"s.

 recurse
   False by default. Set to true if you want the tool to recurse into
   subdirectories of the "lib_dir".

 scan_files
   True by default. Set to false if you want the tool not to scan files at
   all, but instead use a provided list of "requirement"s and "provision"s.

DEDICATION
   "JavaScript::Dependency::Manager" module is dedicated to my namesake,
   Arthur Dale Schmidt. He was my grandfather as well as the inventor of a
   chemical called Sand Control 60 (SC60,) which was used in oil fields to
   reduce the need to redrill entire wells due to sand clogging.

AUTHOR
   Arthur Axel "fREW" Schmidt <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2012 by Arthur Axel "fREW" Schmidt.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.