def test_natkey_handles_numeric_chars(self): self.assertEqual( natsort.natkey( 'foo0123456789|²³|٠١٢٣٤٥٦٧٨٩|�๑๒๓๔๕๖๗๘๙|��bar' ), [ strxfrm('foo'), 123456789, strxfrm('|²³|'), 123456789, strxfrm('|'), 123456789, strxfrm('|'), 42, strxfrm('bar') ])
def sortkey(self, column): sortkey = self._sortkeys.get(column) if sortkey is not None: return sortkey if column == MainPanel.LENGTH_COLUMN: sortkey = self.obj.metadata.length or 0 elif column in MainPanel.NAT_SORT_COLUMNS: sortkey = natsort.natkey(self.text(column).lower()) else: sortkey = self.text(column).lower() self._sortkeys[column] = sortkey return sortkey
def set_table_item_val(self, row, colname, value, sortkey=None): # QVariant remembers the original type of the data # matching comparison operator will be used when sorting # get() will return a string, force conversion if asked to if sortkey is None: sortkey = natsort.natkey(value) item = SortableTableWidgetItem(sortkey) item.setData(QtCore.Qt.DisplayRole, value) pos = self.colpos(colname) if pos == 0: id = self.get_value_for_row_id(row, value) item.setData(QtCore.Qt.UserRole, id) self.table.setItem(row, pos, item)
def sortkey(self, column): if column == 1: return self.obj.metadata.length or 0 return natsort.natkey(self.text(column).lower())
def test_natkey_handles_null_char(self): self.assertEqual(natsort.natkey('foo\0'), natsort.natkey('foo'))
def test_natkey(self): self.assertTrue(natsort.natkey('foo1bar') < natsort.natkey('foo02bar')) self.assertTrue(natsort.natkey('foo1bar') == natsort.natkey('foo01bar')) self.assertTrue(natsort.natkey('foo (100)') < natsort.natkey('foo (00200)'))