Outthentic-DSL
view release on metacpan or search on metacpan
lib/Outthentic/DSL.pm view on Meta::CPAN
=over
=item *
check expression is always single line string
=item *
input text is parsed in line by line mode, thus every line is validated against a single line check expression
=back
Here is example.
Input text:
Multiline
string
here
DSL code:
# check list
# always
# consists of
# single line expressions
Multiline
string
here
regexp: Multiline \n string \n here
Results:
+--------+---------------------------------------+
| status | message |
+--------+---------------------------------------+
| OK | matches "Multiline" |
| OK | matches "string" |
| OK | matches "here" |
| FAIL | matches /Multiline \n string \n here/ |
+--------+---------------------------------------+
Use text blocks if you want to I<represent> multiline checks.
=head2 Multilines in code expressions, generators and validators
Perl expressions, validators and generators could contain multilines expressions
There are two ways to write multiline expressions:
=over
=item *
using back slash delimiters to split multiline string to many chunks
=item *
using HERE documents expressions
=back
=head3 Back slash delimiters
C<\> delimiters breaks a single line text on a multi lines.
Example:
# What about to validate stdout
# With sqlite database entries?
generator: \
use DBI; \
my $dbh = DBI->connect("dbi:SQLite:dbname=t/data/test.db","",""); \
my $sth = $dbh->prepare("SELECT name from users"); \
$sth->execute(); \
my $results = $sth->fetchall_arrayref; \
[ map { $_->[0] } @${results} ] \
=head3 HERE documents expressions
Is alternative to make your multiline code more readable:
# What about to validate stdout
# With sqlite database entries?
generator: <<CODE
use DBI;
my $dbh = DBI->connect("dbi:SQLite:dbname=t/data/test.db","","");
my $sth = $dbh->prepare("SELECT name from users");
$sth->execute();
my $results = $sth->fetchall_arrayref;
[ map { $_->[0] } @${results} ]
CODE
=head1 Captures
Captures are pieces of data get captured when parser validate lines against a regular expressions:
Input text:
# my family ages list.
alex 38
( run in 0.915 second using v1.01-cache-2.11-cpan-71847e10f99 )