def handle_integral()

in src/latex2sympy2_extended/latex2sympy2.py [0:0]


    def handle_integral(self, func):
        if func.additive():
            integrand = self.convert_add(func.additive())
        elif func.frac():
            integrand = self.convert_frac(func.frac())
        else:
            integrand = 1

        int_var = None
        if func.DIFFERENTIAL():
            int_var = self.get_differential_var(func.DIFFERENTIAL())
        else:
            for sym in integrand.atoms(sympy.Symbol):
                s = str(sym)
                if len(s) > 1 and s[0] == 'd':
                    if s[1] == '\\':
                        int_var = self.create_symbol(s[2:], enforce_case=True)
                    else:
                        int_var = self.create_symbol(s[1:], enforce_case=True)
                    int_sym = sym
            if int_var:
                integrand = integrand.subs(int_sym, 1)
            else:
                # Assume dx by default
                int_var = self.create_symbol('x', enforce_case=True)

        if func.subexpr():
            if func.subexpr().atom():
                lower = self.convert_atom(func.subexpr().atom())
            else:
                lower = self.convert_expr(func.subexpr().expr())
            if func.supexpr().atom():
                upper = self.convert_atom(func.supexpr().atom())
            else:
                upper = self.convert_expr(func.supexpr().expr())
            return sympy.Integral(integrand, (int_var, lower, upper))
        else:
            return sympy.Integral(integrand, int_var)