Improving category filter.

This commit is contained in:
José Manuel Barroso Galindo
2022-12-17 21:42:01 +01:00
parent db5ab8471d
commit 87469ae528
2 changed files with 28 additions and 14 deletions

View File

@@ -159,8 +159,11 @@ class Metadata:
def __init__(self, props):
self._props = props
def is_mgl_folder(self, folder):
return folder in self._props['folders'] and self._props['folders'][folder]['is_mgl']
def is_mgl_home(self, home):
return home in self._props['home'] and self._props['home'][home]['is_mgl']
def category_by_home(self, home):
return None if home not in self._props['home'] else self._props['home'][home]['category']
class Tags:
def __init__(self, metadata) -> None:
@@ -247,9 +250,13 @@ class Tags:
first_level = path.parts[1].lower()
self._append(result, self._use_term(first_level))
if self._metadata.is_mgl_folder(first_level):
if self._metadata.is_mgl_home(first_level):
self._append(result, self._use_term('mgl'))
category = self._metadata.category_by_home(first_level)
if category is not None:
self._append(result, self._use_term(category))
second_level = path.parts[2].lower()
if len(path.parts) > 3:
self._append(result, self._use_term(second_level))
@@ -265,9 +272,13 @@ class Tags:
if parent == 'docs':
first_level = path.parts[1].lower()
self._append(result, self._use_term(first_level))
if self._metadata.is_mgl_folder(first_level):
if self._metadata.is_mgl_home(first_level):
self._append(result, self._use_term('mgl'))
category = self._metadata.category_by_home(first_level)
if category is not None:
self._append(result, self._use_term(category))
second_level = path.parts[2].lower()
if len(path.parts) > 3:
self._append(result, self._use_term(second_level))
@@ -324,8 +335,11 @@ class Tags:
if (parent == 'games' or parent == 'docs'):
if first_level in ['gba2p', 'gameboy2p']:
self._append(result, self._use_term('handheld2p'))
if self._metadata.is_mgl_folder(first_level):
if self._metadata.is_mgl_home(first_level):
self._append(result, self._use_term('mgl'))
category = self._metadata.category_by_home(first_level)
if category is not None:
self._append(result, self._use_term(category))
self._append(result, self._use_term(first_level))

View File

@@ -333,7 +333,7 @@ def impl_install_generic_core(path, target_dir, core, metadata, touch_games_fold
copy_file(f'{releases_dir}/{latest_release}', f'{target_dir}/{core["category"]}/{latest_release}')
binaries.append(bin)
metadata.add_folder(core['home'])
metadata.add_home(core['home'], core['category'])
home_folders = [core['home']]
for mgl in mgl_files(releases_dir):
@@ -346,7 +346,7 @@ def impl_install_generic_core(path, target_dir, core, metadata, touch_games_fold
continue
home_folders.append(setname)
metadata.add_mgl_folder(setname)
metadata.add_mgl_home(setname, core['category'])
for folder in home_folders:
for readme in list_readmes(path):
@@ -501,17 +501,17 @@ extra_content_early_installers = {
class Metadata:
@staticmethod
def new_props():
return {'folders': {}}
return {'home': {}}
def __init__(self, props):
self._props = props
def add_mgl_folder(self, folder):
self._props['folders'][folder] = self._props['folders'].get(folder, {'is_mgl': True})
def add_mgl_home(self, folder, category):
self._props['home'][folder] = self._props['home'].get(folder, {'is_mgl': True, 'category': category.lower()[1:]})
def add_folder(self, folder):
self._props['folders'][folder] = self._props['folders'].get(folder, {'is_mgl': True})
self._props['folders'][folder]['is_mgl'] = False
def add_home(self, folder, category):
self._props['home'][folder] = self._props['home'].get(folder, {'is_mgl': True, 'category': category.lower()[1:]})
self._props['home'][folder]['is_mgl'] = False
def mra_files(folder):
return [without_folder(folder, f) for f in list_files(folder, recursive=False) if Path(f).suffix.lower() == '.mra']