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

VERSION
    version 0.001001

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 <frioux+cpan@gmail.com>

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.

