HTML-Untemplate
view release on metacpan or search on metacpan
lib/HTML/Linear/Path.pm view on Meta::CPAN
package HTML::Linear::Path;
# ABSTRACT: represent paths inside HTML::Tree
use strict;
use utf8;
use warnings qw(all);
use JSON;
use Moo;
use MooX::Types::MooseLike::Base qw(:all);
use HTML::Linear::Path::Colors;
## no critic (ProhibitPackageVars)
our $VERSION = '0.019'; # VERSION
has json => (
is => 'ro',
isa => InstanceOf['JSON'],
default => sub { JSON->new->ascii->canonical },
lazy => 1,
);
has address => (is => 'rw', isa => Str, required => 1);
has attributes => (is => 'ro', isa => HashRef[Str], required => 1);
has is_groupable=> (is => 'rw', isa => Bool, default => sub { 0 });
has key => (is => 'rw', isa => Str, default => sub { '' });
has strict => (is => 'ro', isa => Bool, default => sub { 0 });
has tag => (is => 'ro', isa => Str, required => 1);
use overload '""' => \&as_string, fallback => 1;
our %groupby = (
class => [qw(*)],
id => [qw(*)],
name => [qw(input meta)],
'http-equiv'=> [qw(meta)],
property => [qw(meta)],
rel => [qw(link)],
);
our %tag_weight = (
title => 15,
h1 => 10,
h2 => 9,
h3 => 8,
h4 => 7,
h5 => 6,
h6 => 5,
center => 3,
strong => 2,
b => 2,
u => 1,
em => 1,
a => 1,
sup => -1,
sub => -1,
samp => -1,
pre => -1,
kbd => -1,
code => -1,
blockquote => -1,
);
our (%xpath_wrap) = (%{$HTML::Linear::Path::Colors::scheme{default}});
sub as_string {
my ($self) = @_;
return $self->key if $self->key;
my $ref = {
_tag => $self->tag,
addr => $self->address,
};
$ref->{attr} = $self->attributes if keys %{$self->attributes};
return $self->key($self->json->encode($ref));
}
sub as_xpath {
( run in 0.734 second using v1.01-cache-2.11-cpan-39bf76dae61 )