Text-HTML-Turndown

 view release on metacpan or  search on metacpan

lib/Text/HTML/Turndown/Node.pm  view on Meta::CPAN

package Text::HTML::Turndown::Node 0.12;
use 5.020;
use Moo;
use experimental 'signatures';
use stable 'postderef';

our @blockElements = (
  'ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS',
  'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE',
  'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER',
  'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES',
  'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD',
  'TFOOT', 'TH', 'THEAD', 'TR', 'UL'
);
our %blockElements = map { $_ => 1, lc $_ => 1 } @blockElements;

sub _isBlock ($self) {
  $blockElements{ $self->nodeName }
};

our @voidElements = (
  'AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT',
  'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR'
);
our %voidElements = map { $_ => 1, lc $_ => 1 } @voidElements;


has '_node' => (
    is => 'ro',
    required => 1,
    handles => [qw[
        parentNode
        firstChild
        previousSibling
        nextSibling
        childNodes
        lastChild
        nodeName
        nodeValue
        nodeType
        textContent
        getAttribute
        isEqual

        toString

        find
    ]],
);

sub _isVoid( $self ) {
    $voidElements{ $self->nodeName }
}

sub _hasVoid( $self ) {
    return _has($self, \%voidElements)
}

has ['isVoid', 'hasVoid', 'isBlock', 'isMeaningfulWhenBlank', 'hasMeaningfulWhenBlank',
     'isCode'] => (
    is => 'ro',
    required => 1,
);

sub className( $self ) {
    $self->getAttribute('class');
}

sub _isCode( $self ) {
    return 1 if uc $self->nodeName eq 'CODE';
    my $p = $self->parentNode;
    if( $p and $p->can('nodeName')) {
        return _isCode($self->parentNode)
    };
}

our @meaningfulWhenBlankElements = (
  'A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT',
  'AUDIO', 'VIDEO'
);
our %meaningfulWhenBlankElements = map { $_ => 1, lc $_ => 1 } @meaningfulWhenBlankElements;



( run in 1.185 second using v1.01-cache-2.11-cpan-71847e10f99 )