Author image Marvin Humphrey
and 1 contributors

NAME

Boilerplater::File - Structured representation of the contents of a Boilerplater source file.

DESCRIPTION

An abstraction representing a file which contains Boilerplater code.

METHODS

new

    my $file_obj = Boilerplater::File->new(
        blocks       => \@blocks,            # required
        source_class => 'Dog::Dalmation',    # required
        parcel       => 'Dog',               # default: special
    );
  • blocks - An arrayref. Each element must be either a Boilerplater::Class, a Boilerplater::Parcel, or a Boilerplater::CBlock.

  • source_class - The class name associated with the source file, regardless of how what classes are defined in the source file. Example: If source_class is "Foo::Bar", that implies that the source file could be found at 'Foo/Bar.bp' within the source directory and that the output C header file should be 'Foo/Bar.h' within the target include directory.

  • parcel - A Boilerplater::Parcel or parcel name.

blocks

    my @blocks = $file->blocks;

Return all blocks as a list.

classes

    my @classes = $file->classes;

Return all Boilerplater::Class blocks from the file as a list.

get_modified set_modified

Accessors for the file's "modified" property, which is initially false.

get_source_class

Accessor.

c_path h_path bp_path

    # '/path/to/Source/Class.c', etc.
    my $c_path  = $file->c_path('/path/to');
    my $h_path  = $file->h_path('/path/to');
    my $bp_path = $file->bp_path('/path/to');

Given a base directory, return a path name derived from the File's source_class with the specified extension.

guard_name

    # e.g. "H_DOG_DALMATION"
    my $guard_name = $file->guard_name

Return a string used for an include guard in a C header, unique per file.

guard_start

Return a string opening the include guard.

guard_close

Return a string closing the include guard. Other classes count on being able to match this string.

COPYRIGHT AND LICENSE

Copyright 2008-2009 Marvin Humphrey

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