Doc-Simply

 view release on metacpan or  search on metacpan

t/004-parser.t  view on Meta::CPAN

use strict;
use warnings;

use Test::Most;
use t::Test;

use Doc::Simply;
use Doc::Simply::Extractor;
use Doc::Simply::Assembler;
use Doc::Simply::Parser;

plan qw/no_plan/;

sub normalize {
    local $_ = shift;
    return join "\n", map { s/^\s*//; s/\s*$//; $_ } split m/\n/;
}

{
    my $content;
    my $source = <<'_END_';
/* 
 * @head2 This is a node
 */

// This should not be
_END_

    my $extractor = Doc::Simply::Extractor::SlashStar->new;
    my $comments = $extractor->extract($source);

    my $assembler = Doc::Simply::Assembler->new;
    my $blocks = $assembler->assemble($comments);

    my $parser = Doc::Simply::Parser->new;
    my $document = $parser->parse($blocks);

    like($content = $document->root->content_from, qr{
\Qroot\E\s*
\Qhead2 This is a node\E\s*
\Qbody\E\s*
    }sx);
}

{

    my $content;
    my $source = <<'_END_';
/*
 * @head2 Icky nesting
 * Some content
 *
 * @head1 Hello, World.
 *
 * @head2 Yikes. 
 * Some more content
 * With some *markdown* content!
 *
 *      And some more
 *      And some inline code
 *
 */

/* Ignore this...
*/

/* @body 
 * ...but grab **this**!
        */

// Another ignoreable comment
_END_

    my $extractor = Doc::Simply::Extractor::SlashStar->new;
    my $comments = $extractor->extract($source);



( run in 1.933 second using v1.01-cache-2.11-cpan-71847e10f99 )