diff options
Diffstat (limited to 'TLD/generate.pl')
-rw-r--r-- | TLD/generate.pl | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/TLD/generate.pl b/TLD/generate.pl new file mode 100644 index 0000000..472ca26 --- /dev/null +++ b/TLD/generate.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl -w +# use strict; +use open ':utf8'; +use Regexp::Assemble; +$dat="public_suffix_list.dat"; +die(".dat file $dat not found!") unless -f "$dat"; + +sub generate { + my $src = "./tld_template.js"; + my $dst = "./tld.js"; + my (@rx, @ex, $rx, $ex); + open(DAT, $dat) || die("Cannot open $dat"); + while(<DAT>) { + s/\./\\\./g; + s/\s+utf.*//; + s/\n//; + if(/^!/) { + s/^!//; + push(@ex, lc($_)); + } elsif (!/^(\/\/|[ \n\r]|$)/) { + s/\*\\\./[^\\.]+\\./; + push(@rx, lc($_)); + } + } + close(DAT); + + #$o = Regexp::Optimizer->new; + #$o = Regexp::List->new; + $o = Regexp::Assemble->new; + $_ = $o->add(@rx)->as_string(); + s/\(\?-xism:(.*)\)/$1/; + $rx = $_; + @rx = NULL; + + $o = Regexp::Assemble->new; + $_ = $o->add(@ex)->as_string(); + s/\(\?-xism:(.*)\)/$1/; + $ex = $_; + @ex = NULL; + + open(SRC, $src) || die("Cannot open $src"); + open(DST, ">$dst") || die("Cannot open $dst"); + while(<SRC>) { + s/%tld_rx%/$rx/g; + s/%tld_ex%/$ex/g; + print DST; + print; + } + close(SRC); + close(DST); +} +generate(); |