Codebase list sugar-calculate-activity / debian/19.git.20080323.dfsg-2 eqnparserhelp.py
debian/19.git.20080323.dfsg-2

Tree @debian/19.git.20080323.dfsg-2 (Download .tar.gz)

eqnparserhelp.py @debian/19.git.20080323.dfsg-2raw · history · blame

# eqnparserhelp.py, help functions for the equation parser by
# Reinier Heeres <reinier@heeres.eu>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
# Change log:
#    2007-09-16: rwh, first version

import types
from gettext import gettext as _

import logging
_logger = logging.getLogger('EqnParser')

class Callable:
    def __init__(self, f):
        self.__call__ = f

class EqnParserHelp():

    # Unfortunately gettext is not yet initialized at the time _() is called here.
    # Still do it like this to make sure these strings show up in the POT-file
    DICT = {
        # TRANS: It is possible to translate commands. However, I would highly
        # recommend NOT doing so for mathematical functions like cos(). help(),
        # functions() etc should be translated.
        _("acos"): _(
"acos(x), return the arc cosine of x. This is the angle for which the cosine \
is x. Defined for -1 <= x < 1"),

        _("and"): _(
"and(x, y), logical and. Returns True if x and y are True, else returns False"),

        _("asin"): _(
"asin(x), return the arc sine of x. This is the angle for which the sine is x. \
Defined for -1 <= x <= 1"),

        _("atan"): _(
"atan(x), return the arc tangent of x. This is the angle for which the tangent \
is x. Defined for all x"),

        _("cos"): _(
"cos(x), return the cosine of x. This is the x-coordinate on the unit circle \
at the angle x"),

        _("cosh"): _(
"cosh(x), return the hyperbolic cosine of x. Given by (exp(x) + exp(-x)) / 2"),

        _("exp"): _(
"exp(x), return the natural exponent of x. Given by e^x"),

        _("fac"): _(
"fac(x), return the factorial of x. Given by x * (x - 1) * (x - 2) * ..."),

        # TRANS: This command is descriptive, so can be translated
        _("functions"): _(
"functions(), return a list of all the functions that are defined"),

        _("ln"): _(
"ln(x), return the natural logarithm of x. This is the value for which the \
exponent exp() equals x. Defined for x >= 0."),

        # TRANS: This command is descriptive, so can be translated
        _("operators"): _(
"operators(), return a list of the operators that are defined"),

        _("or"): _(
"or(x, y), logical or. Returns True if x and/or y are True, else return False"),

        _("plot"): _(
"plot(eqn, var=-a..b), plot the equation 'eqn' with the variable 'var' in the \
range from a to b"),

        _("sin"): _(
"sin(x), return the sine of x. This is the y-coordinate on the unit circle at \
the angle x"),

        _("sinh"): _(
"sinh(x), return the hyperbolic sine of x. Given by (exp(x) - exp(-x)) / 2"),

        _("sqrt"): _(
"sqrt(x), return the square root of x. This is the value for which the square \
equals x. Defined for x >= 0."),

        _("square"): _(
"square(x), return the square of x. Given by x * x"
        ),

        _("tan"): _(
"tan(x), return the tangent of x. This is the slope of the line from the origin \
of the unit circle to the point on the unit circle defined by the angle x. Given \
by sin(x) / cos(x)"),

        _("tanh"): _(
"sinh(x), return the hyperbolic tangent of x. Given by sinh(x) / cosh(x)"),

        _("test"): _(
"This is just a test topic, use help(index) for the index"),

        # TRANS: This command is descriptive, so can be translated
        _("variables"): _(
"variables(), return a list of the variables that are currently defined"),

        _("xor"): _(
"xor(x, y), logical xor. Returns True if either x is True (and y is False) \
or y is True (and x is False), else returns False"),

    }

    def __init__(self):
        pass

    def help(about):
        t = type(about)
        if (t != types.StringType and t != types.UnicodeType) or len(about) == 0:
            return _("Use help(test) for help about 'test', or help(index) for the index")

        # TRANS: help(index), both 'index' and the translation  will work
        if about == "index" or about == _("index"):
            ret = _("Topics") + ": "
            for (key, val) in EqnParserHelp.DICT.iteritems():
                ret += key + " "
            return ret

        ret = ""
        for (key, val) in EqnParserHelp.DICT.iteritems():
            if about == key:
                ret += val

        if ret == "":
           ret += _("No help about '%s' available, use help(index) for the index") % (about)

        return ret

    help = Callable(help)