LH ticket created:
http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/1815-patch-add-or_if_blank-to-object


On Wed, Jan 28, 2009 at 12:01 PM, Ryan Angilly <[email protected]> wrote:

> +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