Changeset 173
- Timestamp:
- 05/22/06 15:49:54 (2 years ago)
- Files:
-
- pyyaml/trunk/lib/yaml/constructor.py (modified) (1 diff)
- pyyaml/trunk/lib/yaml/reader.py (modified) (3 diffs)
- pyyaml/trunk/lib/yaml/representer.py (modified) (1 diff)
- pyyaml/trunk/tests/test_constructor.py (modified) (1 diff)
- pyyaml/trunk/tests/test_representer.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pyyaml/trunk/lib/yaml/constructor.py
r170 r173 233 233 234 234 inf_value = 1e300 235 while repr(inf_value) != repr(inf_value*inf_value):235 while inf_value != inf_value*inf_value: 236 236 inf_value *= inf_value 237 nan_value = inf_value/inf_value237 nan_value = -inf_value/inf_value # Trying to make a quiet NaN (like C99). 238 238 239 239 def construct_yaml_float(self, node): pyyaml/trunk/lib/yaml/reader.py
r136 r173 121 121 122 122 def peek(self, index=0): 123 if self.pointer+index+1 >= len(self.buffer): 123 try: 124 return self.buffer[self.pointer+index] 125 except IndexError: 124 126 self.update(index+1) 125 return self.buffer[self.pointer+index]127 return self.buffer[self.pointer+index] 126 128 127 129 def prefix(self, length=1): … … 133 135 if self.pointer+length+1 >= len(self.buffer): 134 136 self.update(length+1) 135 for k in range(length):137 while length: 136 138 ch = self.buffer[self.pointer] 137 139 self.pointer += 1 … … 143 145 elif ch != u'\uFEFF': 144 146 self.column += 1 147 length -= 1 145 148 146 149 def get_mark(self): pyyaml/trunk/lib/yaml/representer.py
r168 r173 196 196 while repr(inf_value) != repr(inf_value*inf_value): 197 197 inf_value *= inf_value 198 nan_value = inf_value/inf_value199 200 repr_pos_inf = repr(inf_value)201 repr_neg_inf = repr(-inf_value)202 repr_nan = repr(inf_value/inf_value)203 198 204 199 def represent_float(self, data): 205 repr_data = repr(data) 206 if repr_data == self.repr_pos_inf: 200 if data != data or (data == 0.0 and data == 1.0): 201 value = u'.nan' 202 elif data == self.inf_value: 207 203 value = u'.inf' 208 elif repr_data == self.repr_neg_inf:204 elif data == -self.inf_value: 209 205 value = u'-.inf' 210 elif repr_data == self.repr_nan: 211 value = u'.nan' 212 else: 213 value = unicode(repr_data) 206 else: 207 value = unicode(repr(data)) 214 208 return self.represent_scalar(u'tag:yaml.org,2002:float', value) 215 209 pyyaml/trunk/tests/test_constructor.py
r150 r173 262 262 data2.sort() 263 263 data2 = repr(data2) 264 if data1 != data2: 264 if data1 != data2: 265 raise 266 elif isinstance(data1, list): 267 self.failUnlessEqual(type(data1), type(data2)) 268 self.failUnlessEqual(len(data1), len(data2)) 269 for item1, item2 in zip(data1, data2): 270 if (item1 != item1 or (item1 == 0.0 and item1 == 1.0)) and \ 271 (item2 != item2 or (item2 == 0.0 and item2 == 1.0)): 272 continue 273 self.failUnlessEqual(item1, item2) 274 else: 265 275 raise 266 276 except: pyyaml/trunk/tests/test_representer.py
r153 r173 34 34 self.failUnlessEqual(len(data1), len(data2)) 35 35 for item1, item2 in zip(data1, data2): 36 if (item1 != item1 or (item1 == 0.0 and item1 == 1.0)) and \ 37 (item2 != item2 or (item2 == 0.0 and item2 == 1.0)): 38 continue 36 39 self.failUnlessEqual(item1, item2) 37 40 else:
