Case sensitivity in glob revisited


#1

Dir.glob( pattern, [flags] ) => array
Dir.glob( pattern, [flags] ) {| filename | block } => nil

 Returns the filenames found by expanding _pattern_ which is an
 +Array+ of the patterns or the pattern +String+, either as an
 _array_ or as parameters to the block. Note that this pattern is
 not a regexp (it's closer to a shell glob). See +File::fnmatch+

for
the meaning of the flags parameter. Note that case sensitivity
depends on your system (so +File::FNM_CASEFOLD+ is ignored)

“case sensitivity depends on your system”

Ruby’s cross-platform, so Ruby should trump the system. Of course if
the system is case insensitive, to won’t matter wither way. But
otherwise without this, to get case insensitivity we have to do:

Dir.glob("[Ss][Oo][Mm][Ee][Th][Ii][Nn][Gg][Ss][Tt][Uu][Pp][Ii][Dd]")

T.


#2

On 7/30/07, Trans removed_email_address@domain.invalid wrote:

“case sensitivity depends on your system”

Ruby’s cross-platform, so Ruby should trump the system. Of course if
the system is case insensitive, to won’t matter wither way. But
otherwise without this, to get case insensitivity we have to do:

Dir.glob("[Ss][Oo][Mm][Ee][Th][Ii][Nn][Gg][Ss][Tt][Uu][Pp][Ii][Dd]")

Tom what would you expect it to do in the following case:

touch SomeThingStupid
touch somethingstupid
touch SOMETHINGSTUPID # no, I am not shouting, sorry :wink:

I am afraid Ruby can not overcome some limitations of the cruel,
physical world :(.

Cheers
Robert


#3

Hi,

At Tue, 31 Jul 2007 04:08:49 +0900,
Trans wrote in [ruby-talk:262505]:

 not a regexp (it's closer to a shell glob). See +File::fnmatch+ for
 the meaning of the _flags_ parameter. Note that case sensitivity
 depends on your system (so +File::FNM_CASEFOLD+ is ignored)

Ruby’s cross-platform, so Ruby should trump the system. Of course if
the system is case insensitive, to won’t matter wither way. But
otherwise without this, to get case insensitivity we have to do:

Dir.glob(“somehingstupid”, File::FNM_CASEFOLD)


#4

On Jul 30, 12:34 pm, Nobuyoshi N. removed_email_address@domain.invalid wrote:

otherwise without this, to get case insensitivity we have to do:

Dir.glob(“somehingstupid”, File::FNM_CASEFOLD)

Yea it works now! |-) So the docs just need to catch up to reality.
Okay.

Sorry for the noise,
T.


#5

On 7/30/07, Trans removed_email_address@domain.invalid wrote:

 _array_ or as parameters to the block. Note that this pattern is

Oh, I just meant for Dir#glob. Where the docs said “(so
+File::FNM_CASEFOLD+ is ignored)” – I didn’t want it to be ignored.
so you would just get three entries with the same name, right?
Sorry I failed to understand that this was what you wanted .

Cheers
Robert


#6

On Jul 30, 12:25 pm, “Robert D.” removed_email_address@domain.invalid wrote:

 the meaning of the _flags_ parameter. Note that case sensitivity

Tom what would you expect it to do in the following case:

touch SomeThingStupid
touch somethingstupid
touch SOMETHINGSTUPID # no, I am not shouting, sorry :wink:

I am afraid Ruby can not overcome some limitations of the cruel,
physical world :(.

Oh, I just meant for Dir#glob. Where the docs said “(so
+File::FNM_CASEFOLD+ is ignored)” – I didn’t want it to be ignored.

T.