Checking in changes prior to tagging of version 1.001. Changelog diff is: 1.001
t0m [Fri, 12 Dec 2008 18:54:35 +0000 (18:54 +0000)]
=== Changes
==================================================================
--- Changes (revision 9983)
+++ Changes (local)
@@ -1,6 +1,7 @@
+1.001 2008-12-12
   - Add tests for other Accept header cases where the current code
     will get it wrong (David Dorward)
-1.000
+  - Fix all of these tests (t0m)
+1.000 2008-12-12
   - First working version of the module extracted from the quick hack
     I have in every Catalyst application I've ever written.
-

Changes
Makefile.PL
README
lib/Catalyst/View/TT/XHTML.pm
t/live-test.t
t/podspelling.t

diff --git a/Changes b/Changes
index ccb2c99..1c33147 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
+1.001 2008-12-12
   - Add tests for other Accept header cases where the current code
     will get it wrong (David Dorward)
-1.000
+  - Fix all of these tests (t0m)
+1.000 2008-12-12
   - First working version of the module extracted from the quick hack
     I have in every Catalyst application I've ever written.
-    
index 05a03c4..48407cd 100644 (file)
@@ -5,6 +5,7 @@ all_from 'lib/Catalyst/View/TT/XHTML.pm';
 
 requires 'Catalyst::Runtime';
 requires 'Catalyst::View::TT';
+requires 'HTTP::Negotiate';
 
 build_requires 'Catalyst::Action::RenderView';
 build_requires 'Test::WWW::Mechanize::Catalyst';
diff --git a/README b/README
index 6616949..0bca51d 100644 (file)
--- a/README
+++ b/README
@@ -1,91 +1,51 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>Catalyst::View::TT::XHTML - A sub-class of the standard TT view which
-serves application/xhtml+xml content if the browser accepts it.</title>
-<link rev="made" href="mailto:root@b45.apple.com" />
-</head>
+NAME
+    Catalyst::View::TT::XHTML - A sub-class of the standard TT view which
+    serves application/xhtml+xml content if the browser accepts it.
+
+SYNOPSIS
+        package MyApp::View::XHTML;
+        use strict;
+        use warnings;
+        use base qw/Catalyst::View::TT::XHTML MyApp::View::TT/;
+    
+        1;
+    
+DESCRIPTION
+    This is a very simple sub-class of Catalyst::View::TT, which sets the
+    response "Content-Type" to be "application/xhtml+xml" if the user's
+    browser sends an "Accept" header indicating that it is willing to
+    process that MIME type.
 
-<body style="background-color: white">
+    Changing the "Content-Type" causes browsers to interpret the page as
+    strict XHTML, meaning that the markup must be well formed.
 
-<p><a name="__index__"></a></p>
-<!-- INDEX BEGIN -->
+    This is useful when you're developing your application, as you know that
+    all pages you view are rendered strictly, so any markup errors will show
+    up at once.
 
-<ul>
+METHODS
+  process
+    Overrides the standard process method, delegating to Catalyst::View::TT
+    to render the template, and then changing the response "Content-Type" if
+    appropriate (from the requests "Accept" header).
 
-       <li><a href="#name">NAME</a></li>
-       <li><a href="#synopsis">SYNOPSIS</a></li>
-       <li><a href="#methods">METHODS</a></li>
-       <ul>
+BUGS
+    There should be a more elegant way to inherit the config of your normal
+    TT view.
 
-               <li><a href="#process">process</a></li>
-       </ul>
+    Configuration (as loaded by Catalyst::Plugin::ConfigLoader) for the TT
+    view is not used.
 
-       <li><a href="#bugs">BUGS</a></li>
-       <li><a href="#author">AUTHOR</a></li>
-       <li><a href="#copyright">COPYRIGHT</a></li>
-</ul>
-<!-- INDEX END -->
+    No helper to generate the view file needed (just copy the code in the
+    SYNOPSIS).
 
-<hr />
-<p>
-</p>
-<h1><a name="name">NAME</a></h1>
-<p>Catalyst::View::TT::XHTML - A sub-class of the standard TT view which
-serves application/xhtml+xml content if the browser accepts it.</p>
-<p>
-</p>
-<hr />
-<h1><a name="synopsis">SYNOPSIS</a></h1>
-<pre>
-    package MyApp::View::XHTML;
-    use strict;
-    use warnings;
-    use base qw/Catalyst::View::TT::XHTML MyApp::View::TT/;
-    
-    1;
-    
-=head1 DESCRIPTION</pre>
-<p>This is a very simple sub-class of <a href="/Catalyst/View/TT.html">the Catalyst::View::TT manpage</a>, which sets
-the response <code>Content-Type</code> to be <code>application/xhtml+xml</code> if the
-user's browser sends an <code>Accept</code> header indicating that it is willing
-to process that MIME type.</p>
-<p>Changing the <code>Content-Type</code> causes browsers to interpret the page as
-strict XHTML, meaning that the markup must be well formed.</p>
-<p>This is useful when you're developing your application, as you know that
-all pages you view are rendered strictly, so any markup errors will show
-up at once.</p>
-<p>
-</p>
-<hr />
-<h1><a name="methods">METHODS</a></h1>
-<p>
-</p>
-<h2><a name="process">process</a></h2>
-<p>Overrides the standard process method, delegating to <a href="/Catalyst/View/TT.html">the Catalyst::View::TT manpage</a>
-to render the template, and then changing the response <code>Content-Type</code> if
-appropriate (from the requests <code>Accept</code> header).</p>
-<p>
-</p>
-<hr />
-<h1><a name="bugs">BUGS</a></h1>
-<p>There should be a more elegant way to inherit the config of your normal 
-TT view.</p>
-<p>Configuration (as loaded by <a href="/Catalyst/Plugin/ConfigLoader.html">the Catalyst::Plugin::ConfigLoader manpage</a>) for the TT 
-view is not used.</p>
-<p>No helper to generate the view file needed (just copy the code in the 
-SYNOPSIS).</p>
-<p>
-</p>
-<hr />
-<h1><a name="author">AUTHOR</a></h1>
-<p>Tomas Doran <code>&lt;bobtfish@bobtfish.net&gt;</code></p>
-<p>
-</p>
-<hr />
-<h1><a name="copyright">COPYRIGHT</a></h1>
-<p>This module itself is copyright (c) 2008 Tomas Doran and is licensed under the same terms as Perl itself.</p>
+AUTHOR
+    Tomas Doran "<bobtfish@bobtfish.net>"
+
+CONTRIBUTORS
+    David Dorward - test patches
 
-</body>
+COPYRIGHT
+    This module itself is copyright (c) 2008 Tomas Doran and is licensed
+    under the same terms as Perl itself.
 
-</html>
index 17bf1bf..e256a0f 100644 (file)
@@ -1,19 +1,28 @@
 package Catalyst::View::TT::XHTML;
 use strict;
 use warnings;
+use HTTP::Negotiate qw(choose);
 use base qw/Catalyst::View::TT/;
 
-our $VERSION = '1.000';
+our $VERSION = '1.001';
+
+our $variants = [
+    [qw| xhtml 1.000 application/xhtml+xml |],
+    [qw| html  0.001 text/html             |],
+];
 
 sub process {
     my $self = shift;
     my ($c) = @_;
-    $self->next::method(@_);
-    my $accept = $c->request->header('Accept');
-    if ( $accept && $accept =~ m|application/xhtml\+xml|) {
-      $c->response->headers->{'content-type'} =~ s|text/html|application/xhtml+xml|;
+    my $return = $self->next::method(@_);
+   
+    if ($c->request->header('Accept') && $c->response->headers->{'content-type'} =~ m|text/html|) {
+        my $var = choose($variants, $c->request->headers);
+        if ($var eq 'xhtml') {
+            $c->response->headers->{'content-type'} =~ s|text/html|application/xhtml+xml|;
+        }
     }
-    return 1;
+    return $return;
 }
 
 1;
index 58a8739..531180d 100644 (file)
@@ -59,7 +59,7 @@ is $mech->response->headers->{'content-type'}, 'text/html; charset=utf-8',
   'Accept header of application/xhtml+xml with q value of 0 and text/html = text/html';
 
 # 20-22
-$mech->add_header( Accept => 'text/html;q=0');
+$mech->add_header( Accept => 'text/html;q=0, application/xhtml+xml');
 $mech->get_ok('http://localhost/', 'get main page');
 $mech->content_like(qr/it works/i, 'see if it has our text');
 is $mech->response->headers->{'content-type'}, 'application/xhtml+xml; charset=utf-8',
index 59e1fca..e58e38b 100644 (file)
@@ -17,3 +17,4 @@ __DATA__
 XHTML
 TT
 Doran
+Dorward