From 3ccef39f3fe7c995abd3a7b429bf8e134661097a Mon Sep 17 00:00:00 2001 From: schneefux Date: Tue, 24 Jan 2017 12:02:00 +0100 Subject: remove string hacks --- gamelocker/api.py | 3 ++ gamelocker/datatypes.py | 11 ++++---- gamelocker/strings.py | 74 ++++++++----------------------------------------- 3 files changed, 19 insertions(+), 69 deletions(-) (limited to 'gamelocker') diff --git a/gamelocker/api.py b/gamelocker/api.py index 3f0388f..1220336 100644 --- a/gamelocker/api.py +++ b/gamelocker/api.py @@ -197,3 +197,6 @@ class Gamelocker(object): limit -= max_limit return matches + + +pretty = gamelocker.strings.pretty diff --git a/gamelocker/datatypes.py b/gamelocker/datatypes.py index 74ce965..a5ecadc 100644 --- a/gamelocker/datatypes.py +++ b/gamelocker/datatypes.py @@ -9,7 +9,6 @@ Classes and utility functions to map API responses to objects. import inspect import sys -import gamelocker.strings from gamelocker.janus import DataMessage, Attribute @@ -44,15 +43,15 @@ class Player(DataMessage): key_id = attr(str, "id") name = attr(str, "name") - stats = attr(gamelocker.strings.Stats, "stats") + stats = attr(dict, "stats") class Participant(DataMessage): type_name = "participant" key_id = attr(str, "id") - actor = attr(gamelocker.strings.Hero, "actor") - stats = attr(gamelocker.strings.Stats, "stats") + actor = attr(str, "actor") + stats = attr(dict, "stats") player = rel(Player, "player") @@ -68,7 +67,7 @@ class Roster(DataMessage): type_name = "roster" key_id = attr(str, "id") - stats = attr(gamelocker.strings.Stats, "stats") + stats = attr(dict, "stats") participants = rel(Participant, "participants") team = rel(Team, "team") @@ -83,7 +82,7 @@ class Match(DataMessage): gameMode = attr(str, "gameMode") patchVersion = attr(str, "patchVersion") region = attr(str, "region") - stats = attr(gamelocker.strings.Stats, "stats") + stats = attr(dict, "stats") rosters = rel(Roster, "rosters") diff --git a/gamelocker/strings.py b/gamelocker/strings.py index 4036c6f..72f1654 100644 --- a/gamelocker/strings.py +++ b/gamelocker/strings.py @@ -10,56 +10,7 @@ Currently Vainglory-specific only. """ -# this is quite of a hack. -class Stats(dict): - """A hybrid between `dict` and `object` - that types :class:`LazyObject`'s to strings.""" - def __typeit(self, obj): - if isinstance(obj, (tuple, list)): - l = [] - for o in obj: - l.append(self.__typeit(o)) - return l - if isinstance(obj, dict): - return Stats(obj) - if isinstance(obj, str): - return LazyObject(obj) - return obj - - def __get(self, name): - # name = LazyObject(name).pretty() # TODO prettify itemUses - if name in self: - return self.__typeit(self[name]) - else: - raise AttributeError("No such attribute: " + name) - - def __getattr__(self, name): - return self.__get(name) - - def __setattr__(self, name, value): - self[name] = value - - def __delattr__(self, name): - if name in self: - del self[name] - else: - raise AttributeError("No such attribute: " + name) - - @property - def items(self): - return self.__get("items") - -class LazyObject(str): - """Can be both :class:`Hero` or :class:`Item`.""" - def pretty(self): - for cls in (Hero, Item): - prettystr = cls(self).pretty() - if prettystr != self: - return prettystr - return self - - -class Hero(str): +class VaingloryStrings(object): heroes = { "*Adagio*": "Adagio", "*Alpha*": "Alpha", @@ -93,13 +44,6 @@ class Hero(str): "*Vox*": "Vox" } - def pretty(self): - if self in self.heroes: - return self.heroes[self] - return self - - -class Item(str): items = { "Aftershock": "Aftershock", "Armor2": "Coat of Plates", @@ -236,9 +180,13 @@ class Item(str): "*1105_Item_SlumberingHusk*": "Slumbering Husk" } - def pretty(self): - if self in self.items: - return self.items[self] - if self in self.item_ids: - return self.item_ids[self] - return self + +def pretty(string): + """Returns prettified hero or item or original string.""" + if string in VaingloryStrings.heroes: + return VaingloryStrings.heroes[string] + if string in VaingloryStrings.items: + return VaingloryStrings.items[string] + if string in VaingloryStrings.item_ids: + return VaingloryStrings.item_ids[string] + return string -- cgit v1.3.1