☼ 林永忠 ☼ > Inline-Mason-0.07 > Inline::Mason

Download:
Inline-Mason-0.07.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.07   Source  

NAME ^

Inline::Mason - Inline Mason Script

SYNOPSIS ^

    package MY::Mason;
    use Inline::Mason 'as_subs';
    our @ISA = qw(Inline::Mason);

    print Inline::Mason::generate('HELLO');
    print Inline::Mason::HELLO();
    print HELLO();
    print NIFTY(lang => 'Perl');



    __END__

    __HELLO__
    % my $noun = 'World';
    Hello <% $noun %>!
    How are ya?

    __NIFTY__
    <% $ARGS{lang} %> is nifty!

DESCRIPTION ^

This module enables you to embed mason scripts in your perl code. Using it is simple, much is shown in the above.

OPTIONS

as_subs

Invoking Inline::Mason with it may let you treat virtual files as subroutines and call them directly.

passive

If it is passed, the module will not spontaneously load mason scripts until you explicitly load them.

FUNCTIONS

load_mason

Create mason scripts in place, and you can pass a list of pairs.

    Inline::Mason::load_mason
    (
     BEATLES
     =>
     'Nothing\'s gonna change my <% $ARGS{what} %>',
     # ... ... ...
     );

    print BEATLES(what => 'world');

load_file

Load an external file manually and explicitly, and the scripts will belong to the caller's package. This is a safer and more robust way when Inline::Mason is used across several files and packages.

    use Inline::Mason qw(passive as_subs);
    Inline::Mason::load_file('external_mason.txt');

EXTERNAL MASON ^

As is said in the above, load_file serves the purpose. Also, you can specify the files wherein mason scripts reside when you first use the module. All you need to do is pass their names when you use the module, and then Inline::Mason will actively process them.

  use Inline::Mason 'as_subs', [qw(external_mason.txt)];

When duplicated mason script's marker appears, new one overrides the old one.

PER-PACKAGE MASON ^

Inline mason scripts are specific to packages. It means if you load virtual files within two different package context, files with the same marker will be viewed as different entities.

An small example is illustrated below.

File A.pm

  package A;
  use Inline::Mason qw(as_subs);
  1;
  __END__
  __Mason__
  Hello, World.

File B.pm

  package B;
  use Inline::Mason qw(as_subs);
  require 'A.pm';
  package A;
  print Mason();        # Hello, World.
  package B;
  print Mason();        # Hola, el mundo.
  1;
  __END__
  __Mason__
  Hola, el mundo.

Text::MicroMason methods ^

You can also call methods provided by Text::MicroMason using Inline::Mason.

  Inline::Mason::execute( $hello );
  Inline::Mason::safe_execute( $hello );
  Inline::Mason::try_execute( $hello );

  $n = Inline::Mason::compile( $nifty );
  $n->(lang => "Perl");

  Inline::Mason::execute_file( 't/external_mason', lang => "Perl" );

SEE ALSO ^

See Inline::Mason::OO for an object-oriented and extended style of Inline::Mason

This module uses Text::MicroMason as its backend instead of HTML::Mason, because it is much lighter and more accessible for this purpose. Please go to Text::MicroMason for details and its limitations.

CAVEAT ^

This module is not mature yet, and everything is subject to changes. Use it with your own caution.

COPYRIGHT AND LICENSE ^

Copyright (C) 2004 by Yung-chung Lin (a.k.a. xern) <xern@cpan.org>

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

syntax highlighting: