| Text-InHTML documentation | Contained in the Text-InHTML distribution. |
Text::InHTML - Display plain text in HTML
use Text::InHTML; my $html = Text::InHTML::encode_plain($plain_text_text); my $syntax_higlighted_diff = Text::InHTML::encode_diff($plain_text_diff);
In its simplest form it turns a plain text string into HTML that when rendered retains its whitespace without pre tags or pre-like css. Also HTML is encoded so no HTML is rendered like it would be with pre tags. Useful for displaying source code or a text file on a web page exactly as-is.
More advanced useage includes syntax highlighting.
None by default.
Any encode_* is exportable
The tag :common does: encode_plain encode_whitespace encode_perl encode_diff encode_html encode_css encode_sql encode_mysql encode_xml encode_dtd encode_xslt encode_xmlschema
Returns an HTML and whitespace encoded version of $plain_text_string
encode_plain($plain_text_string);
$tabs is the number of spaces a tab should be considered to be, default is 4
encode_plain($plain_text_string, $tabs);
Mostly a utility function, returns whitespace encoded version of $string
encode_whitespace($tring);
$tabs is the number of spaces a tab should be considered to be, default is 4
encode_whitespace($plain_text_string, $tabs);
You can call Text::InHTML::encode_whatever(), where "whatever" is a "format" as listed under "Processing text" at Syntax::Highlight::Universal
Note: if the format has a dash, like "html-css" then you need to call it with an underscore in place of each - like so:
Text::InHTML::encode_html_css()
and it will return HTML that is syntax highlighted (what Syntax::Highlight::Universal does) *and* retains whitespace (what Syntax::Highlight::Universal does not do)
my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string);
my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string, $syntax);
my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string, $syntax, $tabs);
my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string, undef, $tabs);
my $syntax_highlighted_source_code = Text::InHTML::encode_perl($string, {}, $tabs);
$tabs is the number of spaces a tab should be considered to be, default is 4
If Syntax::Highlight::Universal is installed, it calls Syntax::Highlight::Universal's highlight method with the given format, othersise it simply does encode_plain()
Additionally $syntax can be a hashref which gives you fine grained control over the Syntax::Highlight::Universal object.
Its keys and values are as follows:
Value is the same as Syntax::Highlight::Universal's highlight() method's 3rd argument.
Value is a code ref whose only argument if the Syntax::Highlight::Universal object that will next be used to process the $string
Function(s) to facilitate javascript highlighters like google's syntax highlighter framework.
Daniel Muey, http://drmuey.com/cpan_contact.pl
Copyright (C) 2006 by Daniel Muey
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.
| Text-InHTML documentation | Contained in the Text-InHTML distribution. |
package Text::InHTML; use strict; use warnings; use version;our $VERSION = qv('0.0.4'); require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw( encode_plain encode_whitespace encode_perl encode_diff encode_html encode_css encode_sql encode_mysql encode_xml encode_dtd encode_xslt encode_xmlschema ); our %EXPORT_TAGS = ('common' => \@EXPORT_OK); sub import { my ($me, @gimme) = @_; my %seen; @seen{ @EXPORT_OK } = (); for my $func (@gimme) { next if exists $seen{ $func }; push @EXPORT_OK, $func if $func =~ m{^encode_\w+$}; } } sub encode_whitespace { my ($string, $tabs) = @_; $tabs = 4 if !defined $tabs || $tabs !~ m/^\d+$/; my $spaces = ' ' x $tabs; $string =~ s{\n}{<br />\n}g; $string =~ s{\t}{$spaces}g; $string =~ s{[ ]{5}}{ }g; $string =~ s{[ ]{3}}{ }g; $string =~ s{[ ]{2}}{ }g; return $string; } sub encode_plain { my ($string, $tabs) = @_; require HTML::Entities; return Text::InHTML::encode_whitespace( HTML::Entities::encode($string, '<>&"'), $tabs ); } sub AUTOLOAD { my($string, $syntax, $tabs) = @_; $syntax = {} if !defined $syntax || ref $syntax ne 'HASH'; my ($format) = our $AUTOLOAD =~ m{encode_(\w+(-\w+)*)}; die "Could not autoload $AUTOLOAD" if !$format; # only dies when they don't follow the rules $format =~ s{_}{-}g; if(eval { require Syntax::Highlight::Universal; }) { my $hl = Syntax::Highlight::Universal->new(); $syntax->{'pre_proc'}->($hl) if ref $syntax->{'callbacks'} eq 'CODE'; return Text::InHTML::encode_whitespace( $hl->highlight($format, $string, $syntax->{'callbacks'}), $tabs ); } return Text::InHTML::encode_plain( $string ); } 1; __END__