Skip to content
信鑫-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