Text-Embed

 view release on metacpan or  search on metacpan

lib/Text/Embed.pm  view on Meta::CPAN

my $VARS      = '\$\((\w+)\)';

#
# Default handlers for parsing - see POD
# 

my %def_parse  =
(
    ':underscore' => qr/${NL}__([^_].*[^_])__$NL/,
    ':define'     => qr/${NL}#define\s+?(\S+?)(?:$NL|\s+?$NL|\s+?)/,
    ':cdata'      => sub{$_ = shift or return; 
                       return($$_ =~ m#\s*?<!\[(.+?)\[(.*?)\]\]>\s*#sgo);
                     },
);

$def_parse{':default'} = $def_parse{':underscore'};
$rex_parse             = join('|', keys %def_parse);

#
# Default handlers for processing - see POD
# 

lib/Text/Embed.pm  view on Meta::CPAN

    foo foo foo

=item :define

CPP-like format (%DATA is readonly - can be used to define constants):

    #define BAZ     baz baz baz
    #define FOO     foo foo foo
                    foo foo foo

=item :cdata

Line-agnostic CDATA-like format. Anything outside of tags is ignored.

    <![BAZ[baz baz baz]]>
    <![FOO[
        foo foo foo
        foo foo foo
    ]]>

=back

misc/Text-Embed.html  view on Meta::CPAN

<dd>
CPP-like format (%DATA is readonly - can be used to define constants):
</dd>
<dd>
<pre>
    #define BAZ     baz baz baz
    #define FOO     foo foo foo
                    foo foo foo</pre>
</dd>
<p></p>
<dt><strong><a name="item__3acdata">:cdata</a></strong><br />
</dt>
<dd>
Line-agnostic CDATA-like format. Anything outside of tags is ignored.
</dd>
<dd>
<pre>
    &lt;![BAZ[baz baz baz]]&gt;
    &lt;![FOO[
        foo foo foo
        foo foo foo

t/Text-Embed.t  view on Meta::CPAN


my @parsers;
my @procs;
my @names;
my $results;

my $DEBUG = shift;

BEGIN 
{ 
    @parsers = ('default','define','cdata');
    @procs   = ('raw','block-indent','block-noindent','trim','compress');
    @names   = ();
    $results = {};

    plan tests => 1 + (scalar(@parsers) * scalar(@procs)); 
};

#
# Create a .pm file that uses each parser and processor combo,
# based on the template in __DATA__

t/Text-Embed.t  view on Meta::CPAN


        $name =~ s#-#_#sgoi;

        my $src  = $DATA{PM_TEMPLATE};
        $src    .= "\n\n__DATA__\n\n";

        foreach my $k (keys %DATA)
        {
            next if $k eq "PM_TEMPLATE";
            $src.=  ($psr eq "define")  ? "$/#define $k$/$DATA{$k}" :
                    ($psr eq "cdata")   ? "<!\[$k\[$DATA{$k}]]> " :
                    ($psr eq "default") ? "$/__".$k."__$/$DATA{$k}$/" : "";
        }

        my %temp = (name=>$name,parser=>$psr,processor=>$prc);

        # test the interpolate function
        Text::Embed::interpolate(\$src, \%temp);

        print "creating $name.pm\n" if $DEBUG;
        open(my $out, ">$name.pm") or die $!;

t/Text-Embed.t  view on Meta::CPAN

__blah #define 
fdaklsjfa






__THREE__

/* pathological data for :cdata parser */

<![bar]>
<!baz]>
]>foo<![


<!-- 
these will break our modules too -->



( run in 0.608 second using v1.01-cache-2.11-cpan-454fe037f31 )