From 61a4435cc3b294c98b22e8817f0d1d2cd0cd74e7 Mon Sep 17 00:00:00 2001 From: Sergey Konotopov Date: Fri, 20 Feb 2015 01:20:07 +0300 Subject: [PATCH] Case insensitivity option for #find_entry --- lib/zip/entry_set.rb | 6 ++++-- test/entry_set_test.rb | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/zip/entry_set.rb b/lib/zip/entry_set.rb index 9d093a6..91c7cca 100755 --- a/lib/zip/entry_set.rb +++ b/lib/zip/entry_set.rb @@ -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) diff --git a/test/entry_set_test.rb b/test/entry_set_test.rb index 9329620..10d6db8 100644 --- a/test/entry_set_test.rb +++ b/test/entry_set_test.rb @@ -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)