Skip to content

Instantly share code, notes, and snippets.

@zoffixznet
Created October 22, 2016 02:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zoffixznet/88638493240c95c7105ccbf33dd050c8 to your computer and use it in GitHub Desktop.
Save zoffixznet/88638493240c95c7105ccbf33dd050c8 to your computer and use it in GitHub Desktop.
role Pod::Walker::Preprocessor {
has %!aliases;
multi method visit(Str $node) { }
multi method visit(Pod::FormattingCode $node) {
$node.contents = %!aliases{$node.contents.first} if $node.type eq 'A';
}
multi method visit(Pod::Block::Named $node) {
return self.addAlias($node) if $node.name eq 'alias';
$node.contents.map({ self.visit($_) });
}
multi method visit($node) {
eager $node.contents.map({ say $_; });
}
submethod addAlias($node) {
my @contents = $node.contents[0].contents.split(' ');
$node.contents.split(' ');
%!aliases{@contents[0]} = @contents[1..*-1];
}
}
=begin AliasTest
=alias PROGNAME Earl Irradiatem Eventually
=alias VENDOR 4D Kingdoms
=alias TERMS_URL L<http://www.4dk.com/eie>
The use of A<PME> is subject to the terms and conditions
laid out by A<VENDOR>, as specified at A<TERMS_URL>.
=end AliasTest
Pod::Walker::Preprocessor.new().visit($=pod[0]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment