Nisp上手文档

信鑫-King edited this page Mar 15, 2017 · 3 revisions

Nisp

什么是Nisp ?

Nisp一种跨平台的语言,Nisp是一种思想,一切皆函数[fun ]funNisp提供的原子函数或用户自定义的方法,借鉴Lisp分治和线性思想,nisp内核只提供一种解析机制和部分原子函数,用户可以自定义方法,来满足自身业务需求,Nisp给用户无限的想像!

表达式

表达式类似于前缀表达式,将fun方法(如+-/*:|等)放置参数之前

安装

npm install nisp --save完成安装

快速上手

在线测试地址

// 引入nisp
var nisp = require("nisp").default;
// 定义加法方法
var sandbox = {
    "+": (...args) => args.reduce((a, b) => a + b)
};
// 表达式
var exp = ["+", 1, 2, ["+", 1, 2]];
// 调用nisp方法,传入(表达式,方法)
nisp(exp, sandbox); // => 6

同时,也可以采用ES6的写法

// 引入nisp
import nisp from 'nisp'
// 定义加法方法
var sandbox = {
    '+': (a, b) => a + b
};
// 表达式
var exp = ['+', 1, 2, ['+', 1, 2]];
// 调用nisp方法,传入(表达式,方法)
nisp(exp, sandbox); // => 6

常用方法解析

$

基本表达式:['$', any ]

将原始输入值转成规范的基本数据类型(Number/Boolean/String),调用其它方法时,同时也会在外包一层$,转成基本数据类型。

在线测试地址

var nisp = require("nisp").default;
var $ = require("nisp/lib/$").default;
var sandbox = {
    "$": $
};
var exp = ['$', [1, "ok"]];
nisp(exp, sandbox); // => [1,"ok"]

dict

基本语法:[: key value],用来输出一个{"key":"value"}对象,

在线测试地址

var nisp = require("nisp").default;
var dict = require("nisp/lib/dict").default;

var sandbox = {
    ":": dict
};

var exp = [":", 1, 2];

nisp(exp, sandbox); // => {1:2}

if

基本语法['?',a,b,c],相当于if判断语句中的a ? b : c,如果a存在为b,不存在为b

在线测试地址

var nisp = require("nisp").default;
var $if = require("nisp/lib/if").default;
var sandbox = {
    "?": $if
};
var exp = ['?', 1 , 'a' , 'b'];
var exp2 = ['?', 0 , 'a' , 'b'];
console.log(nisp(exp, sandbox)); // => a
console.log(nisp(exp2, sandbox)); // => b

list

基本语法['list',1,2,3],将多个值转成数组。 在线测试地址

var nisp = require("nisp").default;
var list = require("nisp/lib/list").default;
var sandbox = {
    "|": list
};
var exp = ['|', 1 , 'a' , 'b'];
nisp(exp, sandbox); // => [1,'a','b']

args

async

def

decode

encode

fn

do

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.