#!/usr/bin/perl
use strict; # https://perlmonks.org/?node_id=11112988
use warnings;
my $wiki =
'_/one *two*/ th/ree_ null _/four *five*/ six_ null _/se_ven *eig
+ht*/ nine_';
my $expected =
'<u><i>one <b>two</b></i> th/ree</u> null <u><i>four <b>five</b></
+i> six</u> null <u><i>se_ven <b>eight</b></i> nine</u>';
my %h = (
'*' => 'b' ,
'/' => 'i' ,
'_' => 'u' ,
);
my $html = $wiki =~ s{ (?:^|\s) \K ([*_/]+) | ([*_/]*) (?=$|\s) }
{ $1 ? $1 =~ s|.|<$h{$&}>|gr : $2 =~ s|.|</$h{$&}>|gr }gexr;
print $html eq $expected ? "passed" : "FAILED", "\n\n";
print $wiki, "\n\n", $expected, "\n\n", $html, "\n";
Outputs;
passed
_/one *two*/ th/ree_ null _/four *five*/ six_ null _/se_ven *eight*/
+nine_
<u><i>one <b>two</b></i> th/ree</u> null <u><i>four <b>five</b></i> si
+x</u> null <u><i>se_ven <b>eight</b></i> nine</u>
<u><i>one <b>two</b></i> th/ree</u> null <u><i>four <b>five</b></i> si
+x</u> null <u><i>se_ven <b>eight</b></i> nine</u>
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|