The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!perl
use strict;
use warnings;

use Test::More 'no_plan';

BEGIN { use_ok("Macro::Micro"); }

my $cpp = Macro::Micro->new(macro_format => qr/^(#(\w+.*))$/m);

$cpp->register_macros(
  qr/\Ainclude\s+.*/i => sub {
    my ($macro_name) = @_;
    my ($file) = $macro_name =~ /\Ainclude\s+["<]([\/\w.]+)[>"]/;
    return "(contents of $file)"
  }
);


my $source = <<END_C;

#include <sys/face.h>
#include "yourface.h"

int i[80];

END_C

my $result = <<END_C;

(contents of sys/face.h)
(contents of yourface.h)

int i[80];

END_C

is($cpp->expand_macros($source), $result, "lame cpp works");