content: -- This script grabs the current article in NetNewsWire and copies relevant information about it 
  --    to a new outgoing message in Mail
  -- the intended use is that the user wants to send email about the current article, and 
  --    would fill in the recipient and then send the message
  
  -- sometimes, an article has contents, and sometimes it has html contents
  -- this function getContentsOrHtml() gets the contents as text, despite the representation
  -- first it checks to see if there are plain text contents
  -- if not, it looks for html contents, and converts those to plain text using a shell script that invokes textutil
  -- if it can't find either plain text or html, it returns "couldn't find article text"
  to getContentsOrHtml()
  	tell application "NetNewsWire"
  		set textContents to the contents of the current article
  		if textContents is not "" then
  			return textContents
  		else
  			set htmlContents to html of the current article
  			if htmlContents is not "" then
  				set shellScript to " echo '" & htmlContents & "' | /usr/bin/textutil -stdin -stdout -format html -convert txt"
  				set pureText to do shell script shellScript
  				return pureText
  			end if
  		end if
  	end tell
  	return "couldn't find article text"
  end getContentsOrHtml
  
  
  -- given a list of author names, generate a happily formatted list like "Jean MacDonald and James Dempsey"
  -- if the list is more than two names, use Oxford comma structure: "Brent Simmons, Jean MacDonald, and James Dempsey"
  
  to formatListOfNames(listOfNames)
  	set c to count listOfNames
  	if c is 1 then
  		set formattedList to item 1 of listOfNames
  	else if c is 2 then
  		set formattedList to item 1 of listOfNames & " and " & item 2 of listOfNames
  	else
  		set frontOfList to items 1 thru (c - 1) of listOfNames
  		set lastName to item c of listOfNames
  		set tid to AppleScript's text item delimiters
  		set AppleScript's text item delimiters to ", "
  		set t1 to frontOfList as text
  		set formattedList to t1 & ", and " & lastName
  		set AppleScript's text item delimiters to tid
  	end if
  	return formattedList
  end formatListOfNames
  
  
  -- sometimes, an article has an author, sometimes it has more than one, sometimes there's no author
  -- this function getAuthorStub() returns a string like " from Jean MacDonald "  that can be used in crafting a message
  -- about the current article.  If there are no authors, it just returns a single space.
  to getAuthorStub(authorNames)
  	try
  		if ((count authorNames) is greater than 0) then
  			return " from " & formatListOfNames(authorNames) & " "
  		end if
  	end try
  	return " "
  end getAuthorStub
  
  
  
  -- Here's where the script starts
  
  -- first, get some relevant info out for NetNewsWire
  tell application "NetNewsWire"
  	set articleUrl to the url of the current article
  	set articleTitle to the title of the current article
  	set authorNames to name of authors of the current article
  end tell
  
  
  -- then, prepare the message subject and message contents
  set messageSubject to "From NetNewsWire to you: " & articleTitle
  set myIntro to "Here's something" & getAuthorStub(authorNames) & "that I was reading on NetNewsWire: "
  set messageContents to myIntro & return & return & articleUrl & return & return & getContentsOrHtml()
  
  
  -- lastly, make a new outgoing message in Mail with the given subject and contents
  tell application "Mail"
  	set m1 to make new outgoing message with properties {subject:messageSubject}
  	set content of m1 to messageContents
  end tell