<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Wojno: Tag and</title>
    <link>http://christopher.wojno.com/articles/tag/and</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Exploration through Code</description>
    <item>
      <title>Easy And/Or in Ruby on Rails</title>
      <description>&lt;p&gt;This missing feature of rails has really bugged me, but it&amp;#8217;s so useful.&lt;/p&gt;


	&lt;p&gt;If you have a list of words such as: apples, oranges, and bananas as an array:&lt;/p&gt;


&lt;pre&gt;
&amp;gt;&amp;gt; list = ['apples','oranges','bananas']
=&amp;gt; ["apples", "oranges", "bananas"]
&lt;/pre&gt;

	&lt;p&gt;You&amp;#8217;d like to be able to have a variable length list and still have it look correct in the view. So a smaller list:&lt;/p&gt;


&lt;pre&gt;
&amp;gt;&amp;gt; list = ['oranges','bananas']
=&amp;gt; ["oranges", "bananas"]
&lt;/pre&gt;

	&lt;p&gt;Should look like: &amp;#8220;oranges and bananas&amp;#8221;.&lt;/p&gt;


&lt;pre&gt;
&amp;gt;&amp;gt; list = ['apples','oranges','bananas']
=&amp;gt; ["apples", "oranges", "bananas"]
&amp;gt;&amp;gt; and_or_list 'and', list
=&amp;gt; "apples, oranges, and bananas" 
&amp;gt;&amp;gt; list.pop
=&amp;gt; "bananas" 
&amp;gt;&amp;gt; and_or_list 'and', list
=&amp;gt; "apples and oranges" 
&amp;gt;&amp;gt; list.pop
=&amp;gt; "oranges" 
&amp;gt;&amp;gt; and_or_list 'and', list
=&amp;gt; "apples" 
&lt;/pre&gt;

	&lt;p&gt;The following block of code will do just that:&lt;/p&gt;


&lt;pre&gt;
  def and_or_list( andor, list )
    list = list.dup
    comma = (list.size &amp;gt; 2 ? ',' : '')
    list2 = list.pop if list.size &amp;gt; 1
    s = list.join(', ')
    s &amp;lt;&amp;lt; comma+' '+andor+' ' + list2 if list2
    s
  end
&lt;/pre&gt;

	&lt;p lang="fr"&gt;Vioa!&lt;/p&gt;


	&lt;p&gt;Instant and easy listing of various things, in English. Your users will never know it&amp;#8217;s generated.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve wrapped it up in a neat little plug-in for you.  Just install it in your vendor/plugins directory. It will automatically be available in your views.&lt;/p&gt;


	&lt;p&gt;&lt;a href="/files/and_or_list.tar.gz"&gt;AndOrList Module&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 06 Aug 2007 22:05:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:a510761c-2a6d-4604-9dd1-b0314e9217fe</guid>
      <author>Christopher Wojno</author>
      <link>http://christopher.wojno.com/articles/2007/08/06/easy-and-or-in-ruby-on-rails</link>
      <category>Rails Snippets</category>
      <category>ruby</category>
      <category>rails</category>
      <category>and</category>
      <category>or</category>
      <category>list</category>
      <category>sentence</category>
      <category>english</category>
    </item>
  </channel>
</rss>
