e192f87
diff -ur Mozilla-PublicSuffix-v0.1.19/Build.PL Mozilla-PublicSuffix-v0.1.19.unbundle/Build.PL
e192f87
--- Mozilla-PublicSuffix-v0.1.19/Build.PL	2014-07-23 18:54:16.000000000 +0300
f83a003
+++ Mozilla-PublicSuffix-v0.1.19.unbundle/Build.PL	2015-06-22 15:53:59.652853750 +0300
e192f87
@@ -40,6 +40,7 @@
e192f87
 );
e192f87
 
e192f87
 my $dat_file = "effective_tld_names.dat";
e192f87
+my $system_dat_file = $builder->config('system_publicsuffix_list');
e192f87
 my $get_new_list = $builder->y_n(
e192f87
     "Check for a new version of the Public Suffix List?", "N"
e192f87
 );
e192f87
@@ -73,7 +74,13 @@
e192f87
 } IO::File->new($dat_file)->getlines;
e192f87
 
e192f87
 tie my @pm, "Tie::File", "lib/Mozilla/PublicSuffix.pm";
e192f87
-for (@pm) { s/(my %rules = qw\()\)/$1$rules)/ and last }
e192f87
+for (@pm) {
e192f87
+	if ($system_dat_file) {
e192f87
+		s/(my %rules = qw\(\);)/$1\n_parse_file(\\%rules,\"$system_dat_file\");/ and last
e192f87
+	} else {
e192f87
+		s/(my %rules = qw\()\)/$1$rules)/ and last
e192f87
+	}
e192f87
+}
e192f87
 untie @pm;
e192f87
 
e192f87
 $builder->create_build_script;
e192f87
diff -ur Mozilla-PublicSuffix-v0.1.19/lib/Mozilla/PublicSuffix.pm Mozilla-PublicSuffix-v0.1.19.unbundle/lib/Mozilla/PublicSuffix.pm
e192f87
--- Mozilla-PublicSuffix-v0.1.19/lib/Mozilla/PublicSuffix.pm	2014-07-23 18:54:16.000000000 +0300
f83a003
+++ Mozilla-PublicSuffix-v0.1.19.unbundle/lib/Mozilla/PublicSuffix.pm	2015-06-22 15:53:59.653853720 +0300
f83a003
@@ -3,6 +3,7 @@
f83a003
 use strict;
f83a003
 use warnings FATAL => 'all';
f83a003
 use utf8;
f83a003
+use open ":encoding(UTF-8)";
f83a003
 use Exporter qw(import);
f83a003
 use URI::_idna;
f83a003
 
f83a003
@@ -93,6 +94,19 @@
e192f87
     }
e192f87
 }
e192f87
 
e192f87
+sub _parse_file {
e192f87
+    my $rulesref = shift;
e192f87
+    my $dat_file = shift;
e192f87
+    open DAT ,"<:encoding(UTF-8)", "$dat_file";
e192f87
+    foreach (<DAT>) {
e192f87
+        s/\s//g;
e192f87
+        if    ( s/^!// )        { $rulesref->{$_} = "e" }  # exception rule
e192f87
+        elsif ( s/^\*\.// )     { $rulesref->{$_} = "w" }  # wildcard rule
e192f87
+        elsif ( /^[\p{Word}]/ ) { $rulesref->{$_} = "i" }  # identity rule
e192f87
+    }
e192f87
+    close DAT;
e192f87
+}
e192f87
+
e192f87
 1;
e192f87
 =encoding utf8
e192f87