Changeset 258

Show
Ignore:
Timestamp:
07/04/08 18:14:01 (5 months ago)
Author:
akaihola
Message:

[yui] Added support for optional modules. Improved error handling.

Location:
trunk/yui
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/yui/components.py

    r234 r258  
    55        self.name = name 
    66        self.data = data 
     7 
     8    @property 
     9    def optional(self): 
     10        return self.data.get('optional', []) 
    711 
    812    @property 
  • trunk/yui/middleware.py

    r234 r258  
    218218                self._rolled_up_components[r] for r in direct_deps 
    219219                if r in self._rolled_up_components] 
    220             all_deps = set(direct_deps).union(set(indirect_deps)) 
     220            all_deps = set(direct_deps) \ 
     221                       .union(set(indirect_deps)) \ 
     222                       .union(set(component.optional)) 
    221223            deps_left = comps.intersection(all_deps) 
    222224            for r in self._sort_components(deps_left): 
     
    257259            loader.add_component(component) 
    258260 
    259         content = YUI_INIT_RE.sub(loader.render(), content, 1) 
    260         response.content = YUI_INIT_RE.sub( 
    261             '<!-- WARNING: MULTIPLE YUI_init STATEMENTS -->', content) 
     261        tags = loader.render() 
     262        if tags: 
     263            content, count = YUI_INIT_RE.subn(tags, content, 1) 
     264            if count != 1: 
     265                content += ('<p>%d YUI init tags found,' 
     266                            'at least one expected</p>' % count) 
     267            response.content = YUI_INIT_RE.sub( 
     268                '<!-- WARNING: MULTIPLE YUI init STATEMENTS -->', content) 
    262269 
    263270        return response