From 771f22f2088c582846520ebe7945907007549567 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Fri, 16 Mar 2012 14:57:21 -0400 Subject: [PATCH] Removed code duplication among editions in sorting algorithms. --- core/app.py | 24 ++++++++++++++++++------ core_me/app.py | 20 +------------------- core_pe/app.py | 22 +++++----------------- core_se/app.py | 20 +------------------- 4 files changed, 25 insertions(+), 61 deletions(-) diff --git a/core/app.py b/core/app.py index b09bf8b3..05a1b242 100644 --- a/core/app.py +++ b/core/app.py @@ -126,12 +126,6 @@ class DupeGuru(RegistrableApplication, Broadcaster): def _get_display_info(self, dupe, group, delta): raise NotImplementedError() - def _get_dupe_sort_key(self, dupe, get_group, key, delta): - raise NotImplementedError() - - def _get_group_sort_key(self, group, key): - raise NotImplementedError() - def _prioritization_categories(self): raise NotImplementedError() @@ -139,6 +133,24 @@ class DupeGuru(RegistrableApplication, Broadcaster): raise NotImplementedError() #--- Private + def _get_dupe_sort_key(self, dupe, get_group, key, delta): + if key == 'percentage': + m = get_group().get_match_of(dupe) + return m.percentage + if key == 'dupe_count': + return 0 + r = cmp_value(dupe, key) + if delta and (key in self.result_table.DELTA_COLUMNS): + r -= cmp_value(get_group().ref, key) + return r + + def _get_group_sort_key(self, group, key): + if key == 'percentage': + return group.percentage + if key == 'dupe_count': + return len(group) + return cmp_value(group.ref, key) + def _do_delete(self, j, replace_with_hardlinks): def op(dupe): j.add_progress() diff --git a/core_me/app.py b/core_me/app.py index 1304797a..225c55be 100644 --- a/core_me/app.py +++ b/core_me/app.py @@ -8,7 +8,7 @@ from hscommon.util import format_size, format_time from core.app import (DupeGuru as DupeGuruBase, format_timestamp, - format_perc, format_words, format_dupe_count, cmp_value) + format_perc, format_words, format_dupe_count) from . import prioritize from . import __appname__ from . import scanner, fs @@ -66,24 +66,6 @@ class DupeGuru(DupeGuruBase): 'dupe_count': format_dupe_count(dupe_count), } - def _get_dupe_sort_key(self, dupe, get_group, key, delta): - if key == 'percentage': - m = get_group().get_match_of(dupe) - return m.percentage - if key == 'dupe_count': - return 0 - r = cmp_value(dupe, key) - if delta and (key in self.result_table.DELTA_COLUMNS): - r -= cmp_value(get_group().ref, key) - return r - - def _get_group_sort_key(self, group, key): - if key == 'percentage': - return group.percentage - if key == 'dupe_count': - return len(group) - return cmp_value(group.ref, key) - def _prioritization_categories(self): return prioritize.all_categories() diff --git a/core_pe/app.py b/core_pe/app.py index d7684117..44053337 100644 --- a/core_pe/app.py +++ b/core_pe/app.py @@ -60,32 +60,20 @@ class DupeGuru(DupeGuruBase): } def _get_dupe_sort_key(self, dupe, get_group, key, delta): - if key == 'percentage': - m = get_group().get_match_of(dupe) - return m.percentage - if key == 'dupe_count': - return 0 if key == 'folder_path': dupe_folder_path = getattr(dupe, 'display_folder_path', dupe.folder_path) return str(dupe_folder_path).lower() - r = cmp_value(dupe, key) - if delta and (key in self.result_table.DELTA_COLUMNS): + if delta and key == 'dimensions': + r = cmp_value(dupe, key) ref_value = cmp_value(get_group().ref, key) - if key == 'dimensions': - r = get_delta_dimensions(r, ref_value) - else: - r -= ref_value - return r + return get_delta_dimensions(r, ref_value) + return DupeGuruBase._get_dupe_sort_key(self, dupe, get_group, key, delta) def _get_group_sort_key(self, group, key): - if key == 'percentage': - return group.percentage - if key == 'dupe_count': - return len(group) if key == 'folder_path': dupe_folder_path = getattr(group.ref, 'display_folder_path', group.ref.folder_path) return str(dupe_folder_path).lower() - return cmp_value(group.ref, key) + return DupeGuruBase._get_group_sort_key(self, group, key) def _prioritization_categories(self): return prioritize.all_categories() diff --git a/core_se/app.py b/core_se/app.py index 783047cf..dee76815 100644 --- a/core_se/app.py +++ b/core_se/app.py @@ -8,7 +8,7 @@ from hscommon.util import format_size from core.app import (DupeGuru as DupeGuruBase, format_timestamp, format_perc, - format_words, format_dupe_count, cmp_value) + format_words, format_dupe_count) from core import prioritize from . import __appname__ from .result_table import ResultTable @@ -42,24 +42,6 @@ class DupeGuru(DupeGuruBase): 'dupe_count': format_dupe_count(dupe_count), } - def _get_dupe_sort_key(self, dupe, get_group, key, delta): - if key == 'percentage': - m = get_group().get_match_of(dupe) - return m.percentage - if key == 'dupe_count': - return 0 - r = cmp_value(dupe, key) - if delta and (key in self.result_table.DELTA_COLUMNS): - r -= cmp_value(get_group().ref, key) - return r - - def _get_group_sort_key(self, group, key): - if key == 'percentage': - return group.percentage - if key == 'dupe_count': - return len(group) - return cmp_value(group.ref, key) - def _prioritization_categories(self): return prioritize.all_categories()