#!/usr/bin/perl # canonicalize URIs links, beautify their text representations # set NETWORK_TESTS=1 to also validate and report failures to STDERR use warnings; use strict; use Pandoc::Filter 0.05; use Pandoc::Elements; use URI; use URI::Escape; use URI::Find; use HTTP::Tiny 0.014; my ($ua, %links); pandoc_filter( \&link_normalize, ); sub link_normalize { my $self = shift; return [ Link( $self->content, [ pp_uri($self->target->[0]) => '' ] )] if ( $self->name eq 'Link' ); return [ Str pp_string($self->content) ] if ( $self->name eq 'Str' ); return; } sub normalize_uri { my $uri = URI->new(uri_unescape(shift))->canonical; return $uri unless $ENV{'NETWORK_TESTS'}; return $uri if ( defined $links{$uri} ); $ua = HTTP::Tiny->new() unless ( defined $ua ); $links{$uri} = $ua->head($uri); printf STDERR "Failed fetching <%s>: %u %s\n", $uri, $links{$uri}->{status}, $links{$uri}->{reason} unless ($links{$uri}->{success}); return $uri; } sub pp_uri { return normalize_uri(shift)->as_string; } sub pp_iri { return normalize_uri(shift)->as_iri; } sub pp_string { my $string = shift; my $finder = URI::Find->new( \&pp_iri ); $finder->find(\$string); return $string; } ' to name the repository.Jonas Smedegaard
summaryrefslogtreecommitdiff
path: root/tags/02/8e/handler.1014232.D1014232.16572312172530.ackdone@bugs.debian.org/killed
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2023-06-27 09:35:08 +0200
committerJonas Smedegaard <dr@jones.dk>2023-06-27 09:35:08 +0200
commitfd54908da2b05c526dd3bee9b6dcd093214a220d (patch)
treec69c845069c99d1d01044f6fafda7c08433329c6 /tags/02/8e/handler.1014232.D1014232.16572312172530.ackdone@bugs.debian.org/killed
parentba46132213560cf3335d53560d519c0ec0190da2 (diff)
master
Diffstat (limited to 'tags/02/8e/handler.1014232.D1014232.16572312172530.ackdone@bugs.debian.org/killed')