Gracias!!
Igual sigo deprimido...

On 8/31/07, Emmanuel Oga <[EMAIL PROTECTED]> wrote:
>
> Nacho:
>
> Dir.[] o Dir.glob toman como parametro un "glob pattern" (
> http://en.wikipedia.org/wiki/Glob_pattern) que es un patron similar a una
> expresion regular pero menos poderoso que generalmente se usa para describir
> archivos.
>
> El glob Dir[/directorio/**/*'] recorre todos los archivos en el directorio
> "directorio" __Y__ sus subdirectorios, por lo que no hace falta que lo
> implementes por tu cuenta. Otra cosa buena es que a Dir.[] le podes pasar
> mas de un glob pattern si queres, ejemplo:
>
> Dir.glob ["/tmp/**/*", "/etc/**/*"].each do |file|
> ...
> end
>
> que busca todos los archivos en /tmp y sus subdirectorios __y__ todos los
> archivos /etc y susu subdirectorios.
>
> *NachoKB <[EMAIL PROTECTED]>* escribió:
>
> Cuidado que Find no es una clase, sino un módulo.
>
> O sea, no es para usarlo directamente... normalmente es para incorporarlo
> en una clase (para componer comportamiento). Lo mismo con FileTest.
>
> Me parece que lo que querés hacer lo podés hacer sólo usando File y Dir...
>
>
> Básicamente, vos querés agarrar todos los archivos a partir de un root
> dado (recursivamente) y calcularle el MD5:
>
> Dir.new(directorio).map do |fullpath|
> >   [name, Digest::MD5.hexdigest (File.read(fullpath))]
> > end
> >
>
> El problema es que (1) si bien Dir es Enumerable, enumera sólo los hijos
> directo (no rescursivamente) y (2) "fullpath" no quedaría realmente el path
> completo... Por lo tanto hice esto, ver qué opinan:
>
> class TraversableDir
> >   include Enumerable
> >   def initialize(*args, &block)
> >     @dir = Dir.new *args, &block
> >   end
> >   def each(&block)
> >     @dir.each do |name|
> >       unless ['.', '..'].include? name
> >         fullpath = self.fullpath(name)
> >         case
> >           when File.directory?(fullpath)
> >             TraversableDir.new(fullpath).each &block
> >           when File.file?(fullpath)
> >             block.call fullpath
> >           else
> >             p "Ojo ni dir ni file: #{fullpath} (hay que hacer algo?)"
> >         end
> >       end
> >     end
> >   end
> >   def fullpath(name)
> >     File.expand_path "[EMAIL PROTECTED]/#{name}"
> >   end
> > end
> >
>
> Entonces queda:
>
> > TraversableDir.new(directorio).map do |fullpath|
> >   [name, Digest::MD5.hexdigest (File.read(fullpath))]
> > end
> >
>
> Lo que te daria un array de esta forma:
>
> > [
> >   [ "/path/a1", "ABDCE" ],
> >   [ "/path/a2", "DEADBEEF" ]
> > ]
> >
>
> Que es un idiom usado en Ruby (es similar a un Hash pero a veces se usa
> así, por ejemplo cuando no necesitás acceder a un elemento, sino que lo vas
> a iterar).
>
> On 8/31/07, Damian Janowski <[EMAIL PROTECTED]> wrote:
> >
> > On 8/31/07, Martin Sagastume <[EMAIL PROTECTED]> wrote:
> > > Excelente, eso era lo que necesitaba...muchas gracias!!
> > >
> > > Estuve mirando si el "API" de Rails...creo que no vi eso :P  ..una
> > > cosa que me llamó la atención es que la clase Find tenga programado el
> > > método find  ...como que es medio desprolijo el hecho de tener un
> > > metodo que se llame igual que la clase (ya que en ruby no es el
> > > constructor)  Buscar.buscar  en lugar de Buscador.buscar o algo asi
> > > ...  es por algo en especial ?
> >
> > Nu sé :)
> >
> > Pero me parece que suele pasar con esas pequeñas funcionalidades que
> > son casi "helper" y muchas veces quedan como métodos de clase, etc.
> >
> > Por ejemplo: Iconv.iconv
> >
> > Saludos!
> > _______________________________________________
> > Ruby mailing list
> > [email protected]
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
> ------------------------------
>
> ¡Sé un mejor fotógrafo!
> Perfeccioná tu técnica y encontrá las mejores fotos.
> Visitá http://ar.yahoo.com/promos/mejorfotografo.html
>
>
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a