(Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")) != Dir.glob("#{@path}/**") ?

I tried to ask this question once in Ruby-talk and inside another post in
this list. No one answered me and I doubt anyone is able to answer it.

So, I tried changing the subject in a weird, although correct question, to
see if someone could help me.

In actionpack/lib/action_view/paths.rb, there is the following snippet:

def templates_in_path
(Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")).each do |file|
unless File.directory?(file)
yield Template.new(file.split("#{self}/").last, self)
end
end
end

That got me intrigued. What is the difference between
Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")
and just
Dir.glob("#{@path}/**")
?

Thanks, Rodrigo.

I tried to ask this question once in Ruby-talk and inside another
post in
this list. No one answered me and I doubt anyone is able to answer it.

So, I tried changing the subject in a weird, although correct
question, to
see if someone could help me.

In actionpack/lib/action_view/paths.rb, there is the following
snippet:

def templates_in_path
  (Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")).each do |
file>
    unless File.directory?(file)
      yield Template.new(file.split("#{self}/").last, self)
    end
  end
end

That got me intrigued. What is the difference between
Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")
and just

Did you try running them ? Two minutes in the console seems to
indicate that "#{@path}/**/*/**" matches files inside those folders as
many levels down as you want

whereas "#{@path}/** just lists those folders in @path

Fred

Frederick Cheung wrote:

I tried to ask this question once in Ruby-talk and inside another
post in
this list. No one answered me and I doubt anyone is able to answer it.

So, I tried changing the subject in a weird, although correct
question, to
see if someone could help me.

In actionpack/lib/action_view/paths.rb, there is the following
snippet:

def templates_in_path
  (Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")).each do |
file>
    unless File.directory?(file)
      yield Template.new(file.split("#{self}/").last, self)
    end
  end
end

That got me intrigued. What is the difference between
Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")
and just

Did you try running them ? Two minutes in the console seems to
indicate that "#{@path}/**/*/**" matches files inside those folders as
many levels down as you want

whereas "#{@path}/** just lists those folders in @path

Fred

Ok, I got, they are different. But playing a bit more with glob, I found out
that (or, at least, it seems to):

Dir.glob("#{@path}/**") == Dir.glob("#{@path}/*")

and
(Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")) ==
(Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/*")) ==
Dir.glob("#{@path}/**/*")

Except for order. To be sure, try this:
(Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/*")).sort ==
Dir.glob("#{@path}/**/*")Dir.glob("#{@path}/**/*").sort

So, I would change my question:

Wouldn't
Dir.glob("#{@path}/**/*")
be a better replacement to
Dir.glob("#{@path}/**/*/**") | Dir.glob("#{@path}/**")
?

Rodrigo.