Index: wp-includes/author-template.php
===================================================================
--- wp-includes/author-template.php	(revision 5143)
+++ wp-includes/author-template.php	(working copy)
@@ -180,8 +180,18 @@
 	else
 		parse_str($args, $r);
 
-	$defaults = array('optioncount' => false, 'exclude_admin' => true, 'show_fullname' => false, 'hide_empty' => true,
-		'feed' => '', 'feed_image' => '');
+	$defaults = array(
+		'optioncount' => false, 
+		'exclude_admin' => true, 
+		'show_fullname' => false, 
+		'hide_empty' => true, 
+		'feed' => '', 
+		'feed_image' => '', 
+		'format' => 'html', 
+		'before' => '', 
+		'after' => ''
+	);
+	
 	$r = array_merge($defaults, $r);
 	extract($r);
 	
@@ -192,57 +202,78 @@
 	foreach ((array) $wpdb->get_results("SELECT DISTINCT post_author, COUNT(ID) AS count FROM $wpdb->posts WHERE post_status = 'publish' GROUP BY post_author") as $row) {
 		$author_count[$row->post_author] = $row->count;
 	}
-
-	foreach ( (array) $authors as $author ) {
-		$author = get_userdata( $author->ID );
+	
+	// Set up $output variable
+	$output = '';
+	
+	foreach ((array) $authors as $author) {
+		// Set up some variables
+		$author = get_userdata($author->ID);
 		$posts = (isset($author_count[$author->ID])) ? $author_count[$author->ID] : 0;
 		$name = $author->nickname;
-
-		if ( $show_fullname && ($author->first_name != '' && $author->last_name != '') )
-			$name = "$author->first_name $author->last_name";
-
-		if ( !($posts == 0 && $hide_empty) )
-			echo "<li>";
-		if ( $posts == 0 ) {
-			if ( !$hide_empty )
-				$link = $name;
+		
+		// Show their full name, and make sure first/last aren't blank
+		if ($show_fullname && (!empty($author->first_name) && !empty($author->last_name))) {
+			$name = $author->first_name . ' ' . $author->last_name;
+		}
+		
+		// Skip "empty" users when we don't want to show them
+		if ($hide_empty && $posts == 0) {
+			continue;
+		}
+		
+		$output .= "\t";
+		
+		// Start out with different formats, depending on $format
+		switch ($format) {
+			case 'html':
+				$output .= '<li>';
+				break;
+		}
+		
+		// Put the before stuff on
+		$output .= $before;
+		
+		// By now, we've skipped empty users if !$hide_empty
+		// so just put in their name in place of a link
+		if ($posts == 0) {
+			$output .= $name;
+		// Got posts, add on link
 		} else {
-			$link = '<a href="' . get_author_posts_url($author->ID, $author->user_nicename) . '" title="' . sprintf(__("Posts by %s"), attribute_escape($author->display_name)) . '">' . $name . '</a>';
-
-			if ( (! empty($feed_image)) || (! empty($feed)) ) {
-				$link .= ' ';
-				if (empty($feed_image))
-					$link .= '(';
-				$link .= '<a href="' . get_author_rss_link(0, $author->ID, $author->user_nicename) . '"';
-
-				if ( !empty($feed) ) {
-					$title = ' title="' . $feed . '"';
-					$alt = ' alt="' . $feed . '"';
-					$name = $feed;
-					$link .= $title;
+			// Add author's page link
+			$output .= '<a href="' . get_author_posts_url($author->ID, $author->user_nicename) . '" ' 
+				. sprintf(__('Posts by %s'), attribute_escape($author->display_name)) . '">' . $name . '</a>';
+			
+			// Either got a feed text or feed image
+			if (!empty($feed) || !empty($feed_image)) {
+				$output .= ' ';
+				
+				// If we're using text feed link
+				if (empty($feed_image)) {
+					$output .= '(<a href="' . get_author_rss_link(0, $author->ID, $author->user_nicename) . '" title="' . attribute_escape($feed) . '">' . $feed . '</a>)';
+				// Okay, we're using an image link
+				} else {
+					$output .= '<a href="' . get_author_rss_link(0, $author->ID, $author->user_nicename) . '" title="' . attribute_escape($feed) . '"><img src="' . $feed_image . '" alt="' . $feed . '" title="' . $feed . '" /></a>';
 				}
-
-				$link .= '>';
-
-				if ( !empty($feed_image) )
-					$link .= "<img src=\"$feed_image\" border=\"0\"$alt$title" . ' />';
-				else
-					$link .= $name;
-
-				$link .= '</a>';
-
-				if ( empty($feed_image) )
-					$link .= ')';
 			}
-
-			if ( $optioncount )
-				$link .= ' ('. $posts . ')';
-
 		}
-
-		if ( !($posts == 0 && $hide_empty) )
-			echo "$link</li>";
+		
+		// Put the after on the line
+		$output .= $after;
+		
+		// Add the end tag, based on format
+		switch ($format) {
+			case 'html':
+				$output .= '</li>';
+				break;
+		}
+		
+		// Add a newline
+		$output .= "\n";
 	}
+	
+	// Echo our output
+	echo $output;
 }
 
 ?>
\ No newline at end of file
