Ticket #2537: 0001-adding-i18n-support-for-fraction-separator.patch

File 0001-adding-i18n-support-for-fraction-separator.patch, 2.7 KB (added by walter, 13 years ago)

combination of both patches

  • calculate.py

    From 0828cc9d8e7af72c2e3a6b503926ea60884b9cd9 Mon Sep 17 00:00:00 2001
    From: Walter Bender <walter@sugarlabs.org>
    Date: Wed, 5 Jan 2011 17:49:39 -0500
    Subject: [PATCH] adding i18n support for fraction separator
    
    ---
     calculate.py |   14 +++++++++++++-
     layout.py    |    3 ++-
     2 files changed, 15 insertions(+), 2 deletions(-)
    
    diff --git a/calculate.py b/calculate.py
    index bda756c..1b89b88 100644
    a b  
    1 # -*- coding: UTF-8 -*-
     1# -*- coding: utf-8 -*-
    22# calculate.py, sugar calculator, by:
    33#   Reinier Heeres <reinier@heeres.eu>
    44#   Miguel Alvarez <miguel@laptop.org>
    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)
  • layout.py

    diff --git a/layout.py b/layout.py
    index d439a3a..9fb0cab 100644
    a b class CalcLayout: 
    4747
    4848        mul_sym = self._parent.ml.mul_sym
    4949        div_sym = self._parent.ml.div_sym
     50        fraction_sep = self._parent.ml.fraction_sep
    5051
    5152        self.button_data = [
    5253# [x, y, width, label, bgcol, cb]
    class CalcLayout: 
    6364            [2, 2, 1, '3', self.col_gray2, lambda w: self._parent.add_text('3')],
    6465     
    6566            [0, 3, 1, '0', self.col_gray2, lambda w: self._parent.add_text('0')],
    66             [1, 3, 1, '.', self.col_gray2, lambda w: self._parent.add_text('.')],
     67            [1, 3, 1, fraction_sep, self.col_gray2, lambda w: self._parent.add_text(fraction_sep)],
    6768
    6869            [3, 0, 3, _('Clear'), self.col_gray1, lambda w: self._parent.clear()],
    6970