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
Copyright (C) 2012-2017 Edgewall Software