HTML-WebMake
view release on metacpan or search on metacpan
lib/HTML/WebMake/HTMLCleaner.pm view on Meta::CPAN
$attrs .= " ".$name;
} elsif ($val =~ /\"/) {
$val =~ s/\'/'/g;
$attrs .= " ".$name ."=\'".$val."\'";
} else {
$attrs .= " ".$name ."=\"".$val."\"";
}
}
my $tagend = '';
if ($self->{addxmlslashes} && $attrs !~ /\/\s*$/ &&
$tagname =~ /^${EMPTY_ELEMENT_TAGS}$/)
{
$tagend = " />"; # HTML-4, XHTML, XML style
} else {
$tagend = ">";
}
if ($self->{last_was_noninline_close_tag}) {
$self->add_current_indent();
}
if ($tagname eq 'img' && $self->{addimgsizes} &&
$attrs !~ /(height|width)/i &&
$imgsrc !~ /^(?:[a-z0-9A-Z]+:|\/)/)
{
$self->add_text ($self->{main}->fileless_subst
("(html-cleaner)", "<$tagname".$attrs.' ${IMGSIZE}>'));
} else {
$self->add_text ("<".$tagname, $attrs, $tagend);
}
}
# --------------------------------------------------------------------------
sub end {
my($self, $tagname, $origtext) = @_;
my $exiting_pre = ($tagname =~ /^${KEEP_FORMAT_TAGS}$/);
if ($exiting_pre) { $self->{in_pre}--; }
if ($tagname !~ /^${INLINE_TAGS}$/ && !$exiting_pre) {
if (!$self->{last_was_noninline_close_tag}) {
$self->add_text ("\n");
}
$self->close_indent();
$self->add_text ("</$tagname>\n");
$self->{last_was_noninline_close_tag} = 1;
} else {
$self->add_text ("</$tagname>");
$self->{last_was_noninline_close_tag} = 0;
}
$self->{last_text_was_whitespace} = 0;
}
# --------------------------------------------------------------------------
sub text {
my($self, $origtext, $is_cdata) = @_;
if ($self->{in_pre} > 0) {
$self->{last_was_noninline_close_tag} = 0;
$self->{last_text_was_whitespace} = 0;
$self->add_text ($origtext);
return;
} elsif ($origtext =~ /^\s*$/s) {
$self->{last_text_was_whitespace} = 1;
return;
}
$self->{last_was_noninline_close_tag} = 0;
$self->{last_text_was_whitespace} = 0;
$self->pack_text (\$origtext);
# or, to tidy up whitespace:
$self->add_text ($origtext);
}
# --------------------------------------------------------------------------
sub process {
my ($self, $origtext) = @_;
$self->add_text ("<?$origtext>\n");
$self->add_current_indent();
}
# --------------------------------------------------------------------------
sub comment {
my ($self, $origtext) = @_;
if (!$self->{nocomments}) {
$self->pack_text (\$origtext);
$self->add_text ("<!--$origtext-->\n");
$self->add_current_indent();
}
}
# --------------------------------------------------------------------------
sub declaration {
my ($self, $origtext) = @_;
$self->add_text ("<!$origtext>\n");
$self->add_current_indent();
}
###########################################################################
sub pack_text {
my($self, $txt) = @_;
if ($self->{pack} && !($self->{in_pre} > 0)) {
$$txt =~ s/\n\n+/\n/gm;
$$txt =~ s/[ \t]+/ /gm;
$$txt =~ s/^ / /gm;
$$txt =~ s/ $/ /gm;
my $indent = $self->get_current_indent();
$$txt =~ s/\n/\n${indent}/gs;
}
( run in 1.049 second using v1.01-cache-2.11-cpan-5b529ec07f3 )