New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@bygdle/mathparserjs

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bygdle/mathparserjs

Un intérprete de comandos escritos dentro de cadenas de texto.

latest
Source
npmnpm
Version
1.1.5
Version published
Weekly downloads
14
1300%
Maintainers
1
Weekly downloads
 
Created
Source

MathParserJS

Un intérprete de comandos (operaciones aritméticas, funciones y constantes) escritos dentro de cadenas de texto.

Puede encontrar un programa de ejemplo en /src/test.ts.

Expresiones

El intérprete soporta las siguientes expresiones:

  • Números reales, con o sin signo, parte decimal y con notación exponencial.
    1
    1.003
    -45.23
    2e5
    10e-13
    
  • Operaciones aritméticas (+ - * / % ^) entre números.
    1.65+0.0013
    1/2e5
    -5^2
    
  • Agrupadores.
    (-5)^2
    6/2*(2+1)
    (1+(3*2-1)^0.5)/2
    
  • Constantes (ver más abajo).
    x^2 - y
    e^2
    pi/4 + pi/8
    
  • Funciones (ver más abajo).
    1-cos(pi)^2
    sqrt(25)/abs(-5)
    

Instalación

Instale el programa a través de npm:

npm install @bygdle/mathparserjs

Importación

Si utiliza TypeScript, importe el módulo de la siguiente forma:

import {MathParser} from "@bygdle/mathparserjs";

Si utiliza JavaScript nativo, importe el módulo de la siguiente forma:

const MathParser = require("@bygdle/mathparserjs").MathParser;

Si utiliza el script del lado del cliente, importe el archivo /front/MathParser.js, como se muestra a continuación:

<script type="text/javascript" src="MathParser.js"></script>

se creará automáticamente el objeto global MathParser. Puede encontrar un programa de ejemplo en /front/test.html.

Clase Parser

Constructor Parser(list)

MathParser.Parser(list);

Parámetros:

  • list: Un objeto con las constantes/funciones que debe evaluar el intérprete, y sus respectivos valores/callbacks.

Ejemplo

const parser = new MathParser.Parser({
    pi: 3.141592,
    sin: x => {
        return Math.sin(x);
    },
    cos: x => {
        return Math.cos(x);
    }
});

Métodos

set(str: string)

Establece la cadena que el intérprete va a evaluar.

Parámetros:

  • str: La cadena de texto a establecer.

Devuelve: Parser

La instancia de Parser que ejecutó el método.

Ejemplo:

parser.set("4 * (2+ 3)");
let r = parser.execute(); 
console.log(r); // Imprime 20.

//otra forma
let r  = parser.set("1 + 1/2 + 1/4").execute();
console.log(r); // Imprime 1.75

execute([str: string])

Evalúa los comandos de la cadena de texto dada y devuelve el valor final. Si no se especifica el parámetro str, se evluará por defecto la cadena establecida por el método set().

Parámetros:

  • str: La cadena de texto a interpretar.

Devuelve: number

El resultado de la evaluación.

Ejemplo:

let r = parser.execute("cos(pi) - 6/2*(2+1)");
console.log(r); // Imprime -10

repeat(n: number, callback: Function)

Evalúa una cantidad determinada de veces la cadena de texto establecida por set(), y después de cada evaluación ejecuta el callback proporcionado.

Parámetros:

  • n: el número de veces que se va a evaluar la cadena.
  • callback: La función que se ejecutará después de cada iteración. La llamada tiene la siguiente forma:
    callback(r: number, i: number)
    
    Donde r es el resultado de la última evaluación realizada, e i es el número de la evaluación actual, desde 1 hasta n.

Devuelve: Parser

La instancia de Parser que ejecutó el método.

Ejemplo:

let x = 0;
const parser = new MathParser.Parser({x: 0})
.set("x^2")
.repeat(5, function(r: number) {
    console.log(r);
    this.constant("x", ++x);
});
/*
Imprime:
0
1
4
9
16
*/

constant(name: string, value: number)

Establece el nuevo valor de una constante del intérprete. Si la constante no existe, ésta se creará.

Parámetros:

  • name: El nombre de la constante a editar/crear.
  • value: El valor numérico de la constante a editar/crear.

Devuelve: Parser

La instancia de Parser que ejecutó el método.

Ejemplo:

const parser = new MathParser.Parser({x: 1, y: 2});
console.log(parser.execute("x + y")) // imprime 3.

parser
.constant("x", 2)
.constant("y", 3)
.constant("z", 4);

console.log(parser.execute("x + y + z")) // imprime 9.

then(callback: Function)

Establece una función que se ejecutará después de cada evaluación exitosa producida por execute() o repeat().

Parámetros:

  • callback: La función que se ejecutará una vez evaluada una cadena. La llamada tiene la siguiente forma:

    callback(r: number)
    

    Donde r es el resultado de la evaluación.

    Si no se pasa nada como parámetro, no se ejecutará nada y la única forma de obtener el resultado de una evaluación será capturando el valor que devuelve directamente execute().

Devuelve: Parser

La instancia de Parser que ejecutó el método.

Ejemplo:

const parser = new MathParser.Parser({x: 2, y: 5})
.then((r: number) => {
    console.log(`Resultado: r=${r}`);
})
.execute("y/x + 1");
/*
Resultado: r=3.5
*/

catch(callback: Function)

Establece una función que se ejecutará cuando el intérprete encuentre algún error en la evaluación.

Parámetros:

  • callback: La función que se ejecutará cuando suceda algún error. La llamada tiene la siguiente forma:

    callback(e: Error)
    

    Donde e es el error que se ha producido.

    Si no se pasa ninguna función como parámetro, no se ejecutará nada cuando ocurra un error y por tanto no habrá forma de capturar la información correspondiente.

Devuelve: Parser

La instancia de Parser que ejecutó el método.

Ejemplo:

const parser = new MathParser.Parser({x: 1, y: 2})
.catch((e: Error) => {
    console.log(`ERROR! ${e.message}`);
});

parser.execute("x + y"); // devuelve 3.
parser.execute("x + z"); // Imprime un mensaje de error.

Keywords

math

FAQs

Package last updated on 21 Jul 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts