Mercurial > genshi > genshi-test
comparison genshi/util.py @ 854:0d9e87c6cf6e
More work on reducing the size of the diff produced by 2to3.
author | cmlenz |
---|---|
date | Tue, 10 Nov 2009 22:53:21 +0000 |
parents | 4376010bb97e |
children | 1e2be9fb3348 |
comparison
equal
deleted
inserted
replaced
853:4376010bb97e | 854:0d9e87c6cf6e |
---|---|
1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
2 # | 2 # |
3 # Copyright (C) 2006-2007 Edgewall Software | 3 # Copyright (C) 2006-2009 Edgewall Software |
4 # All rights reserved. | 4 # All rights reserved. |
5 # | 5 # |
6 # This software is licensed as described in the file COPYING, which | 6 # This software is licensed as described in the file COPYING, which |
7 # you should have received as part of this distribution. The terms | 7 # you should have received as part of this distribution. The terms |
8 # are also available at http://genshi.edgewall.org/wiki/License. | 8 # are also available at http://genshi.edgewall.org/wiki/License. |
57 http://svn.myghty.org/myghtyutils/trunk/lib/myghtyutils/util.py | 57 http://svn.myghty.org/myghtyutils/trunk/lib/myghtyutils/util.py |
58 """ | 58 """ |
59 | 59 |
60 class _Item(object): | 60 class _Item(object): |
61 def __init__(self, key, value): | 61 def __init__(self, key, value): |
62 self.previous = self.next = None | 62 self.prv = self.nxt = None |
63 self.key = key | 63 self.key = key |
64 self.value = value | 64 self.value = value |
65 def __repr__(self): | 65 def __repr__(self): |
66 return repr(self.value) | 66 return repr(self.value) |
67 | 67 |
76 | 76 |
77 def __iter__(self): | 77 def __iter__(self): |
78 cur = self.head | 78 cur = self.head |
79 while cur: | 79 while cur: |
80 yield cur.key | 80 yield cur.key |
81 cur = cur.next | 81 cur = cur.nxt |
82 | 82 |
83 def __len__(self): | 83 def __len__(self): |
84 return len(self._dict) | 84 return len(self._dict) |
85 | 85 |
86 def __getitem__(self, key): | 86 def __getitem__(self, key): |
101 | 101 |
102 def __repr__(self): | 102 def __repr__(self): |
103 return repr(self._dict) | 103 return repr(self._dict) |
104 | 104 |
105 def _insert_item(self, item): | 105 def _insert_item(self, item): |
106 item.previous = None | 106 item.prv = None |
107 item.next = self.head | 107 item.nxt = self.head |
108 if self.head is not None: | 108 if self.head is not None: |
109 self.head.previous = item | 109 self.head.prv = item |
110 else: | 110 else: |
111 self.tail = item | 111 self.tail = item |
112 self.head = item | 112 self.head = item |
113 self._manage_size() | 113 self._manage_size() |
114 | 114 |
115 def _manage_size(self): | 115 def _manage_size(self): |
116 while len(self._dict) > self.capacity: | 116 while len(self._dict) > self.capacity: |
117 olditem = self._dict[self.tail.key] | 117 olditem = self._dict[self.tail.key] |
118 del self._dict[self.tail.key] | 118 del self._dict[self.tail.key] |
119 if self.tail != self.head: | 119 if self.tail != self.head: |
120 self.tail = self.tail.previous | 120 self.tail = self.tail.prv |
121 self.tail.next = None | 121 self.tail.nxt = None |
122 else: | 122 else: |
123 self.head = self.tail = None | 123 self.head = self.tail = None |
124 | 124 |
125 def _update_item(self, item): | 125 def _update_item(self, item): |
126 if self.head == item: | 126 if self.head == item: |
127 return | 127 return |
128 | 128 |
129 previous = item.previous | 129 prv = item.prv |
130 previous.next = item.next | 130 prv.nxt = item.nxt |
131 if item.next is not None: | 131 if item.nxt is not None: |
132 item.next.previous = previous | 132 item.nxt.prv = prv |
133 else: | 133 else: |
134 self.tail = previous | 134 self.tail = prv |
135 | 135 |
136 item.previous = None | 136 item.prv = None |
137 item.next = self.head | 137 item.nxt = self.head |
138 self.head.previous = self.head = item | 138 self.head.prv = self.head = item |
139 | 139 |
140 | 140 |
141 def flatten(items): | 141 def flatten(items): |
142 """Flattens a potentially nested sequence into a flat list. | 142 """Flattens a potentially nested sequence into a flat list. |
143 | 143 |