added logical_sort_key to sort files

This commit is contained in:
Benoît Sierro
2023-08-09 13:54:48 +02:00
parent 54cfb48a36
commit 057a65d15e

View File

@@ -4,6 +4,7 @@ import datetime
import importlib
import json
import os
import re
from dataclasses import dataclass
from pathlib import Path
from typing import BinaryIO, Protocol, Sequence
@@ -327,3 +328,19 @@ def get_symb(right: bool, rel_i, abs_j, line_pos, max_ind):
return "╮╭"[right]
else:
raise ValueError("top of left columns cannot be below line")
def _to_num(s: str) -> str | float | int:
for f in int, float:
try:
return f(s)
except ValueError:
pass
return s
NUM_REGEX = r"[+-]?[\d]+(?:\.?[\d]+)?(?:[eE][+-]?\d+)?"
def logical_sort_key(s: os.PathLike | str) -> tuple:
return tuple(_to_num(el) for el in re.split(f"({NUM_REGEX})", str(s)) if el)