The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;
use Test::More tests => 9;    # last test to print
use Data::Dumper;
use v5.10;
use Regexp::Grammars;
use Plosurin;


my $p   = new Plosurin::;

my $str = <<'TXT';
{namespace Test.more}
/**
 * Commets text
 * @param test Test param
 * @param mode Mode for tempalate
 */
{template .Hello}
<p>Ok</p> 
asdad
{/template}
TXT
isa_ok $p->parse($str),"Plo::File","return object";
$str = <<'TXT2';
{namespace rname.sample}
/**
  * Comment line1
  * continue
  * @param? par1 Some comment
  * @param par2 Some comment
 */
{template .Hello}
  <div>Test</div>
{/template}

/**
  * Comment line
  * @param par1 Some comment
  * @param par2 Some comment
 */
{template .Hello1}
<div>Test</div>
{/template}
TXT2
my $f1 = $p->parse($str);
is scalar($f1->templates), 2,"2 templates";
is $f1->namespace,"rname.sample", 'check namespace';
my ($t1,$t2) = $f1->templates;
is $t1->name, '.Hello','template name';
ok ($t1->comment =~ m/Comment .* line1 .* continue/xs,"more than 1 comment line ");
is $t1->params(), 2 ,"get params";

is_deeply [ sort keys %{ (Plosurin::Context::->new($f1))->name2tmpl } ],
      [
          'rname.sample.Hello',
          'rname.sample.Hello1'
        ], 'get list of names';

$str = <<'TXT2';
{namespace Main.sample}
/**
  * Comment line1
  * continue
  * @param? par1 Some comment
  * @param par2 Some comment
 */
{template .sub}
  <div>Test</div>
{/template}

/**
  * Comment line
  * @param par1 Some comment
  * @param par2 Some comment
 */
{template .main}
  <div>Test</div>
  {call .sub data="all"/}
{/template}
TXT2

my $file = $p->parse($str);
ok ($p->as_perl5({package=>"MyApp"},$file) =~ m/Main_sample_sub/, "convert call"); 

$str=<<'TXT3';
{namespace Test.Sdsr}
/* * asdasd  */
{template .soyhtml}
  call .page
{/template}

/**
  * Comment line1
  * continue
  * @param? par1 Some comment
  * @param par2 Some comment
 */
{template .sub}
  <div>Test</div>
{/template}

/**
  * test call method
  * @param none comment
  */
{template .page}
 </html>
{/template}

TXT3

=pod
my $q = qr{
     <extends: Plosurin::Template::Grammar>
    <matchline>
    #    <debug:step>
    \A <File> \Z
}xms;

if ($str =~ $q) {
    say Dumper({%/})
} else {"No eq!"}

exit;
=cut
my $f2 = $p->parse($str, 's');
is scalar($f2->templates),3 ,"java doc without param";