NAME
    Types::HTML5 - types for parsing strings of HTML into DOMs

SYNOPSIS
       package My::Page {
          use Moo;
          use Types::HTML5 -types;
      
          has template => (
             is      => 'ro',
             isa     => HtmlTree,
             coerce  => 1,
          );
      
          sub output_page {
             ...;
          }
       }

STATUS
    This is still at a very early stage of development and has *no test suite*
    yet.

DESCRIPTION
    This type library provides useful type constraints and coercions for
    working with HTML5::DOM and XML::LibXML.

  Type Constraints
    `HtmlTree`
        A blessed HTML::DOM::Tree object. Coercions from HTML5::DOM::Document
        objects, XML::LibXML::Document objects, HTML5::DOM::Element objects,
        strings of HTML or XHTML, filehandles, and Path::Tiny objects.

    `HtmlDocument`
        A blessed HTML::DOM::Document object. Coercions from HTML5::DOM::Tree
        objects, XML::LibXML::Document objects, HTML5::DOM::Element objects,
        strings of HTML or XHTML, filehandles, and Path::Tiny objects.

    `HtmlElement`
        A blessed HTML5::DOM::Element object. Can coerce from
        XML::LibXML::Element objects.

    `HtmlComment`
        A blessed HTML5::DOM::Comment object. Can coerce from
        XML::LibXML::Comment objects and plain strings.

    `HtmlText`
        A blessed HTML5::DOM::Text object. Can coerce from XML::LibXML::Text
        objects and plain strings.

    `XmlDocument`
        A blessed XML::LibXML::Document object. Coercions from
        HTML5::DOM::Tree objects, HTML5::DOM::Document objects,
        HTML5::DOM::Element objects, strings of HTML or XHTML, filehandles,
        and Path::Tiny objects.

    `XmlElement`
        A blessed XML::LibXML::Element object. Can coerce from
        HTML5::DOM::Element objects.

    `XmlComment`
        A blessed XML::LibXML::Comment object. Can coerce from
        HTML5::DOM::Comment objects and plain strings.

    `XmlText`
        A blessed XML::LibXML::Text object. Can coerce from HTML5::DOM::Text
        objects and plain strings.

  Convenience Functions
    `str_to_html($str)`
        Converts a string of HTML to an HTML5::DOM::Tree.

    `str_to_xml($str)`
        Converts a string of HTML to an XML::LibXML::Document.

    `html_to_xml($node)`
        Converts from an HTML5::DOM node to an XML::LibXML node. Supports text
        nodes, comments, elements, documents, and trees.

    `xml_to_html($node)`
        Converts from an XML::LibXML node to a HTML5::DOM node. Supports text
        nodes, comments, elements, and documents. (XML::LibXML::Document
        becomes HTML5::DOM::Tree, not HTML5::DOM::Document.)

BUGS
    Please report any bugs to
    <http://rt.cpan.org/Dist/Display.html?Queue=Types-HTML5>.

SEE ALSO
    HTML5::DOM, XML::LibXML, Path::Tiny.

AUTHOR
    Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE
    This software is copyright (c) 2018 by Toby Inkster.

    This is free software; you can redistribute it and/or modify it under the
    same terms as the Perl 5 programming language system itself.

DISCLAIMER OF WARRANTIES
    THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
    WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
    MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.