Skip to content

Commit 370eebb

Browse files
committed
Consolidate listeners and processors as plugins.
Remove the listeners and processors packages in favor of a generic plugins package. This package is organized by resource type, so plugins for post processing game summaries can be placed into the plugins.game_summary.py module.
1 parent 50ac061 commit 370eebb

File tree

18 files changed

+223
-301
lines changed

18 files changed

+223
-301
lines changed

sc2reader/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import absolute_import
22

33
# import submodules
4-
from sc2reader import listeners, data, scripts
4+
from sc2reader import plugins, data, scripts
55

66
from sc2reader import factories, log_utils
77

sc2reader/factories.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,28 +100,32 @@ def configure(self, cls=None, **options):
100100
def reset(self):
101101
self.options = defaultdict(dict)
102102

103-
def register_plugin(self, cls, *plugins):
103+
def register_plugin(self, cls, plugin):
104104
if isinstance(cls, basestring):
105105
cls = self._resource_name_map.get(cls.lower(),Resource)
106-
self.plugins.extend(zip([cls]*len(plugins), plugins))
106+
self.plugins.append((cls, plugin))
107107

108108

109109
# Support Functions
110110
def load(self, cls, source, options=None, **new_options):
111111
options = options or self._get_options(cls, **new_options)
112112
resource, filename = self._load_resource(source, options=options)
113-
obj = cls(resource, filename=filename, **options)
114-
for plugin in options.get('plugins',self._get_plugins(cls)):
115-
obj = plugin(obj)
116-
return obj
113+
return self._load(cls, resource, filename=filename, options=options)
117114

118115
def load_all(self, cls, sources, options=None, **new_options):
119116
options = options or self._get_options(cls, **new_options)
120-
for source in self.load_resources(sources, options=options):
121-
yield self.load(cls, source, options=options)
117+
for resource, filename in self._load_resources(sources, options=options):
118+
yield self._load(cls, resource, filename=filename, options=options)
122119

123120

124121
# Internal Functions
122+
def _load(self, cls, resource, filename, options):
123+
obj = cls(resource, filename=filename, **options)
124+
for plugin in options.get('plugins',self._get_plugins(cls)):
125+
# TODO: What if you want to do a transform?
126+
plugin(obj)
127+
return obj
128+
125129
def _get_plugins(self, cls):
126130
plugins = list()
127131
for ext_cls, plugin in self.plugins:
@@ -137,7 +141,7 @@ def _get_options(self, cls, **new_options):
137141
options.update(new_options)
138142
return options
139143

140-
def _load_resources(self, resources, resource_loader, options=None, **new_options):
144+
def _load_resources(self, resources, options=None, **new_options):
141145
"""Collections of resources or a path to a directory"""
142146
options = options or self._get_options(Resource, **new_options)
143147

@@ -151,7 +155,7 @@ def _load_resources(self, resources, resource_loader, options=None, **new_option
151155
def _load_resource(self, resource, options=None, **new_options):
152156
"""http links, filesystem locations, and file-like objects"""
153157
options = options or self._get_options(Resource, **new_options)
154-
158+
print resource
155159
if isinstance(resource, basestring):
156160
if re.match(r'https?://',resource):
157161
self.logger.info("Fetching remote resource: "+resource)

sc2reader/listeners/__init__.py

Lines changed: 0 additions & 8 deletions
This file was deleted.

sc2reader/listeners/apm.py

Lines changed: 0 additions & 26 deletions
This file was deleted.

sc2reader/listeners/location.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

sc2reader/listeners/selection.py

Lines changed: 0 additions & 105 deletions
This file was deleted.

sc2reader/listeners/target.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

sc2reader/listeners/utils.py

Lines changed: 0 additions & 11 deletions
This file was deleted.

sc2reader/plugins/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import replay

sc2reader/plugins/game_summary.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# TODO: Generate images for the graphs and stuff?

0 commit comments

Comments
 (0)