@@ -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 )
0 commit comments