npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@totemorg/mathjx

v3.7.0

Published

Extended mathjs

Downloads

21

Readme

MATHJX

Extends MathJS to provide Matlab-JS-blended coding with the following control-blocks:

if TEST
	DO
elseif TEST
	DO
:
else
	DO
end

switch TEST
	case TEST
		DO
	:
	default
		DO
end

try
	DO
catch
	DO
end

for INDEX
	DO
end

while TEST
	DO
end

until TEST
	DO
end

when EVENT
	DO
end

def f=(x,y, [a,b, ...], {u,v, ...}, ...)
	DO
end

Inline functions are supported using fat-arrows:

(x,y, [a,b, ...], {u,v, ...}, ...) => {
	DO
}

Evaluate programs using:

$( "program code", ctx => { /* optional callback */ );

Because MathJS intrinsically protects against lax Matlab expressions, term-wise evaluation of intrinsically singular functions like cos must use Cos([x,y,z...]) or map([x,y,z,...], cos).

Transposes are likewise strict, so [x,y,z,...]', [[x,y,z,...]]', and [x;y;z;...]' produce [x,y,z,...], [x;y;z,...], and [x,y,z,...], respectively. Code multiple DOs on same line with DO \ DO \ ....

MathJX supports both MathJS tensors and native JS-style tensors:

var 
	A = $( [N1], function $ ( i, A ) { /*...*/ } ), 			// rank 1 
	B = $( [N1,N2], function $$ (i,j, B ) { /*...*/ } ), 		// rank 2
	C = $( [N1,N2,...NK], ( [i,j,...], C ) => { /*...*/ } )		// rank K

where initialization callbacks are optional. Tensors are similarly indexed using:

A.$( (i, A) => { /*...*/ } );				// rank 1
B.$$( (i,j, B) => { /*...*/ } );			// rank 2
C.for( [i,j,...], C ) { /*...*/ } );		// rank K

Usage

Acquire and optionally configure MATHJX as follows:

const $ = require("@totemorg/mathjx").config({
	key: value, 						// set key
	"key.key": value, 					// indexed set
	"key.key.": value					// indexed append
});

where configuration keys follow ENUMS deep copy conventions.

Manage

npm install @totemorg/mathjx	# Install
npm run start [ ? | $ | ...]	# Unit test
npm run verminor				# Roll minor version
npm run vermajor				# Roll major version
npm run redoc					# Regen documentation

Program Reference

MATHJX

Extends MathJS with program control-blocks. This module documented in accordance with jsdoc.

Requires: module:mathjs, module:enums, module:cp
Author: ACMESDS

MATHJX~JX

Reduce program control-blocks to mathjs executable code. The default language model reduces the following programs:

	if TEST
		BLOCK
	elseif TEST
		BLOCK
	:
	else
		BLOCK
	end

	switch TEST
		case TEST
			BLOCK
		:
		default TEST
			BLOCK
	end

	try
		BLOCK
	catch
		BLOCK
	end

	for INDEX
		BLOCK
	end

	while TEST
		BLOCK
	end

	until TEST
		BLOCK
	end

	when EVENT
		BLOCK
	end

	def f=(x,y,...)
		BLOCK
	end

Inline functions are also supported using fat-arrows:

	(x,y,...) => {
		BLOCK
	}

Kind: inner constant of MATHJX
Example$ctx: program def f=([a,b],{x,y}) f=x+y+a+b; end disp(f([4,5],{x:10,y:20}));

		reduces to
			def($ctx[1]);disp(f([4,5],{x:10,y:20}));

		with context
		[ { test: 'f=([a,b],{x,y})', code: 'f=x+y+a+b;\n' } ]  

| Param | Type | Description | | --- | --- | --- | | pgm | String | Array | Program being parsed. Use Array to bypass default eol-tokenization. | | blks | Array | Stash fo code blocks; initially []. | | idx | Number | Current line index to start parsing; initially 0. | | lang | Object | Language model; see code herein. |

Example

program
			def f=(x,y)
				f=x+y;
			end

		reduces to
			def($ctx[1]) 

		with context
			[ { test: 'f=(x,y)', code: 'f=x+y\n' } ]

	

Example

program
			for i
				i1
				i2
				for j
					j1; j2;
					while u\u1\end
				end
			end

		reduces to
			for($ctx[3]) 

		with context 
			[
				{ test: 'u', code: 'u1\n' },
				{ test: 'j', code: 'j1; j2;\nwhile($ctx[1])' },
				{ test: 'i', code: 'i1\ni2\nfor($ctx[2])' }
			]

	

Example

program
			a1="this;is;a;test";

		reduces to
			a1=$ctx[1];

		with context
				[ 'this;is;a;test' ]

	

Example

program
			somefn(1,2, \def f=(x,y)
				print("x=%f and y=%f",x,y);
			end
			)

		and program
			somefn(1,2, \(x,y) => {
				print("x=%f and y=%f",x,y);
			})

		reduces to
			def($ctx[2]))

		with context
			[ 'x=%f and y=%f', { test: 'f=(x,y)', code: 'print($ctx[1],x,y);\n' } ]

	

Example

program
			def f=(x,y)
				f=x+y;
			end
			disp(f(1,2));

		reduces to
			def($ctx[1]);disp(f(1,2));

		with context
				[ { test: 'f=(x,y)', code: 'f=x+y;\n' } ]

		

MATHJX~config(opts)

Configure MathJX with supplied options hash.

Kind: inner method of MATHJX

| Param | Type | Description | | --- | --- | --- | | opts | Object | Options hash with keys following the deep-copy conventions |

MATHJX~get()

Kind: inner method of MATHJX

MATHJX~toMathJS()

Return MathJS tensor handle.

Kind: inner method of MATHJX

MATHJX~toJS()

Return JS tensor handle.

Kind: inner method of MATHJX

MATHJX~isDefined()

Kind: inner method of MATHJX

MATHJX~rank()

Return rank of x.

Kind: inner method of MATHJX

MATHJX~size()

Return size of x.

Kind: inner method of MATHJX

MATHJX~len()

Return length of x.

Kind: inner method of MATHJX

MATHJX~disp()

Kind: inner method of MATHJX

MATHJX~print()

Kind: inner method of MATHJX

MATHJX~def()

Kind: inner method of MATHJX

MATHJX~for()

Kind: inner method of MATHJX

MATHJX~while()

Kind: inner method of MATHJX

MATHJX~if()

Kind: inner method of MATHJX

MATHJX~try()

Kind: inner method of MATHJX

MATHJX~switch()

Kind: inner method of MATHJX

MATHJX~when()

Kind: inner method of MATHJX

MATHJX~until()

Kind: inner method of MATHJX

Contacting, Contributing, Following

Feel free to

License

MIT


© 2012 ACMESDS