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

  • calculate.py

    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  
    2424import os 
    2525from gettext import gettext as _ 
    2626import string 
     27import re 
    2728import logging 
    2829_logger = logging.getLogger('Calculate') 
    2930 
     
    4849from decimal import Decimal 
    4950from rational import Rational 
    5051 
     52 
    5153def findchar(text, chars, ofs=0): 
    5254    ''' 
    5355    Find a character in set <chars> starting from offset ofs. 
     
    448450    def process_async(self, eqn): 
    449451        """Parse and process an equation asynchronously.""" 
    450452 
     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 
    451460    def process(self): 
    452461        """Parse the equation entered and show the result""" 
    453462 
    454463        s = unicode(self.text_entry.get_text()) 
    455464        label = unicode(self.label_entry.get_text()) 
    456465        _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) 
    457469        try: 
    458470            tree = self.parser.parse(s) 
    459471            res = self.parser.evaluate(tree)