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