Skip to content

Commit 61a4435

Browse files
committed
Case insensitivity option for #find_entry
1 parent 0cbae14 commit 61a4435

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

lib/zip/entry_set.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ def include?(entry)
1313
@entry_set.include?(to_key(entry))
1414
end
1515

16-
def find_entry(entry)
17-
@entry_set[to_key(entry)]
16+
def find_entry(entry, case_sensitively = true)
17+
return @entry_set[to_key(entry)] if case_sensitively
18+
entry = @entry_set.find { |k, _| k.downcase == to_key(entry).downcase }
19+
entry.last if entry
1820
end
1921

2022
def <<(entry)

test/entry_set_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ def test_entries
6565
assert_equal(ZIP_ENTRIES, @zipEntrySet.entries)
6666
end
6767

68+
def test_find_entry
69+
# by default, #find_entry is case-sensitive
70+
assert_equal(ZIP_ENTRIES[0], @zipEntrySet.find_entry('name1'))
71+
assert_equal(ZIP_ENTRIES[0], @zipEntrySet.find_entry('NaMe1', false))
72+
end
73+
6874
def test_entries_with_sort
6975
::Zip.sort_entries = true
7076
assert_equal(ZIP_ENTRIES.sort, @zipEntrySet.entries)

0 commit comments

Comments
 (0)