Attachments you submit will be routed for moderation. If you have an account, please
log in first.
Ticket #2537: 0001-replace-fraction_sep-with-period-before-parsing-usin.patch
|
File 0001-replace-fraction_sep-with-period-before-parsing-usin.patch, 1.7 KB
(added by walter, 2 years ago)
|
|
same thing only done with regex instead
|
-
From 6bf9f77574b3099657359e6fd0359f7e1cde9994 Mon Sep 17 00:00:00 2001
From: Walter Bender <walter@sugarlabs.org>
Date: Fri, 24 Dec 2010 08:05:27 -0500
Subject: [PATCH] replace fraction_sep with period before parsing (using regex)
---
calculate.py | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/calculate.py b/calculate.py
index bda756c..d351092 100644
|
a
|
b
|
|
| 24 | 24 | import os |
| 25 | 25 | from gettext import gettext as _ |
| 26 | 26 | import string |
| | 27 | import re |
| 27 | 28 | import logging |
| 28 | 29 | _logger = logging.getLogger('Calculate') |
| 29 | 30 | |
| … |
… |
|
| 48 | 49 | from decimal import Decimal |
| 49 | 50 | from rational import Rational |
| 50 | 51 | |
| | 52 | |
| 51 | 53 | def findchar(text, chars, ofs=0): |
| 52 | 54 | ''' |
| 53 | 55 | Find a character in set <chars> starting from offset ofs. |
| … |
… |
|
| 448 | 450 | def process_async(self, eqn): |
| 449 | 451 | """Parse and process an equation asynchronously.""" |
| 450 | 452 | |
| | 453 | def replace_fraction_seperator(self, text): |
| | 454 | ''' |
| | 455 | Replace the fraction separator with '.' |
| | 456 | ''' |
| | 457 | match = text.group(0) |
| | 458 | return match.replace(self.ml.fraction_sep, '.') |
| | 459 | |
| 451 | 460 | def process(self): |
| 452 | 461 | """Parse the equation entered and show the result""" |
| 453 | 462 | |
| 454 | 463 | s = unicode(self.text_entry.get_text()) |
| 455 | 464 | label = unicode(self.label_entry.get_text()) |
| 456 | 465 | _logger.debug('process(): parsing %r, label: %r', s, label) |
| | 466 | # Replace the fraction separator with a period before parsing |
| | 467 | # A simple replace won't work, e.g. plot(x*x,x=-1,0..1,) |
| | 468 | s = re.sub(r'\d+\,\d*', self.replace_fraction_seperator, s) |
| 457 | 469 | try: |
| 458 | 470 | tree = self.parser.parse(s) |
| 459 | 471 | res = self.parser.evaluate(tree) |
Download in other formats: