... | ... |
@@ -475,7 +475,7 @@ class XDotAttrParser: |
475 | 475 |
|
476 | 476 |
def __init__(self, parser, buf): |
477 | 477 |
self.parser = parser |
478 |
- self.buf = self.unescape(buf) |
|
478 |
+ self.buf = buf |
|
479 | 479 |
self.pos = 0 |
480 | 480 |
|
481 | 481 |
self.pen = Pen() |
... | ... |
@@ -484,11 +484,6 @@ class XDotAttrParser: |
484 | 484 |
def __nonzero__(self): |
485 | 485 |
return self.pos < len(self.buf) |
486 | 486 |
|
487 |
- def unescape(self, buf): |
|
488 |
- buf = buf.replace('\\"', '"') |
|
489 |
- buf = buf.replace('\\n', '\n') |
|
490 |
- return buf |
|
491 |
- |
|
492 | 487 |
def read_code(self): |
493 | 488 |
pos = self.buf.find(" ", self.pos) |
494 | 489 |
res = self.buf[self.pos:pos] |
... | ... |
@@ -957,10 +952,11 @@ class DotLexer(Lexer): |
957 | 952 |
text = text.replace('\\\r', '') |
958 | 953 |
text = text.replace('\\\n', '') |
959 | 954 |
|
960 |
- text = text.replace('\\r', '\r') |
|
961 |
- text = text.replace('\\n', '\n') |
|
962 |
- text = text.replace('\\t', '\t') |
|
963 |
- text = text.replace('\\', '') |
|
955 |
+ # quotes |
|
956 |
+ text = text.replace('\\"', '"') |
|
957 |
+ |
|
958 |
+ # layout engines recognize other escape codes (many non-standard) |
|
959 |
+ # but we don't translate them here |
|
964 | 960 |
|
965 | 961 |
type = ID |
966 | 962 |
|