added logical_sort_key to sort files
This commit is contained in:
@@ -4,6 +4,7 @@ import datetime
|
|||||||
import importlib
|
import importlib
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
import re
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import BinaryIO, Protocol, Sequence
|
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]
|
return "╮╭"[right]
|
||||||
else:
|
else:
|
||||||
raise ValueError("top of left columns cannot be below line")
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user