The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package PDF::WebKit::Source;
use strict;
use warnings;

use Moo;
use namespace::clean;

has string => ( is => 'rw' );

around 'BUILDARGS' => sub {
  my $orig = shift;
  my $class = shift;
  if (@_ != 1) {
    die "Usage: ${class}->new(\$source)\n";
  }

  my $string = shift;
  return $class->$orig({ string => $string });
};

sub is_url {
  my $self = shift;
  return (!ref($self->string) && $self->string =~ /^https?:/i);
}

sub is_file {
  my $self = shift;
  return (!ref($self->string) && !$self->is_url);
}

sub is_html {
  my $self = shift;
  return ref($self->string) eq 'SCALAR';
}

sub content {
  my $self = shift;
  return ref($self->string) ? ${$self->string} : $self->string;
}

1;