HTML-HTML5-Writer
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/HTML/HTML5/Writer.pm view on Meta::CPAN
DOCTYPE_XHTML_BASIC_10 => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd">',
DOCTYPE_XHTML_BASIC_11 => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">',
DOCTYPE_HTML4_RDFA => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/html401-rdfa11-1.dtd">',
DOCTYPE_HTML401_RDFA11 => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/html401-rdfa11-1.dtd">',
DOCTYPE_HTML401_RDFA10 => '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/html401-rdfa-1.dtd">',
DOCTYPE_XHTML_RDFA10 => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">',
DOCTYPE_XHTML_RDFA11 => '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.1//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-2.dtd">',
};
our $VERSION = '0.201';
our %EXPORT_TAGS = (
doctype => [qw(DOCTYPE_NIL DOCTYPE_HTML32 DOCTYPE_HTML4 DOCTYPE_HTML5
DOCTYPE_LEGACY DOCTYPE_XHTML1 DOCTYPE_XHTML11 DOCTYPE_XHTML_BASIC
DOCTYPE_XHTML_RDFA DOCTYPE_HTML2 DOCTYPE_HTML40 DOCTYPE_HTML40_STRICT
DOCTYPE_HTML40_LOOSE DOCTYPE_HTML40_FRAMESET DOCTYPE_HTML401
DOCTYPE_HTML401_STRICT DOCTYPE_HTML401_LOOSE DOCTYPE_HTML401_FRAMESET
DOCTYPE_XHTML1_STRICT DOCTYPE_XHTML1_LOOSE DOCTYPE_XHTML1_FRAMESET
DOCTYPE_XHTML_MATHML_SVG DOCTYPE_XHTML_BASIC_10 DOCTYPE_XHTML_BASIC_11
DOCTYPE_HTML4_RDFA DOCTYPE_HTML401_RDFA11 DOCTYPE_HTML401_RDFA10
DOCTYPE_XHTML_RDFA10 DOCTYPE_XHTML_RDFA11)]
);
our @EXPORT_OK = @{ $EXPORT_TAGS{doctype} };
our @VoidElements = qw(area base br col command embed hr
img input keygen link meta param source track wbr);
our @BooleanAttributes = qw(
hidden
audio@autoplay audio@preload audio@controls audio@loop
button@autofocus button@disabled button@formnovalidate
command@checked command@disabled
details@open
dl@compact
fieldset@disabled
form@novalidate
hr@noshade
iframe@seamless
img@ismap
input@autofocus input@checked input@disabled input@formnovalidate
input@multiple input@readonly input@required
keygen@autofocus keygen@disabled
ol@reversed
optgroup@disabled
option@disabled option@selected
script@async script@defer
select@autofocus select@disabled select@multiple select@readonly
select@required
style@scoped
textarea@autofocus textarea@disabled textarea@required
time@pubdate
track@default
video@autoplay video@preload video@controls video@loop
);
our @OptionalStart = qw(html head body tbody);
our @OptionalEnd = qw(html head body tbody dt dd li optgroup
option p rp rt td th tfoot thead tr);
sub new
{
my ($class, %opts) = @_;
my $self = bless \%opts => $class;
$self->{'markup'} //= 'html';
$self->{'charset'} //= 'utf8';
$self->{'refs'} //= 'hex';
$self->{'doctype'} //= ($self->is_xhtml? DOCTYPE_LEGACY : DOCTYPE_HTML5);
$self->{'polyglot'} //= !!$self->is_xhtml;
return $self;
}
sub is_xhtml
{
my ($self) = @_;
return ($self->{'markup'} =~ m'^(xml|xhtml|application/xml|text/xml|application/xhtml\+xml)$'i);
}
sub is_polyglot
{
my ($self) = @_;
return $self->{'polyglot'};
}
sub should_quote_attributes
{
my ($self) = @_;
return $self->{'quote_attributes'} if exists $self->{'quote_attributes'};
return $self->is_xhtml || $self->is_polyglot;
}
sub should_slash_voids
{
my ($self) = @_;
return $self->{'voids'} if exists $self->{'voids'};
return $self->is_xhtml || $self->is_polyglot;
}
sub should_force_end_tags
{
my ($self) = @_;
return $self->{'end_tags'} if exists $self->{'end_tags'};
return $self->is_xhtml || $self->is_polyglot;
}
sub should_force_start_tags
{
my ($self) = @_;
return $self->{'start_tags'} if exists $self->{'start_tags'};
return $self->is_xhtml || $self->is_polyglot;
}
sub document
{
my ($self, $document) = @_;
my @childNodes = $document->childNodes;
return $self->doctype
. join '', (map { $self->_element_etc($_); } @childNodes);
}
sub doctype
{
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.331 second using v1.00-cache-2.02-grep-82fe00e-cpan-d29e8ade9f55 )