The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 6871
MANIFEST 36
META.json 052
META.yml 2528
Makefile.PL 17
README 029
eg/title.pl 011
lib/URI/Title/HTML.pm 3133
lib/URI/Title/Image.pm 11
lib/URI/Title/MP3.pm 11
lib/URI/Title/PDF.pm 11
lib/URI/Title.pm 37
t/html.t 55
title.pl 110
xt/pod-coverage.t 09
xt/pod.t 06
16 files changed (This is a version diff) 150267
@@ -1,73 +1,76 @@
-2012-05-26 1.86 Tom Insam <tom@movieos.org>
-  * Twitter suport fixed for non-javascript anchor links (yay)
-
-2011-06-02 1.85 Tom Insam <tom@movieos.org>
-  * Twitter suport fixed for javascript anchor links (ugh)
-
-2009-07-27 1.84 Tom Insam <tom@jerakeen.org>
-  * Spotify titling support from https://rt.cpan.org/Public/Bug/Display.html?id=48231
-  
-2008-10-18 1.83 Paul Mison <cpan@husk.org>
-  * Work around a change in Twitter HTML
-
-2008-09-30 1.82 Tom Insam  <tom@jerakeen.org>
-  * Latest LWP-UserAgent is pickier about what you pass it as a URI - fixed.
-
-2008-06-19 1.81 Tom Insam  <tom@jerakeen.org>
-  * fix changes for the Register title
-  * clearer licensing
-
-2008-06-19 1.80 Tom Insam  <tom@jerakeen.org>
-  * Twitter support
-  * Google calculator support
-  * Too many irritating corner-case bugfixes to list.
-  * Claim that we don't do gzip in some cases, to avoid evil
-
-2007-04-21 1.70 Tom Insam  <tom@jerakeen.org>
-  * Added special case for Helsingin Sanomat URLs.
-  * Supressed warnings if imgsize can't get an image size (from Dagfinn Ilmari Mannsaker)
-  * Fixed some more nagging unicode issues. Bah, unicode.
-  * Send a real user-agent, to prevent people that hard-code a block of the default Perl useragent from blocking us.
-
-2006-05-18 1.62 Tom Insam  <tom@jerakeen.org>
-
-  * character set support that actually _works_ - we also try utf-8
+1.88 2014-02-04 Philippe Bruhat (BooK) <book@cpan.org>
+  - Closed RT #41361 (thanks to Kevin Ryde (KRYDE))
+
+1.87 2014-02-04 Philippe Bruhat (BooK) <book@cpan.org>
+  - New maintainer: BOOK
+  - Added github repo to metadata
+  - Added license details to metadata
+  - Closed RT #82054 (thanks to Jotam Jr. Trejo)
+  - Closed RT #92091 (thanks to Zakariyya Mughal (ZMUGHAL))
+  - Fixed POD syntax
+  - Added some POD tests
+  - Fixed broken tests
+
+1.86 2012-05-26 Tom Insam <tom@movieos.org>
+  - Twitter suport fixed for non-javascript anchor links (yay)
+
+1.85 2011-06-02 Tom Insam <tom@movieos.org>
+  - Twitter suport fixed for javascript anchor links (ugh)
+
+1.84 2009-07-27 Tom Insam <tom@jerakeen.org>
+  - Spotify titling support from https://rt.cpan.org/Public/Bug/Display.html?id=48231
+
+1.83 2008-10-18 Paul Mison <cpan@husk.org>
+  - Work around a change in Twitter HTML
+
+1.82 2008-09-30 Tom Insam <tom@jerakeen.org>
+  - Latest LWP-UserAgent is pickier about what you pass it as a URI - fixed.
+
+1.81 2008-06-19 Tom Insam <tom@jerakeen.org>
+  - fix changes for the Register title
+  - clearer licensing
+
+1.80 2008-06-19 Tom Insam <tom@jerakeen.org>
+  - Twitter support
+  - Google calculator support
+  - Too many irritating corner-case bugfixes to list.
+  - Claim that we don't do gzip in some cases, to avoid evil
+
+1.70 2008-04-21 Tom Insam <tom@jerakeen.org>
+  - Added special case for Helsingin Sanomat URLs.
+  - Supressed warnings if imgsize can't get an image size (from Dagfinn Ilmari Mannsaker)
+  - Fixed some more nagging unicode issues. Bah, unicode.
+  - Send a real user-agent, to prevent people that hard-code a block of the default Perl useragent from blocking us.
+
+1.62 2006-05-18 Tom Insam <tom@jerakeen.org>
+  - character set support that actually _works_ - we also try utf-8
     first always, because people lie.
-  * Fix for servers that don't respect the Range header.
-
-2005-07-21 1.61 Tom Insam  <tom@jerakeen.org>
+  - Fix for servers that don't respect the Range header.
 
-  * Fix tiny test breakage
-  * Better charset support
+1.61 2005-07-21 Tom Insam <tom@jerakeen.org>
+  - Fix tiny test breakage
+  - Better charset support
 
-2004-09-23 1.60 Tom Insam  <tom@jerakeen.org>
-
-  * Added limited character set support. It mostly sucks, but
+1.60 2004-09-23 Tom Insam <tom@jerakeen.org>
+  - Added limited character set support. It mostly sucks, but
     less than it did before.
 
-
-2004-08-13 1.50 Tom Insam  <tom@jerakeen.org>
-
-  * Added quick special case for iTMS urls.
-  * Bumped version to 1.0, I quite like this code now.
-
-
-2004-05-06 0.50 Tom Insam  <tom@jerakeen.org>
-  * 0.5 Release
-  * Use File::Type to detech mime types and hand off to sub-modules
-  * Use Module::Pluggable to discover sub-modules
-  * Add Image, MP3 and PDF naming modules
-
-
-2004-03-16 0.30 Tom Insam  <tom@jerakeen.org>
-  * 0.3 Release (Revision 643)
-  * Don't run tests without a net connection
-  * More special cases.
-  * Variable header size downloading for pathological cases
-  * Much better whitespace trimming
-
-
-2004-01-17 0.10 Tom Insam  <tom@jerakeen.org>
-  * 0.1 Release. It doesn't suck, much.
-  
-  
+1.50 2004-08-13 Tom Insam <tom@jerakeen.org>
+  - Added quick special case for iTMS urls.
+  - Bumped version to 1.0, I quite like this code now.
+
+0.50 2004-05-06 Tom Insam <tom@jerakeen.org>
+  - 0.5 Release
+  - Use File::Type to detech mime types and hand off to sub-modules
+  - Use Module::Pluggable to discover sub-modules
+  - Add Image, MP3 and PDF naming modules
+
+0.30 2004-03-16 Tom Insam <tom@jerakeen.org>
+  - 0.3 Release
+  - Don't run tests without a net connection
+  - More special cases.
+  - Variable header size downloading for pathological cases
+  - Much better whitespace trimming
+
+0.10 2004-01-17 Tom Insam <tom@jerakeen.org>
+  - 0.1 Release. It doesn't suck, much.
@@ -1,4 +1,5 @@
 Changes
+eg/title.pl
 lib/URI/Title.pm
 lib/URI/Title/HTML.pm
 lib/URI/Title/Image.pm
@@ -6,9 +7,11 @@ lib/URI/Title/MP3.pm
 lib/URI/Title/PDF.pm
 Makefile.PL
 MANIFEST
+README
 t/00bootstrap.t
 t/failure.t
 t/html.t
-t/other.t
-title.pl
-META.yml                                 Module meta-data (added by MakeMaker)
+xt/pod-coverage.t
+xt/pod.t
+META.yml                                 Module YAML meta-data (added by MakeMaker)
+META.json                                Module JSON meta-data (added by MakeMaker)
@@ -0,0 +1,52 @@
+{
+   "abstract" : "unknown",
+   "author" : [
+      "unknown"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 6.64, CPAN::Meta::Converter version 2.133380",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "URI-Title",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {
+            "File::Type" : "0.22",
+            "HTML::Parser" : "3.45",
+            "Image::Size" : "0",
+            "LWP::Simple" : "0",
+            "MP3::Info" : "0",
+            "Module::Pluggable" : "1.2",
+            "Test::More" : "0"
+         }
+      }
+   },
+   "release_status" : "stable",
+   "resources" : {
+      "repository" : {
+         "url" : "http://github.com/book/URI-Title"
+      }
+   },
+   "version" : "1.88"
+}
@@ -1,27 +1,30 @@
---- #YAML:1.0
-name:               URI-Title
-version:            1.86
-abstract:           ~
-author:  []
-license:            unknown
-distribution_type:  module
-configure_requires:
-    ExtUtils::MakeMaker:  0
+---
+abstract: unknown
+author:
+  - unknown
 build_requires:
-    ExtUtils::MakeMaker:  0
-requires:
-    File::Type:         0.22
-    HTML::Parser:       3.45
-    Image::Size:        0
-    LWP::Simple:        0
-    Module::Pluggable:  1.2
-    MP3::Info:          0
-    Test::More:         0
-no_index:
-    directory:
-        - t
-        - inc
-generated_by:       ExtUtils::MakeMaker version 6.56
+  ExtUtils::MakeMaker: 0
+configure_requires:
+  ExtUtils::MakeMaker: 0
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.64, CPAN::Meta::Converter version 2.133380'
+license: perl
 meta-spec:
-    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
-    version:  1.4
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: URI-Title
+no_index:
+  directory:
+    - t
+    - inc
+requires:
+  File::Type: 0.22
+  HTML::Parser: 3.45
+  Image::Size: 0
+  LWP::Simple: 0
+  MP3::Info: 0
+  Module::Pluggable: 1.2
+  Test::More: 0
+resources:
+  repository: http://github.com/book/URI-Title
+version: 1.88
@@ -12,5 +12,11 @@ WriteMakefile(
         'MP3::Info' => 0,
         'Image::Size' => 0,
         'LWP::Simple' => 0
-    }
+    },
+    LICENSE => "perl",
+    META_MERGE => {
+        resources => {
+            repository => 'http://github.com/book/URI-Title',
+        },
+    },
 );
@@ -0,0 +1,29 @@
+NAME
+   URI::Title - get the titles of things on the web in a sensible way
+
+DESCRIPTION
+
+   I keep having to find the title of things on the web. This seems like a
+   really simple request, just get() the object, parse for a title tag,
+   you're done. Ha, I wish. There are several problems with this approach:
+
+   What if the resource is on a very slow server? Do we wait for ever or what?
+   What if the resource is a 900 gig file? You don't want to download that.
+   What if the page title isn't in a title tag, but is buried in the HTML somewhere?
+   What if the resource is an MP3 file, or a word document or something?
+   ...
+
+   So, let's solve these issues once.
+
+METHODS
+   only one, the title(url) method. Call it with an url, get the title if
+   possible, undef if it wasn't. Very simple.
+
+AUTHORS
+   Tom Insam <tom@jerakeen.org>, original author, 2004-2012.
+
+   Philippe Bruhat (BooK) <book@cpan.org>, maintainer, 2014.
+
+LICENSE
+   This program is free software; you can redistribute it and/or modify it
+   under the same terms as Perl itself.
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use lib 'lib';
+use URI::Title qw(title);
+use Encode;
+
+my $title = title(shift);
+binmode STDOUT, ":utf8";
+print $title || 'no title';
+print "\n";
@@ -1,4 +1,4 @@
-=head NAME
+=head1 NAME
 
 URI::Title::HTML - get titles of html files
 
@@ -45,37 +45,39 @@ sub title {
   }
 
   my $found_title;
-  
-  if ($url =~ /use\.perl\.org\/~([^\/]+).*journal\/\d/i) {
-    $special_case = '<FONT FACE="geneva,verdana,sans-serif" SIZE="1"><B>(.+?)<';
-    $title = "use.perl journal of $1 - ";
-
-  } elsif ($url =~ /(pants\.heddley\.com|dailychump\.org).*#(.*)$/i) {
-    my $id = $2;
-    $special_case = 'id="a'.$id.'.*?></a>(.+?)<';
-    $title = "pants daily chump - ";
-
-  } elsif ($url =~ /paste\.husk\.org/i) {
-    $special_case = 'Summary: (.+?)<';
-    $title = "paste - ";
-
-  } elsif ($url =~ /twitter.com\/(.*?)\/status(es)?\/\d+/i) {
-    $special_case = '<p class="js-tweet-text tweet-text ">([^\<]+)';
-    $title = "twitter - ";
-
-  } elsif ($url =~ /independent\.co\.uk/i) {
-    $special_case = '<h1 class=head1>(.+?)<';
-
-  } elsif ($url =~ /www\.hs\.fi\/english\/article/i) {
-    $special_case = '<h1>(.+?)</h1>';
-  
-  } elsif ($url =~ /google.com/i and $data =~ /calc_img/) {
-    # google can be used as a calculator. Try to find the result.
-    $special_case = 'calc_img.*<td nowrap>(.+?)</td';
-  
-  } elsif ($url =~ /spotify\.url\.fi/) {
-    $special_case = '<title>\s*(.+?)\s+&mdash;\s+Decode\s+Spotify\s+URIs\s*</title>';
 
+  if ($url) {
+    if ($url =~ /use\.perl\.org\/~([^\/]+).*journal\/\d/i) {
+      $special_case = '<FONT FACE="geneva,verdana,sans-serif" SIZE="1"><B>(.+?)<';
+      $title = "use.perl journal of $1 - ";
+
+    } elsif ($url =~ /(pants\.heddley\.com|dailychump\.org).*#(.*)$/i) {
+      my $id = $2;
+      $special_case = 'id="a'.$id.'.*?></a>(.+?)<';
+      $title = "pants daily chump - ";
+
+    } elsif ($url =~ /paste\.husk\.org/i) {
+      $special_case = 'Summary: (.+?)<';
+      $title = "paste - ";
+
+    } elsif ($url =~ /twitter.com\/(.*?)\/status(es)?\/\d+/i) {
+      $special_case = '<p class="js-tweet-text tweet-text">([^\<]+)';
+      $title = "twitter - ";
+
+    } elsif ($url =~ /independent\.co\.uk/i) {
+      $special_case = '<h1 class=head1>(.+?)<';
+
+    } elsif ($url =~ /www\.hs\.fi\/english\/article/i) {
+      $special_case = '<h1>(.+?)</h1>';
+
+    } elsif ($url =~ /google.com/i and $data =~ /calc_img/) {
+      # google can be used as a calculator. Try to find the result.
+      $special_case = 'calc_img.*<td nowrap>(.+?)</td';
+
+    } elsif ($url =~ /spotify\.url\.fi/) {
+      $special_case = '<title>\s*(.+?)\s+&mdash;\s+Decode\s+Spotify\s+URIs\s*</title>';
+
+    }
   }
 
   if (!$found_title and $special_case) {
@@ -1,4 +1,4 @@
-=head NAME
+=head1 NAME
 
 URI::Title::Image - get titles of images
 
@@ -1,4 +1,4 @@
-=head NAME
+=head1 NAME
 
 URI::Title::MP3 - get titles of MP3 files
 
@@ -1,4 +1,4 @@
-=head NAME
+=head1 NAME
 
 URI::Title::PDF - get titles of PDF files
 
@@ -47,9 +47,13 @@ Many, many, many things. Still unimplemented:
 
 =item Better error reporting.
 
-=head1 AUTHOR
+=back
+
+=head1 AUTHORS
+
+Tom Insam E<lt>tom@jerakeen.orgE<gt>, original author, 2004-2012.
 
-Tom Insam E<lt>tom@jerakeen.orgE<gt>
+Philippe Bruhat (BooK) E<lt>book@cpan.orgE<gt>, maintainer, 2014.
 
 This program is free software; you can redistribute it
 and/or modify it under the same terms as Perl itself.
@@ -69,7 +73,7 @@ use strict;
 use base qw(Exporter);
 our @EXPORT_OK = qw( title );
 
-our $VERSION = '1.86';
+our $VERSION = '1.88';
 
 use Module::Pluggable (search_path => ['URI::Title'], require => 1 );
 use File::Type;
@@ -12,7 +12,7 @@ my $s = IO::Socket::INET->new(
 
 if ($s) {
   close($s);
-  plan tests => 2;
+  plan tests => 1;
 } else {
   plan skip_all => "no net connection available";
   exit;
@@ -24,9 +24,9 @@ if ($s) {
 #  "got title for jerakeen.org");
 
 ok(
-  title('http://theregister.co.uk/content/6/34549.html') =~ /lack of technology may harm your prospects/,
+  title('http://www.theregister.co.uk/2003/12/16/warning_lack_of_technology_may/') =~ /lack of technology may harm your prospects/,
   "got register title");
 
-ok(
-  title('http://twitter.com/al3x/status/1039647490') eq 'twitter - Arianna Huffington: not a good saleswoman for blogging.',
-  "got Twitter status");
+# ok(
+#   title('http://twitter.com/al3x/status/1039647490') eq 'twitter - Arianna Huffington: not a good saleswoman for blogging.',
+#   "got Twitter status");
@@ -1,11 +0,0 @@
-#!/usr/bin/perl
-use warnings;
-use strict;
-use lib 'lib';
-use URI::Title qw(title);
-use Encode;
-
-my $title = title(shift);
-binmode STDOUT, ":utf8";
-print $title || 'no title';
-print "\n";
@@ -0,0 +1,9 @@
+#!perl -T
+
+use Test::More;
+eval "use Test::Pod::Coverage 1.04";
+plan skip_all => 
+	"Test::Pod::Coverage 1.04 required for testing POD coverage" if $@;
+plan skip_all =>
+	"No user servicable parts inside.  This Kwalitee metric is a bit silly.";
+all_pod_coverage_ok();
@@ -0,0 +1,6 @@
+#!perl -T
+
+use Test::More;
+eval "use Test::Pod 1.14";
+plan skip_all => "Test::Pod 1.14 required for testing POD" if $@;
+all_pod_files_ok();