Changeset 2997

Show
Ignore:
Timestamp:
01/08/08 02:39:13 (1 year ago)
Author:
athomas
Message:

render_cloud() now passes a percent to renderers instead of font pixel size.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tagsplugin/trunk/tractags/macros.py

    r2968 r2997  
    1818 
    1919    :cloud: Dictionary of {object: count} representing the cloud. 
    20     :param renderer: A callable with signature (tag, count, px) used to 
     20    :param renderer: A callable with signature (tag, count, percent) used to 
    2121                     render the cloud objects. 
    2222    """ 
     
    2626 
    2727    if renderer is None: 
    28         def default_renderer(tag, count, px): 
     28        def default_renderer(tag, count, percent): 
    2929            href = get_resource_url(env, Resource('tag', tag), req.href) 
    3030            return builder.a(tag, rel='tag', title='%i' % count, href=href, 
    31                              style='font-size: %ipx' % px) 
     31                             style='font-size: %ipx' % 
     32                                   int(min_px + percent * (max_px - min_px))) 
    3233        renderer = default_renderer 
    3334 
     35    # A LUT from count to n/len(cloud) 
    3436    size_lut = dict([(c, float(i)) for i, c in 
    3537                     enumerate(sorted(set([r for r in cloud.values()])))]) 
    3638    if size_lut: 
    37         scale = (max_px - min_px) / len(size_lut) 
     39        scale = 1.0 / len(size_lut) 
    3840 
    3941    ul = builder.ul(class_='tagcloud') 
    4042    last = len(cloud) - 1 
    4143    for i, (tag, count) in enumerate(sorted(cloud.iteritems())): 
    42         px = min_px + int(size_lut[count] * scale) 
    43         li = builder.li(renderer(tag, count, px)) 
     44        percent = size_lut[count] * scale 
     45        li = builder.li(renderer(tag, count, percent)) 
    4446        if i == last: 
    4547            li(class_='last') 
  • tagsplugin/trunk/tractags/query.py

    r2968 r2997  
    171171        self._compiled = None 
    172172        self.attribute_handlers = attribute_handlers or {} 
    173         self.attribute_handlers.setdefault('*', lambda *_: True
     173        self.attribute_handlers.setdefault('*', self._invalid_handler
    174174        if root: 
    175175            # Make ourselves into the root node 
     
    391391        return tokens 
    392392 
     393    def _invalid_handler(self, name, node, context): 
     394        raise InvalidQuery('Invalid attribute "%s"' % name) 
     395 
    393396if __name__ == '__main__': 
    394397    import doctest