Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

144 lines (105 sloc) 3.585 kb
#!/usr/bin/env perl
use strict;
use warnings;
use Text::MultiMarkdown qw(markdown);
=head1 NAME
MultiMarkdown.pl - Convert MultiMarkdown syntax to (X)HTML
=head1 DESCRIPTION
This program is distributed as part of Perl's Text::MultiMarkdown module,
illustrating sample usage.
MultiMarkdown.pl can be invoked on any file containing MultiMarkdown-syntax, and
will produce the corresponding (X)HTML on STDOUT:
$ cat file.txt
[MultiMarkdown][] *extends* the very well-known [Markdown][] syntax.
[MultiMarkdown]: http://fletcherpenney.net/What_is_MultiMarkdown
[Markdown]: http://daringfireball.net/projects/markdown/
$ multimarkdown file.txt
<p><a href="http://fletcherpenney.net/What_is_MultiMarkdown">MultiMarkdown</a> <em>extends</em> the very well-known <a href="http://daringfireball.net/projects/markdown/">Markdown</a> syntax.</p>
If no file is specified, it will expect its input from STDIN:
$ echo "A **simple** test" | multimarkdown
<p>A <strong>simple</strong> test</p>
=head1 OPTIONS
=over
=item version
Shows the full information for this version
=item shortversion
Shows only the version number
=item html4tags
Produce HTML 4-style tags instead of XHTML - XHTML requires elements
that do not wrap a block (i.e. the C<hr> tag) to state they will not
be closed, by closing with C</E<gt>>. HTML 4-style will plainly output
the tag as it comes:
$ echo '---' | multimarkdown
<hr />
$ echo '---' | multimarkdown --html4tags
<hr>
=item help
Shows this documentation
=back
=head1 AUTHOR
Copyright 2004 John Gruber
Copyright 2006 Fletcher Penny
Copyright 2008 Tomas Doran
The manpage was written by Gunnar Wolf <gwolf@debian.org> for its use
in Debian systems, but can be freely used elsewhere.
For full licensing information, please refer to
Text::MultiMarkdown.pm's full documentation.
=head1 SEE ALSO
L<Text::MultiMarkdown>, L<http://fletcherpenney.net/What_is_MultiMarkdown>
=cut
#### Check for command-line switches: #################
my %cli_opts;
use Getopt::Long;
Getopt::Long::Configure('pass_through');
GetOptions(\%cli_opts,
'version',
'shortversion',
'html4tags',
'help'
);
if ($cli_opts{'version'}) { # Version info
print "\nThis is MultiMarkdown, version $Text::MultiMarkdown::VERSION.\n";
print "Copyright 2004 John Gruber\n";
print "Copyright 2006 Fletcher Penny\n";
print "Copyright 2008 Tomas Doran\n";
print "Parts contributed by several other people.";
print "http://fletcherpenney.net/MultiMarkdown/\n\n";
exit 0;
}
if ($cli_opts{'shortversion'}) { # Just the version number string.
print $Text::MultiMarkdown::VERSION;
exit 0;
}
if ($cli_opts{'help'}) {
for my $dir (split m/:/, $ENV{PATH}) {
my $cmd = "$dir/perldoc";
exec($cmd, $0) if (-f $cmd and -x $cmd);
}
die "perldoc could not be found in your path - Cannot show help, sorry\n";
}
my $m;
if ($cli_opts{'html4tags'}) { # Use HTML tag style instead of XHTML
$m = Text::MultiMarkdown->new(empty_element_suffix => '>');
}
else {
$m = Text::MultiMarkdown->new;
}
sub main {
my (@fns) = @_;
my $f;
if (scalar @fns) {
foreach my $fn (@fns) {
die("Cannot find file $fn") unless (-r $fn);
my $fh;
open($fh, '<', $fn) or die;
$f = join('', <$fh>);
close($fh) or die;
}
}
else { # STDIN
local $/; # Slurp the whole file
$f = <>;
}
return $m->markdown($f);
}
print main(@ARGV) unless caller();
Jump to Line
Something went wrong with that request. Please try again.