#!/usr/bin/perl
use strict;
my $file_name = 'data-uris.txt';
my @item;
{
open my $file, '<', $file_name;
local $/ = undef;
@item = split /\n\n#/, <$file>;
}
sub htescape ($) {
my $s = shift;
$s =~ s/&/&/g;
$s =~ s/</g;
$s =~ s/"/"/g;
return $s;
} # htescape
sub get_id ($) {
my $s = shift;
$s =~ s/([^0-9A-Za-z-])/sprintf '_%08X', ord $1/ge;
return $s;
} # get_id
print qq[Content-Type: text/html; charset=utf-8
data: URIs
];
for (@item) {
s/^#//;
my %prop;
for (split /\n#/, $_) {
if (s/^(data|note|conforming|non-conforming)(?>\n|\z)//s) {
$prop{$1} = $_;
}
}
my $id = htescape (get_id ($prop{data}));
my $euri = htescape ($prop{data});
print qq[URI: <$euri>];
for (qw/note conforming non-conforming/) {
next unless defined $prop{$_};
print qq[
];
print qq[Conforming: ] if $_ eq 'conforming';
print qq[Non-conforming: ] if $_ eq 'non-conforming';
my $v = htescape ($prop{$_});
$v =~ s[<([^>]+)>][<$1>]g;
print qq[] . $v . qq[];
}
print qq[
];
}