Wow.  Now THAT is what I'm talking about.

Thank you!

On 11/9/06, Robert Klemme <shortcutter / googlemail.com> wrote:
> Jamey Cribbs <jcribbs / netpromi.com> wrote:
> > Sean Hussey wrote:
> >> Hi everone,
> >>
> >> I'm not quite sure what the best way to go about this is.  I have a
> >> file with one user per line. Each line contains ID, username, phone,
> >> etc.  I split all these up into variables and then either create a
> >> new user or update an existing user:
> >>
> >> File.open("users.txt", "r") do |file|
> >>  file.each_line { |line|
> >>    id, username, phone, lots, more, variables =
> >>      line.chomp.split(/\|/); if user = ldap.get_entry(username)
> >>        # Existing user.  Check for update.
> >>        user.update(I, hate, passing, all, of, the, variables, that,
> >> were, just, split)
> >>      else
> >>        # New user.  Create!
> >>        user.new(Same, here, see, what, I mean?)
> >>      end
> >>  }
> >> end
> >>
> >> Should I put it all into an array?  Hash?  Would that make the split
> >> line huge but save space on the method calls?  How would you go about
> >> this?
> >
> > Well, if #update and #new are looking for the variables in the same
> > order that they are in the text file, you could do:
> >
> >
> > File.open("users.txt", "r") do |file|
> > file.each_line { |line|
> >   rec = line.chomp.split(/\|/);
> >     if user = ldap.get_entry(rec[1])
> >       # Existing user.  Check for update.
> >       user.update(*rec)
> >     else
> >       # New user.  Create!
> >       user.new(*rec)
> >     end
> > }
> > end
>
> Or even
>
> File.open("users.txt", "r") do |file|
>  file.each_line { |line|
>    rec = line.chomp.split(/\|/)
>    user.send(ldap.get_entry(rec[1]) ? :update : :new, *rec)
>  }
> end
>
> :-)
>
>     robert
>
>
>