--- Atom.pm.orig	2005-08-10 05:15:32.000000000 +0900
+++ Atom.pm	2006-02-07 13:54:40.000000000 +0900
@@ -26,6 +26,10 @@
 
 sub format { 'Atom' }
 
+sub is_atom10{
+    return (shift->{atom}->version > 0.3) ? 1 : 0;
+}
+
 sub title { shift->{atom}->title(@_) }
 sub link {
     my $feed = shift;
@@ -37,8 +41,27 @@
         $l ? $l->href : undef;
     }
 }
-sub description { shift->{atom}->tagline(@_) }
-sub copyright   { shift->{atom}->copyright(@_) }
+
+sub description{
+    my $feed = shift;
+    my $method = ($feed->is_atom10) ? 'subtitle' : 'tagline';
+    if(@_){
+	$feed->{atom}->$method(@_);
+    } else {
+	$feed->{atom}->$method;
+    }
+}
+
+sub copyright{
+    my $feed = shift;
+    my $method = ($feed->is_atom10) ? 'rights' : 'copyright';
+    if(@_){
+	$feed->{atom}->$method(@_);
+    } else {
+	$feed->{atom}->$method;
+    }
+}
+
 sub language    { shift->{atom}->language(@_) }
 sub generator   { shift->{atom}->generator(@_) }
 
@@ -55,10 +78,11 @@
 
 sub modified {
     my $feed = shift;
+    my $method = ($feed->is_atom10) ? 'updated' : 'modified';
     if (@_) {
-        $feed->{atom}->modified($_[0]->iso8601 . 'Z');
+        $feed->{atom}->$method($_[0]->iso8601 . 'Z');
     } else {
-        iso2dt($feed->{atom}->modified);
+        iso2dt($feed->{atom}->$method);
     }
 }
 
@@ -93,6 +117,11 @@
     1;
 }
 
+sub is_atom10{
+    return shift->{entry}->version > 0.3
+}
+
+
 sub title { shift->{entry}->title(@_) }
 sub link {
     my $entry = shift;
@@ -158,20 +187,23 @@
 
 sub issued {
     my $entry = shift;
+    my $method = ($entry->is_atom10) ? 'published' : 'issued';
     if (@_) {
-        $entry->{entry}->issued($_[0]->iso8601 . 'Z') if $_[0];
+        $entry->{entry}->$method($_[0]->iso8601 . 'Z') if $_[0];
     } else {
-        $entry->{entry}->issued ? iso2dt($entry->{entry}->issued) : undef;
+        $entry->{entry}->$method ? iso2dt($entry->{entry}->$method) : undef;
     }
 }
 
 sub modified {
     my $entry = shift;
+    my $method = ($entry->is_atom10) ? 'updated' : 'modified';
     if (@_) {
-        $entry->{entry}->modified($_[0]->iso8601 . 'Z') if $_[0];
+        $entry->{entry}->$method($_[0]->iso8601 . 'Z') if $_[0];
     } else {
-        $entry->{entry}->modified ? iso2dt($entry->{entry}->modified) : undef;
+        $entry->{entry}->$method ? iso2dt($entry->{entry}->$method) : undef;
     }
 }
 
 1;
+
