|
|
- #!/usr/bin/env perl
- use strict;
- use warnings;
- use ExtUtils::testlib;
-
- use Text::Markdown::Discount qw(markdown);
-
- =head1 NAME
-
- Markdown.pl - Convert Markdown syntax to (X)HTML
-
- =head1 DESCRIPTION
-
- This program is distributed as part of Perl's Text::Markdown module,
- illustrating sample usage.
-
- Markdown can be invoked on any file containing Markdown-syntax, and
- will produce the corresponding (X)HTML on STDOUT:
-
- $ cat file.txt
- This is a *test*.
-
- Absolutely _nothing_ to see here. _Just a **test**_!
-
- * test
- * Yup, test.
- $ Markdown.pl file.txt
- <p>This is a <em>test</em>.</p>
-
- <p>Absolutely <em>nothing</em> to see here. <em>Just a <strong>test</strong></em>!</p>
-
- <ul>
- <li>test</li>
- <li>Yup, test.</li>
- </ul>
-
- If no file is specified, it will expect its input from STDIN:
-
- $ echo "A **simple** test" | markdown
- <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 '---' | markdown
- <hr />
- $ echo '---' | markdown --html4tags
- <hr>
-
- =item help
-
- Shows this documentation
-
- =back
-
- =head1 AUTHOR
-
- Copyright 2004 John Gruber
-
- 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
- L<Text::Markdown.pm>'s full documentation.
-
- =head1 SEE ALSO
-
- L<Text::Markdown>, L<http://daringfireball.net/projects/markdown/>
-
- =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 Markdown, version $Text::Markdown::VERSION.\n";
- print "Copyright 2004 John Gruber\n";
- print "Copyright 2008 Tomas Doran\n";
- print "Parts contributed by several other people.";
- print "http://daringfireball.net/projects/markdown/\n\n";
- exit 0;
- }
- if ($cli_opts{'shortversion'}) { # Just the version number string.
- print $Text::Markdown::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::Markdown::Discount->new(empty_element_suffix => '>');
- }
- else {
- $m = Text::Markdown::Discount->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();
|