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