mirror of
https://github.com/spalencsar/bearhub.git
synced 2026-07-08 00:24:15 +02:00
[flatpak] fix: category formatting | sorting categories
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import re
|
||||
import traceback
|
||||
from io import StringIO
|
||||
from threading import Thread
|
||||
|
||||
from bauh.api.abstract.cache import MemoryCache
|
||||
@@ -10,8 +10,6 @@ from bauh.api.http import HttpClient
|
||||
from bauh.gems.flatpak.constants import FLATHUB_API_URL, FLATHUB_URL
|
||||
from bauh.gems.flatpak.model import FlatpakApplication
|
||||
|
||||
RE_SPLIT_UPPER = re.compile(r'[A-Z][a-z]*')
|
||||
|
||||
|
||||
class FlatpakAsyncDataLoader(Thread):
|
||||
|
||||
@@ -25,6 +23,20 @@ class FlatpakAsyncDataLoader(Thread):
|
||||
self.logger = context.logger
|
||||
self.category_cache = category_cache
|
||||
|
||||
@staticmethod
|
||||
def format_category(category: str) -> str:
|
||||
word = StringIO()
|
||||
last_l = None
|
||||
for idx, l in enumerate(category):
|
||||
if idx != 0 and last_l != ' ' and l.isupper() and idx + 1 < len(category) and category[idx + 1].islower():
|
||||
word.write(' ')
|
||||
|
||||
last_l = l.lower()
|
||||
word.write(last_l)
|
||||
|
||||
word.seek(0)
|
||||
return word.read()
|
||||
|
||||
def run(self):
|
||||
if self.app:
|
||||
self.app.status = PackageStatus.LOADING_DATA
|
||||
@@ -60,7 +72,7 @@ class FlatpakAsyncDataLoader(Thread):
|
||||
cached = self.category_cache.get(c['name'])
|
||||
|
||||
if not cached:
|
||||
cached = ' '.join(RE_SPLIT_UPPER.findall(c['name'])).lower() if not c['name'].isupper() else c['name'].lower()
|
||||
cached = self.format_category(c['name'])
|
||||
self.category_cache.add_non_existing(c['name'], cached)
|
||||
|
||||
cats.append(cached)
|
||||
|
||||
Reference in New Issue
Block a user