NAME
    Dist::Zilla::Plugin::MetaProvides::Package - Extract namespaces/version
    from traditional packages for provides

VERSION
    version 2.002000

SYNOPSIS
    In your "dist.ini":

        [MetaProvides::Package]
        inherit_version = 0    ; optional
        inherit_missing = 0    ; optional
        meta_noindex    = 1    ; optional

QUICK REFERENCE
      ->new(options={})
        finder => ?attr


      A>finder                            # ArrayRef[Str]

      ->dumpconfig                        # HashRef
      ->has_finder                        # via finder
      ->mvp_multivalue_args               # List
      ->provides

      A>_finder_objects                   # ArrayRef[FileFinder]
      A>_package_blacklist                # HashRef[Str]

      ->_blacklist_contains               # via _package_blacklist ( exists )
      ->_build_finder_objects             # for _finder_objects
      ->_found_files                      # ArrayRef[ File ]
      ->_packages_for(options=[])         # List[Record]
        0 => $filename
        1 => $content
        2 => $encoding
      ->_vivify_installmodules_pm_finder  # Plugin


      -~- Dist::Zilla::Role::MetaProvider::Provider
      ->new(options={})
        inherit_version => ?attr
        inherit_missing => ?attr
        meta_noindex    => ?attr

      [>] provides

      A>inherit_missing                 # Bool = 1
      A>inherit_version                 # Bool = 1
      A>meta_noindex                    # Bool = 1

      ->dumpconfig                      # HashRef
      ->metadata                        # { provides => ... }

      ->_apply_meta_noindex(options=[]) # Modified @items
        0..$# =>  @items
      ->_resolve_version(options=[])    # ( 'version' , $resolved )
        0     =>  $version              # ()
                                        # ()
      ->_try_regen_meta                 # HashRef


      -~- Dist::Zilla::Role::MetaProvider
      [>] metadata

      -~- Dist::Zilla::Role::Plugin
      ->new(options={})
        plugin_name => ^attr
        zilla       => ^attr
        logger      => ?attr

      A>logger                          #
      A>plugin_name                     # Str
      A>zilla                           # DZil
      ->log                             # via logger
      ->log_debug                       # via logger
      ->log_fatal                       # via logger
      ->mvp_multivalue_args             # ArrayRef
      ->mvp_aliases                     # HashRef
      ->plugin_from_config(options=[])  # Instance
        0 =>  $name
        1 =>  $arg
        2 =>  $section
      ->register_component(options=[])
        0 =>  $name
        1 =>  $arg
        2 =>  $section

CONSUMED ROLES
  Dist::Zilla::Role::MetaProvider::Provider
ROLE SATISFYING METHODS
  "provides"
    A conformant function to the Dist::Zilla::Role::MetaProvider::Provider
    Role.

   signature: $plugin->provides()
   returns: Array of Dist::Zilla::MetaProvides::ProvideRecord
ATTRIBUTES
  "finder"
    This attribute, if specified will

    *   Override the "FileFinder" used to find files containing packages

    *   Inhibit autovivification of the ".pm" file finder

    This parameter may be specified multiple times to aggregate a list of
    finders

PRIVATE ATTRIBUTES
  "_package_blacklist"
  "_finder_objects"
PRIVATE METHODS
  "_packages_for"
   signature: $plugin->_packages_for( $filename, $file_content )
   returns: Array of Dist::Zilla::MetaProvides::ProvideRecord
  "_vivify_installmodules_pm_finder"
  "_build_finder_objects"
  "_found_files"
OPTIONS INHERITED FROM Dist::Zilla::Role::MetaProvider::Provider
  "inherit_version"
    How do you want existing versions ( Versions hard-coded into files
    before running this plug-in )to be processed?

    *   DEFAULT: inherit_version = 1

        Ignore anything you find in a file, and just probe "DZIL->version()"
        for a value. This is a sane default and most will want this.

    *   inherit_version = 0

        Use this option if you actually want to use hard-coded values in
        your files and use the versions parsed out of them.

  "inherit_missing"
    In the event you are using the aforementioned ""inherit_version" = 0",
    this determines how to behave when encountering a module with no version
    defined.

    *   DEFAULT: inherit_missing = 1

        When a module has no version, probe "DZIL->version()" for an answer.
        This is what you want if you want to have some files with fixed
        versions, and others to just automatically be maintained by
        Dist::Zilla.

    *   inherit_missing = 0

        When a module has no version, emit a versionless record in the final
        metadata.

  "meta_noindex"
    This is a utility for people who are also using "MetaNoIndex", so that
    its settings can be used to eliminate items from the 'provides' list.

    *   meta_noindex = 0

        By default, do nothing unusual.

    *   DEFAULT: meta_noindex = 1

        When a module meets the criteria provided to "MetaNoIndex",
        eliminate it from the metadata shipped to Dist::Zilla

SEE ALSO
    *   Dist::Zilla::Plugin::MetaProvides

AUTHOR
    Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 by Kent Fredric
    <kentfredric@gmail.com>.

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

