Changeset 52 for branches/pyyaml3000/lib/yaml/error.py
- Timestamp:
- 02/20/06 12:41:45 (7 years ago)
- File:
-
- 1 edited
-
branches/pyyaml3000/lib/yaml/error.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/pyyaml3000/lib/yaml/error.py
r45 r52 1 2 __all__ = ['Marker', 'YAMLError', 'MarkedYAMLError'] 3 4 class Marker: 5 6 def __init__(self, name, line, column, buffer, pointer): 7 self.name = name 8 self.line = line 9 self.column = column 10 self.buffer = buffer 11 self.pointer = pointer 12 13 def get_snippet(self, indent=4, max_length=75): 14 if self.buffer is None: 15 return None 16 head = '' 17 start = self.pointer 18 while start > 0 and self.buffer[start-1] not in u'\0\r\n\x85\u2028\u2029': 19 start -= 1 20 if self.pointer-start > max_length/2-1: 21 head = ' ... ' 22 start += 5 23 break 24 tail = '' 25 end = self.pointer 26 while end < len(self.buffer) and self.buffer[end] not in u'\0\r\n\x85\u2028\u2029': 27 end += 1 28 if end-self.pointer > max_length/2-1: 29 tail = ' ... ' 30 end -= 5 31 break 32 snippet = self.buffer[start:end].encode('utf-8') 33 return ' '*indent + head + snippet + tail + '\n' \ 34 + ' '*(indent+self.pointer-start+len(head)) + '^' 35 36 def __str__(self): 37 snippet = self.get_snippet() 38 where = " in \"%s\", line %d, column %d" \ 39 % (self.name, self.line+1, self.column+1) 40 if snippet is not None: 41 where += ":\n"+snippet 42 return where 1 43 2 44 class YAMLError(Exception): 3 45 pass 4 46 47 class MarkedYAMLError(YAMLError): 48 49 def __init__(self, context=None, context_marker=None, 50 problem=None, problem_marker=None): 51 self.context = context 52 self.context_marker = context_marker 53 self.problem = problem 54 self.problem_marker = problem_marker 55 56 def __str__(self): 57 lines = [] 58 #for (place, marker) in [(self.context, self.context_marker), 59 # (self.problem, self.problem_marker)]: 60 # if place is not None: 61 # lines.append(place) 62 # if marker is not None: 63 # lines.append(str(marker)) 64 if self.context is not None: 65 lines.append(self.context) 66 if self.context_marker is not None \ 67 and (self.problem is None or self.problem_marker is None 68 or self.context_marker.name != self.problem_marker.name 69 or self.context_marker.line != self.problem_marker.line 70 or self.context_marker.column != self.problem_marker.column): 71 lines.append(str(self.context_marker)) 72 if self.problem is not None: 73 lines.append(self.problem) 74 if self.problem_marker is not None: 75 lines.append(str(self.problem_marker)) 76 return '\n'.join(lines) 77 78 79
Note: See TracChangeset
for help on using the changeset viewer.
