[gnome-games/wip/exalm/mame: 3/4] mame: Simplify parsing
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-games/wip/exalm/mame: 3/4] mame: Simplify parsing
- Date: Wed, 5 Feb 2020 21:36:58 +0000 (UTC)
commit d2d865d2dde6a0f8d2a24f196b7f4ea4016d12e4
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Thu Feb 6 02:34:54 2020 +0500
mame: Simplify parsing
Since the file only contains id and name now, get rid of the expensive
regex and just use string splitting.
Fixes https://gitlab.gnome.org/GNOME/gnome-games/issues/111
plugins/mame/src/mame-game-info.vala | 46 +++++++----------------------
plugins/mame/src/mame-game-uri-adapter.vala | 3 +-
2 files changed, 12 insertions(+), 37 deletions(-)
---
diff --git a/plugins/mame/src/mame-game-info.vala b/plugins/mame/src/mame-game-info.vala
index 2a7463de..967fb949 100644
--- a/plugins/mame/src/mame-game-info.vala
+++ b/plugins/mame/src/mame-game-info.vala
@@ -1,54 +1,30 @@
// This file is part of GNOME Games. License: GPL-3.0+.
-private struct Games.MameGameInfo {
- private static HashTable<string, MameGameInfo?> supported_games;
- private static Regex game_regex;
+private class Games.MameGameInfo {
+ private static HashTable<string, string> supported_games;
- public string id;
- public string name;
-
- public static HashTable<string, MameGameInfo?> get_supported_games () throws Error {
+ public static HashTable<string, string> get_supported_games () throws Error {
if (supported_games != null)
return supported_games;
- supported_games = new HashTable<string, MameGameInfo?> (str_hash, str_equal);
+ supported_games = new HashTable<string, string> (str_hash, str_equal);
var bytes = resources_lookup_data ("/org/gnome/Games/plugins/mame/supported-games",
ResourceLookupFlags.NONE);
var text = (string) bytes.get_data ();
- if (game_regex == null) {
- // Data is of the form:
GAME[L](YEAR,NAME,PARENT,MACHINE,INPUT,CLASS,INIT,MONITOR,COMPANY,FULLNAME,FLAGS[,LAYOUT])
- var simple = " *([^,]+) *";
- var quoted = " *\" *(.*?) *\" *";
- var pattern =
@"$simple,$simple,$simple,$simple,$simple,$simple,$simple,$simple,$quoted,$quoted,$simple(?:,$simple)?";
- game_regex = new Regex ("^GAMEL?\\(" + pattern + "\\) *$");
- }
-
var lines = text.split ("\n");
foreach (var line in lines) {
- MatchInfo match_info;
- if (!game_regex.match (line, 0, out match_info))
+ var parts = line.split (" ", 2);
+
+ if (parts.length < 2)
continue;
- var game_info = MameGameInfo () {
- id = cleanup_string (match_info.fetch (2)), // NAME
- name = cleanup_string (match_info.fetch (10)) // FULLNAME
- };
- supported_games[game_info.id] = game_info;
+ var id = parts[0];
+ var name = parts[1];
+
+ supported_games[id] = name;
}
return supported_games;
}
-
- private static Regex cleanup_string_regex;
- private static string cleanup_string (string text) {
- if (cleanup_string_regex == null)
- cleanup_string_regex = /^[\s"]*(.*?)[\s"]*$/;
-
- MatchInfo match_info;
- if (!cleanup_string_regex.match (text, 0, out match_info))
- return text;
-
- return match_info.fetch (1) ?? text;
- }
}
diff --git a/plugins/mame/src/mame-game-uri-adapter.vala b/plugins/mame/src/mame-game-uri-adapter.vala
index e6a4268e..fc240914 100644
--- a/plugins/mame/src/mame-game-uri-adapter.vala
+++ b/plugins/mame/src/mame-game-uri-adapter.vala
@@ -20,8 +20,7 @@ private class Games.MameGameUriAdapter : GameUriAdapter, Object {
var uid_string = @"mame-$game_id".down ();
var uid = new GenericUid (uid_string);
- var info = supported_games[game_id];
- var title_string = info.name;
+ var title_string = supported_games[game_id];
title_string = title_string.split ("(")[0];
title_string = title_string.strip ();
var title = new GenericTitle (title_string);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]