[flatpak] fix: category formatting | sorting categories

This commit is contained in:
Vinicius Moreira
2019-10-25 11:22:23 -03:00
parent 669206e873
commit 16586a7d28
6 changed files with 50 additions and 13 deletions

View File

@@ -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)