#!/usr/bin/perl use strict; use warnings; use lib ('lib'); use Getopt::Declare; use MKDoc::Text::Structured; our $VERSION = $MKDoc::Text::Structured::VERSION; my $usage = q( [nocase] [strict] [mutex: --body-only --inline-only --entities-only] -h display this help -v display information about version --external-stylesheet set external stylesheet as --title set page title as <title> --body-only output only the <body> tag content --inline-only don't create any block-level tags --entities-only don't create any tags at all ); my $arg = new Getopt::Declare ($usage); my $title = ''; if ($arg->{'--title'}) { $title = $arg->{'--title'}; $title = MKDoc::Text::Structured::Inline::process_entities_only ($title); } my $style = ''; if ($arg->{'--external-stylesheet'}) { $style = $arg->{'--external-stylesheet'}; $style = MKDoc::Text::Structured::Inline::process_entities_only ($style); $style = qq(<style media="screen" type="text/css" title="Screen style sheet"> \@import url($style); </style>\n); } my $text = join '', <STDIN>; my $html; if ($arg->{'--inline-only'}) { $html = MKDoc::Text::Structured::Inline::process ($text); } elsif ($arg->{'--entities-only'}) { $html = MKDoc::Text::Structured::Inline::process_entities_only ($text); } else { $html = MKDoc::Text::Structured::process ($text); } unless ($arg->{'--body-only'} or $arg->{'--inline-only'} or $arg->{'--entities-only'}) { print STDOUT qq(<?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>$title $style $html ); } else { print STDOUT $html; } 1; __END__ =head1 NAME text2xhtml - Utility to convert plain text to HTML =head1 Synopsis text2xhtml --title 'Read Me' < README > readme.html text2xhtml --body-only < disclaimer.txt > ssi/disclaimer.html echo '(c) Bruno Postle -- 2005' | text2xhtml --entities-only > ssi/copy.html =head1 DESCRIPTION `text2xhtml' is a command-line utility program for converting simple plain text into valid XHTML files or fragments. It uses the L library to handle the conversion, so standard plain text formatting conventions such as asterisks for bulleted lists, dashes to underline a headline and two carriage returns to start a new paragraph are supported. Lots of other standard 'email' type formatting is supported, see the MKDoc::Text::Structured documentation for more details: L =head1 Calling syntax text2xhtml [-h] [-v] [--external-stylesheet ] [--title ] [--body-only|--inline-only|--entities-only] =head2 Options =over =item -h The I<-h> option will display a short usage summary. =item -v This option displays the version number of L<MKDoc::Text::Structured> =item --external-stylesheet <path> Use this option to specify an external stylesheet, this can be a relative path, or an absolute URL. This option has no effect when producing XHTML fragments with any of the C<--body-only>, C<--inline-only> or C<--entities-only> options. =item --title <title> Use this option to set the page title. If ommitted, the <title> tag is left empty. This option has no effect when producing XHTML fragments with any of the C<--body-only>, C<--inline-only> or C<--entities-only> options. =item --body-only Output the fragment of text normally found inside the <body> tag. This fragment will include block level tags such as <p> and <ul>, but since it has no enclosing tag is not well-formed XML. =item --inline-only Don't create any block-level tags, this will create a fragment with inline tags such as <strong> or <abbr>, but no block level tags such as <p> or <ul>. =item --entities-only Don't create any tags at all, this will still convert various constructs in the fragment to HTML entities such as & > &emdash; © etc.. but will not generate any HTML tags such as <p> or <strong>. =back =head1 License This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =head1 See Also L<perl>, L<MKDoc::Text::Structured> =head1 Author Bruno Postle, E<lt>bruno (at) mkdoc.comE<gt> =cut