+1 for the suggestions.  I'll submit a patch to LH later today.

On Wed, Jan 28, 2009 at 11:40 AM, tim <[email protected]> wrote:

>
> +1 for or_if_blank?. Some minor suggestions:
>
> 1. I think there does not need to be a special implementation for
> NilClass, since nil.blank? => true.
>
> 2. I would consider leaving out the "?" from the method name. ?-
> methods tend to evaluate to a boolean. This one doesn't.
>
> 3. The return can be omitted.
>
> Tim
>
> On 28 Jan., 07:25, Ryan Angilly <[email protected]> wrote:
> > I just found out google groups was bouncing my emails because they were
> > coming from a different address, so to sum them all up in one:
> >
> > I also realized that I do crap like this a lot too:
> >
> > self.owner_object_association ? self.owner_object_association :
> > default_thing
> >
> > Where this would give me:
> >
> > self.owner_object_association.or_if_blank? default_thing
> >
> > Maybe just add it to Object?
> >
> > class Object
> >   def or_if_blank?(val)
> >     if respond_to? :blank?
> >       return self.blank? ? val : self
> >     else
> >       self
> >     end
> >   end
> > end
> >
> > class NilClass
> >   def or_if_blank?(val)
> >     val
> >   end
> > end
> >
> > That way you get it everywhere blank? is defined (Hash, Array, String,
> Nil,
> > Numeric)
> >
> > And the problem withhttp://gist.github.com/53846is that I don't think
> you
> > can do stuff on regular strings like this:
> >
> > user_msg = params[:stuff].or_if_blank? 'didnt type anything'
> >
> > -Ryan
> >
> > On Wed, Jan 28, 2009 at 1:21 AM, Ryan Angilly <[email protected]> wrote:
> > > But then it wouldn't work on regular strings right?
> >
> > > So you couldn't do things like:
> >
> > > user_msg = params[:stuff].or_if_blank? 'didnt type anything'
> >
> > > On Wed, Jan 28, 2009 at 1:18 AM, Chris Eppstein <
> [email protected]>wrote:
> >
> > >> I do it like this:
> >
> > >>http://gist.github.com/53846
> >
> > >> Long story short:
> >
> > >> >> class Foo
> > >> >>   attr_accessor :bar
> > >> >>   nillify_blank :bar
> > >> >> end
> > >> >> f = Foo.new
> > >> => #<Foo:0x4fe8a68>
> > >> >> f.bar = ""
> > >> => ""
> > >> >> f.bar
> > >> => nil
> >
> > >> Then you can use the || operator naturally.
> >
> > >> Chris
> >
> > >> On Jan 27, 10:04 pm, Mike Gaffney <[email protected]> wrote:
> > >> > ifempty?
> >
> > >> > Pascal Ehlert wrote:
> > >> > > Hi,
> >
> > >> > > How about adding some method #foo instead that returns nil if the
> > >> > > string is blank and self otherwise, so that you can do:
> >
> > >> > > self.email.foo || self.name
> >
> > >> > > This looks slightly better and more intuitive to me, if we can
> figure
> > >> > > out a descriptive name for the #foo method (I can't think of any
> atm,
> > >> > > admittedly).
> >
> > >> > > Cheers
> >
> > >> > > Pascal
> >
> > >> > > On 1/28/09 6:45 AM, "Ryan Angilly" <[email protected]> wrote:
> >
> > >> > >     Hey guys,
> >
> > >> > >     I find myself doing stuff like this a lot:
> >
> > >> > >     self.email.blank? ? self.name <http://self.name> : self.email
> >
> > >> > >     Anyone feel like adding an 'or' method to nil and String (a la
> > >> > >     blank?) so that this will work:
> >
> > >> > >     self.email.or(self.name <http://self.name> )
> >
> > >> > >     It would be as simple as adding this file to ActiveSupport
> >
> > >> > >     activesupport/lib/core_ext/or.rb
> >
> > >> > >     class String
> > >> > >     def or(val)
> > >> > >     self == "" ? val : self
> > >> > >     end
> > >> > >     end
> >
> > >> > >     class NilClass
> > >> > >     def or(val)
> > >> > >     val
> > >> > >     end
> > >> > >     end
> >
> > >> > >     I'll submit a patch of this + tests to LH if people are
> > >> interested.
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to