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, 13 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 import types 
    2424import os
    2525from gettext import gettext as _
    2626import string
     27import re
    2728import logging
    2829_logger = logging.getLogger('Calculate')
    2930
    from svgimage import SVGImage 
    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.
    class Calculate(ShareableActivity): 
    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)