# File::Type::Builder - phpMan

## NAME
    [File::Type::Builder] - parse mime-magic and generate code

## SYNOPSIS
        my $build = [File::Type::Builder]->new();

        while (<magic>) {
          chomp;
          my $parsed = $build->parse_magic($_);

          my $code   = $build->string_start($parsed);
          (or string_offset or beshort)
        }

## DESCRIPTION
    Reads in the mime-magic file format and translates it to code. (This
    documentation would be longer if I really expected anyone other than me
    to run the code.)

## METHODS
  new
    Creates a new [File::Type::Builder] object.

  parse_magic
    Pulls apart a line of a mime-magic file using a string of regular
    expressions.

    An example mime-magic file can be found in cleancode CVS at
    <<http://cleancode.org/cgi-bin/viewcvs.cgi/email/mime-magic.mime?rev=1.1>.
    1.1>

  string
    Builds code to match magic that's of type string.

    Has to do some cleverness to make the regular expression work properly.

  be
    Builds code to match 'beshort' and 'belong' magic (eg audio/mpeg,
    image/jpeg).

## PRIVATE METHODS
  _substr_matching
    Sometimes the data is smaller than the offset we're looking for in the
    file. If this is the case, then the file is obviously not of that type,
    and furthermore we should avoid issuing a couple of warnings that Perl
    would otherwise emit.

    This subroutine generates this code.

  _get_escapes
    Returns a reference to a hash defining characters that should not be
    escaped.

## TODO
        * Add handlers for other magic types (bedate, byte, etc)

        * Make verbosity/logging nicer.

        * Find more edge cases.

        * Remove redundant 'if (length $data > 0)' check.

    Longer term:

        * Fix for multiple magic format types?

## BUGS
    Incomplete. Some known issues with odd entries in mime-magic. Skips some
    mime-magic lines.

## SEE ALSO
    [File::Type], which is partially generated by this module.

## AUTHOR
    Paul Mison <<pmison@fotango.com>>

## COPYRIGHT
    Copyright 2003 Fotango Ltd.

## LICENSE
    Licensed under the same terms as Perl itself.

