Case insensitivity option for #find_entry

This commit is contained in:
Sergey Konotopov 2015-02-20 01:20:07 +03:00
parent 0cbae14c76
commit 61a4435cc3
2 changed files with 10 additions and 2 deletions

View File

@ -13,8 +13,10 @@ module Zip
@entry_set.include?(to_key(entry))
end
def find_entry(entry)
@entry_set[to_key(entry)]
def find_entry(entry, case_sensitively = true)
return @entry_set[to_key(entry)] if case_sensitively
entry = @entry_set.find { |k, _| k.downcase == to_key(entry).downcase }
entry.last if entry
end
def <<(entry)

View File

@ -65,6 +65,12 @@ class ZipEntrySetTest < MiniTest::Test
assert_equal(ZIP_ENTRIES, @zipEntrySet.entries)
end
def test_find_entry
# by default, #find_entry is case-sensitive
assert_equal(ZIP_ENTRIES[0], @zipEntrySet.find_entry('name1'))
assert_equal(ZIP_ENTRIES[0], @zipEntrySet.find_entry('NaMe1', false))
end
def test_entries_with_sort
::Zip.sort_entries = true
assert_equal(ZIP_ENTRIES.sort, @zipEntrySet.entries)