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>
<![BAZ[baz baz baz]]>
<![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 )