Changeset 2997
- Timestamp:
- 01/08/08 02:39:13 (1 year ago)
- Files:
-
- tagsplugin/trunk/tractags/macros.py (modified) (2 diffs)
- tagsplugin/trunk/tractags/query.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tagsplugin/trunk/tractags/macros.py
r2968 r2997 18 18 19 19 :cloud: Dictionary of {object: count} representing the cloud. 20 :param renderer: A callable with signature (tag, count, p x) used to20 :param renderer: A callable with signature (tag, count, percent) used to 21 21 render the cloud objects. 22 22 """ … … 26 26 27 27 if renderer is None: 28 def default_renderer(tag, count, p x):28 def default_renderer(tag, count, percent): 29 29 href = get_resource_url(env, Resource('tag', tag), req.href) 30 30 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))) 32 33 renderer = default_renderer 33 34 35 # A LUT from count to n/len(cloud) 34 36 size_lut = dict([(c, float(i)) for i, c in 35 37 enumerate(sorted(set([r for r in cloud.values()])))]) 36 38 if size_lut: 37 scale = (max_px - min_px)/ len(size_lut)39 scale = 1.0 / len(size_lut) 38 40 39 41 ul = builder.ul(class_='tagcloud') 40 42 last = len(cloud) - 1 41 43 for i, (tag, count) in enumerate(sorted(cloud.iteritems())): 42 p x = min_px + int(size_lut[count] * scale)43 li = builder.li(renderer(tag, count, p x))44 percent = size_lut[count] * scale 45 li = builder.li(renderer(tag, count, percent)) 44 46 if i == last: 45 47 li(class_='last') tagsplugin/trunk/tractags/query.py
r2968 r2997 171 171 self._compiled = None 172 172 self.attribute_handlers = attribute_handlers or {} 173 self.attribute_handlers.setdefault('*', lambda *_: True)173 self.attribute_handlers.setdefault('*', self._invalid_handler) 174 174 if root: 175 175 # Make ourselves into the root node … … 391 391 return tokens 392 392 393 def _invalid_handler(self, name, node, context): 394 raise InvalidQuery('Invalid attribute "%s"' % name) 395 393 396 if __name__ == '__main__': 394 397 import doctest
