summaryrefslogtreecommitdiff
path: root/gamelocker
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-01-24 12:02:00 +0100
committerschneefux <schneefux+commit@schneefux.xyz>2017-01-24 12:02:00 +0100
commit3ccef39f3fe7c995abd3a7b429bf8e134661097a (patch)
treebdf801bfe14b111ef888e610c7dc28d8970177b7 /gamelocker
parent8b0b01aa4cbb645bfcecc5b6579b34a213389db1 (diff)
downloadpython-gamelocker-3ccef39f3fe7c995abd3a7b429bf8e134661097a.tar.gz
python-gamelocker-3ccef39f3fe7c995abd3a7b429bf8e134661097a.zip
remove string hacks
Diffstat (limited to 'gamelocker')
-rw-r--r--gamelocker/api.py3
-rw-r--r--gamelocker/datatypes.py11
-rw-r--r--gamelocker/strings.py74
3 files changed, 19 insertions, 69 deletions
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