The datastore is now case insensitive, but this may lead to some confusion... lets see :-)

git-svn-id: file:///home/svn/framework3/trunk@4398 4d416f70-5f16-0410-b530-b9f4589650da
unstable
HD Moore 2007-02-16 05:39:38 +00:00
parent 0b42f16d1f
commit ddb22785ee
2 changed files with 37 additions and 3 deletions

View File

@ -21,12 +21,28 @@ class DataStore < Hash
# directly.
#
def []=(k, v)
k = find_key_case(k)
@imported[k] = false
@imported_by[k] = nil
super
super(k,v)
end
#
# Case-insensitive wrapper around hash lookup
#
def [](k)
super(find_key_case(k))
end
#
# Case-insensitive wrapper around store
#
def store(k,v)
super(find_key_case(k), v)
end
#
# Updates a value in the datastore with the specified name, k, to the
# specified value, v. This update does not alter the imported status of
@ -178,6 +194,24 @@ class DataStore < Hash
v
}
end
protected
#
# Case-insensitive key lookup
#
def find_key_case(k)
# Scan each key looking for a match
self.each_key do |rk|
if (rk.downcase == k.downcase)
return rk
end
end
# Fall through to the non-existent value
return k
end
end

View File

@ -938,7 +938,7 @@ class Core
print(
"Usage: unset var1 var2 var3 ...\n\n" +
"The unset command is used to unset one or more variables.\n" +
"To flush all entires, specify 'all' as the variable name")
"To flush all entires, specify 'all' as the variable name\n")
return false
end