nebula

module
v1.6.4-0...-ed49831 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 27, 2024 License: Apache-2.0

README

果汁

使用

默认启动局域网服务地址
127.0.0.1:8080

介绍

果汁是一个跨平台启动客户端 运行Nebula语言
拥有良好的语法功能
帮助你更快更便捷开发网站等服务

使用说明
启动后会生成juiceData文件夹
请仔细阅读README.md文档进行使用
启动成功后就能访问127.0.0.1:8080进行查看
如果找不到md查看器,可以把md放进public访问进行查看。

手机目录

Documents/juiceData

wn词库

<h1>
<?n
%版本%
?>
</h1>

n词库

头部
赋予值:内容

Main
触发执行:%赋予值%

初始文件

程序内置文档位置

juiceData/README.md

默认启动

127.0.0.1:8080

程序系统重要文件
程序启动执行

juiceData/system/start.n

程序网页重要文件
随着系统跟随启动的目录文件

juiceData/web/private/system/start.n

路由词库

juiceData/web/private/system/router.n

开发讨论

QQ群:927467925

Github

https://github.com/cjxpj/nebulaLanguage

下载

Gitee

https://gitee.com/cjxpj/nebulaLanguage

下载

Nebula

介绍

基于Golang语言开发
专注WEB站点开发
快速成型项目

认识文件分类
名称 目录
储存目录 database
资源目录 private
词库目录 public
储存目录用于读写,资源目录用于存放重要资源跟词库,词库目录用于被访问执行公开的数据。
执行

词库支持头部在没有触发词情况下执行哦!

头部

Main
尾巴
JSON框
JSON>赋予值={}
a=b
a->a=b
<JSON
JSON>[]
0=a
1=b
<JSON
文本框

帮助你更方便的多行文本

文本>赋予值=\n
内
容
<文本
文本>\n
内
容
<文本
函数框

函数框可以帮助你在运行词库时候动态执行词库
可以减少词库回调需求
触发可以留空
触发留空后就会直接运行
函数框也支持获取参数跟括号

函数>赋予值=触发
a
<函数
$函数 赋予值 触发$
函数>赋予值
a
<函数
$函数 赋予值$
调用
函数>赋予值
$延迟 [1000*5]$
$打印 结束$
<函数
$打印 开始$
$异步函数 赋予值$
循环框

更方便的循环
可以使用>终止
也能修改当前循环次数i:1

循环>i=9
%i%
<循环

留空死循环为32767次

循环>i
%i%
<循环

遍历JSON无法修改当前循环次数
但是可以使用>终止

循环>i,ii=["a","b"]
%i%=%ii%
<循环

可以用在循环框中退出循环

循环>i=5
%i%
如果:%i%>2
结束
>终止
<循环

循环中支持

>跳过
>终止循环
>终止
整合包

这个相当于面对象功能,后续打算支持New到局部变量中。


整合包=>我的包

[函数]设置变量 .*
$%自己 变量 %参数1%$

[函数]读取变量
$%自己 变量$

<=整合包

Main
// 执行整合包函数
$.我的包 设置变量 成功$
$.我的包 读取变量$
// 整合包中获取变量
$%我的包 变量$
编译框

n文件可以用于词行换行

Main
<?n

a

b

c
?>

wn文件用于执行词库

<h1>
<?n
%版本%
?>
</h1>
加密词库

返回true/false

$加密词库 private/dic.n$

生成出来的词库会在当前程序的encode文件夹中

大小写字母
$大写字母 a$
$小写字母 A$
读取数据

用于读取文件全部文本

$读文件 database/a.txt 默认值$

读是在一个文件储存多个数据的方法
只会写入到database文件夹下

$读 路径 键 默认值$

可以获取json列表

$读 文件路径$
写入数据

用于完全写入文本数据

$写文件 database/a.txt 数据$

写是在一个文件储存多个数据的方法
只会写入到database文件夹下

$写 路径 键 数据$
回调

内部可以放在触发下

支持缩写[L]

$回调 试试$

[内部]试试
成功
赋予值

都支持多字符赋予值文本

:$: 执行函数
: 支持多字符
+: 拼接跟加值
-: 减少数值
:: 绝对文本
:%: 只读取变量

特殊功能

示例

a:{"a":"b"}->a
%a%

示例

a:{"a":"b"}!->A
%a%

示例

a:false?:错误
%a%

套娃函数

:($):

示例

a:($):$读 b a $读 b a ok;;$写 a a 成功;$读 a a $读 a a ok;;
%a%

简便文本框配合编译框使用

Main
<?n
这是文本:"""
cxk
cxk


cxk
找到cxk


然后cxk
"""
?>
%这是文本%

用于框选词库换行的

<?n
?>
变量

读取变量

a:你好
%a%

取反变量

a:false
%!a%

快捷获取URL编码数据

a:文本
%URL_a%
注释
// 注释
/*
多行注释
*/

注释执行他跟赋予值一样
但是他不会产生任何数据

#:执行
主机信息

Android无法使用,需要另外方法获取。

$主机 CPU$
$主机 CPU信息$
$主机 内存$
$主机 磁盘$
$主机 网络$
数字格式化

默认f可填b/e/E/f/g/G

$数字格式化 1.1201 2 f$
Js

,来分割参数 从参数0开始 a,b,c

a:注入文本
Js>返回赋予值=%a%,b
参数0+参数1
<Js
%返回赋予值%
Lua

,来分割参数 a,b,c

a:注入文本
Lua>返回赋予值=%a%,b
function main(txt,txt2)
return txt..txt2
end
<Lua
%返回赋予值%
MYSQL

后续考虑支持多线程,如有特殊需求请及时反馈。

// ()括号可以移除默认本地
$MYSQL连接 user:pass@(localhost:1234)/dbname$
$MYSQL查询 [值]$
$MYSQL执行 [值]$
// 记得随手关闭
$MYSQL断开$
时间
%时间戳%
%毫秒时间戳%
%纳秒时间戳%
%时间yyyy%
函数

支持缩写[F]

a:b
$ok$
$z%b%$
// 只有这个可以运行
$z%a%$


[函数]ok
b

// 可以指定读取变量

[函数]z%a%
%参数0%

变量传出写法

Main
$测试 ->成功$
%a%
%b%
%c%
$函数 动态函数$

[F]测试 ->.*->a,b,c,动态函数
a:1
b:2
c:3
函数>动态函数
4
<函数
%参数1%
!
随机数
%随机数1-100%
$随机数 1 100$
特殊符号
编号 符号
0 $
1 %
2 :
3 空格
4 \t
5 \n
6 ;
7 [
8 ]
9 _

可以让你在函数中,不用写多余赋予值,然后用变量传入。

日志
// 成功
$日志 内容$
$日志 内容 成功$
// 失败
$日志 内容 失败$
ZIP
$ZIP 压缩 database/文件夹 database/a.zip$
$ZIP 解压 database/a.zip database/文件夹$
文件大小
$文件大小 database/file.txt$
文件夹大小
$文件夹大小 database$
捕获
// 获取准备输出的内容
$捕获输出$
// 清空准备输出的内容并返回
$拦截输出$
计算

谁天生是数学天才?
支持运算符号

加 +
减 -
乘 *
除 /
[2*(1+1)]
$计算 1 加 1$
$计算 1 + 1$
$计算 1 减 1$
$计算 1 - 1$
$计算 1 乘 1$
$计算 1 * 1$
$计算 1 除 1$
$计算 1 / 1$
$计算 1 除余 1$
$计算 1 % 1$
$计算 1 按位或 1$
$计算 1 | 1$
$计算 1 << 1$
$计算 1 左移 1$
$计算 1 >> 1$
$计算 1 右移 1$
$计算 1 根号 1$// 平方根
$计算 1 sqrt 1$
$计算 1 四舍五入 1$
启动服务器

可以让词库开启局域网服务
会返回启动的链接
都是异步启动支持启动多个

目录可留空
目录是用于多个项目分类启动的

$启动服务器 localhost:8080$
$启动服务器 localhost:8080 目录$
启动后数据
$全局变量 访问数据$

GET返回示例

{
    "路径":"/api.n",
    "来源":"GET",
    "请求头":{"Accept-Encoding":["gzip"],"User-Agent":["Nebula-Client/1.0"]},
    "IP":"127.0.0.1",
    "Host":"127.0.0.1:8080"
}

有GET参数时候会出现

{
    "GET":{"a":["a"]}
}

POST返回示例

{
    "路径":"/api.n",
    "来源":"POST",
    "请求头":{"Accept-Encoding":["gzip"],"User-Agent":["Nebula-Client/1.0"]},
    "IP":"127.0.0.1",
    "Host":"127.0.0.1:8080"
}

有POST参数时候会出现

{
    "POST":{"a":["a"]}
}

有POST文件时候出现

名称 说明
file 表单
name 文件名
size 大小
data 数据

data文件内容为了避免乱码数据出错采用了Base64编码,需要自己解码。

{
    "POSTFile":{"file":[{"name":"a.txt","size":1,"data":"YQ=="}]}
}
WebSocket
WebSocket::true
$启动服务器 localhost:8080$
// 在被动WS中使用
$WS返回 内容$
// 记录后可以通过发送控制
$WS记录 命名$
输出类型

在启动服务器后被访问的词库提供输出类型的方法

$全局变量 输出类型 text$
输出头部

设置后会在输出时候进行

$全局变量 输出头部 {"Location":"https://cjxpj.com"}$

设置后会在输出时候进行
禁用JS》默认false,禁用后无法让JavaScript读取,仅限在域名访问中传输。
存活》默认0,秒为单位。

a:"""
[
    {
        "命名": "id",
        "数据": "123456",
        "路径": "/",
        "禁止JS": false,
        "存活": 3600,
    }
]
"""
$全局变量 COOKIE %a%$

目录结构

连接成功

private/websocket/connect.n 返回消息会打印到日志

消息接收

private/websocket/msg.n 返回消息时候会自动发送一次WS

断开连接

private/websocket/close.n 返回消息会打印到日志 触发Main|Error

WS

WS连接配合异步使用

函数>函数框变量名
$打印 触发:%触发词%$
<函数
$WS连接 命名 ws链接 函数框变量名$
%报错%
$WS发送 命名 文本$
$WS连接断开 命名$
启动服务器挂载到内网穿透

仅限启动一个

$Ngrok token$
$Ngrok token 目录$

示例,这是我提供的免费渠道名额有限,当然你可以选择自己去Ngrok官方注册后填入你的token进行使用。

$Ngrok$
%报错%

会返回链接

中文转拼音

可以获取多音字,数字代表声调。

$中文转拼音 了$

返回示例

[["le","lia3o","lia4o"]]
文件后缀

他可以从文件路径中取出最后的文件后缀

$文件后缀 a/a.txt$
访问

header可以留空

$访问 url header$
$访问POST url data header$
通信

先记录后操作

$通信记录 URL$
$通信GET$
$通信POST data$
$通信POST文件 form name data$
$通信POST文件 name data$
$通信头部 json/string$
$通信发包$
// 这是获取全部信息,包括准备发送的数据都在内。
$通信取出$
// 这是只获取结果
$通信取出结果$

上传文件
form是表单name文件名字data是数据

$通信POST文件 form name data$

直接填名字默认表单跟文件都为同一个名字

$通信POST文件 name data$
函数列表
$函数列表$
随机文本

随机一个字符返回

$随机文本 abc$

随机一个文本组返回

$随机文本 , a,b,c$
绘图

字体在内部文件夹的字体文件夹内
一个绘图函数中仅支持一个创建

需求 参数 所需
创建 1/2 img:Base64|x/y
二维码 1 string
颜色 3/4 R/G/B/A
画字 1/3 string/x/y
字体 1 file
大小 1 string:int
伽马值 1 string:int
模糊 1 string:int
锐化 1 string:int
对比度 1 string:int
亮度 1 string:int
饱和度 1 string:int
画圆 2 x/y
画方 4 x/y/w宽/h高
画线 4 x0/y0/x1/y1
画虚线 6 x0/y0/x1/y1/l长/s间隔
贴图 3/5/6 img:Base64/x/y/w宽/h高/0.1~1透明度
插图 1/2 times/img:Base64
输出 1 gif/png/jpg/jpeg/信息
重构需求 参数 所需
圆形 0/1 size
圆角矩形 2/4 x/y/dx/dy
旋转 0/1 rotate0~360
重构json示例结构
{
    "需求": "重构",
    "参数": ["旋转","180"]
}
示例仅供参考
$全局变量 输出类型 image/png$
文本>画=
[
    {
        "需求": "颜色",
        "参数": ["255","255","255","255"]
    },
    {
        "需求": "创建",
        "参数": ["380","520"]
    },
    {
        "需求": "颜色",
        "参数": ["0","0","0","255"]
    },
    {
        "需求": "大小",
        "参数": ["25"]
    },
    {
        "需求": "画字",
        "参数": ["酒乐文游","135","80"]
    },
    {
        "需求": "颜色",
        "参数": ["255","0","0","128"]
    },
    {
        "需求": "画方",
        "参数": ["200","200","250","250"]
    },
    {
        "需求": "输出",
        "参数": ["png"]
    }
]
<文本
$绘图 %画%$
GIF拆帧
a:$读文件 database/test.gif$
$GIF拆帧 %a%$

数据Base64编码了

[
    "xxx",
    "xxx"
]
变量控制

全局变量就是在回调时候还在的变量
不是全局的在执行完毕后就没了

$线程变量 键 值$
$全局变量 键 值$
$变量 键 值$

这个返回a因为键被锁了

键:a
$锁变量 键$
键:b
%键%

特殊变量功能,在每次读取会生成1开始数值往上的唯一数值,相当于自增。

$线程变量 _UID_$
$全局变量 _UID_$
$变量 _UID_$

示例

20个唯一uid
循环>i=20
,$线程变量 _UID_$
<循环
判断值和空值
判断
null
nil
{}
[]
false
NaN
undefined
留空

判断到空返回true

// 返回bool类型数据
$判断空值 null$

没判断到空返回true

$判断值 null$
跳行

是在词条局部内跳行
支持读取变量

>跳行+1
>跳行-1
字符切片
// 返回[]json
$字符切片 内容$
判断

可以用英语缩写
如果尾是不会终止往下执行的

中文 英文
如果 if
如果尾 end
返回如果尾 else
返回如果

支持两个方法

a:2
如果:a==0
yes
否则如果:a==1
no
elif:a==2
Good
否则
error
支持逻辑
和 &
或 |
支持判断
大于等于 >=
大于 >
小于等于 <=
小于 <
等于 ==
不等于 !=
混合判断 ()
长度判断 !
数组是否存在字符 in
不等于正则 ~
正则 ~=
如果:\d+~=123
成功
否则
失败

返回:成功

如果:\d+~123
成功
否则
失败

返回:失败

如果:["a"] in a
成功
否则
失败

返回:成功

如果:aaa!bbb
成功
否则
失败

返回:成功

如果:a==a|(a==a&a==a)
ok
如果尾
如果:false
a
返回
如果尾
b

返回:okb

判断框
如果>a==a
ok
>否则
no
<如果

支持套娃判断

如果>a==b
    ok
>否则如果:a==a
    如果>a==a
        ok
    >否则
        no
    <如果
<如果

支持两种判断内方法

>跳过
>终止
终止程序

结束程序并且把准备输出内容打印到日志

$STOP$
替换
需求 内容 替换 成为 次数
替换 11234 1 2 1

返回21234 次数留空为替换全部

$替换 替换内容 需要替换 替换后$

特殊用法

函数>a
如果:%触发词%==2
停止
否则
%触发词%
<函数
$替换 AAA A %a%$
正则替换
$正则替换 文本 正则 替换后$

特殊用法

函数>a=1
>%触发词%<
<函数
$正则替换 A1A123A \d+ %a%$
下载文件
需求 目录
下载文件 database
$下载文件 url a.txt$
删除文件
需求 目录
删除文件 database
$删除文件 database/a.txt$
删除文件夹
$删除文件夹 database/缓存$
回调词库

异步词库可以配合延迟做调用

$执行词库 词库文本 触发 独立/继承/继承函数/互通$
$执行网页词库 词库文本$

独立 默认此方法,可以留空。

[指定执行]不会拥有局部[变量]和[函数]

继承

[指定执行]的词库会继承[变量]和[函数]

继承函数

[指定执行]的词库会继承[函数]

互通

会继承[函数]
互通[变量]
[指定执行]完的词库中变量可以影响到[执行]
SMTP邮件
$邮件 链接 端口 账号 密码 目标账号 发送头部$

发送QQ邮箱样板

文本>发送=%val5%
Subject:标题
From:小啤酒 <2960965389@qq.com>
成功
<文本
$邮件 smtp.qq.com 587 2960965389@qq.com xxxxx 2960965389@qq.com %发送%$
去除多余符号
$去除左右 文本 符号$
$去除左 文本 符号$
$去除右 文本 符号$
AES

key范围 16/24/32

$AES加密 CBC/CFB key 内容$
$AES解密 CBC/CFB key 内容$
MD5编码
$MD5编码 内容$
basc64
$B64编码 内容$
$B64解码 内容$
url

URL链接编码就是自动识别get参数自动编码
不会影响到链接
URL编码是完全编码

$URL编码 内容$
$URL解码 内容$
$URL链接编码 url$
$URL链接解码 url$
存在文件判断
$存在文件 database/a.txt$
存在文件夹判断
$存在文件夹 database$

返回true或者false

文件列表

文件夹留空为站点目录

$文件列表 文件 database$
$文件列表 文件夹 database$
$文件列表 全部 database$

示例

$文件列表 文件夹$

返回

["database","private","public"]
JSON

不会返回数据
记录不是json会报错
配合判断用

$JSON记录 {}$
$JSON取 [键]$
// 存可以改成存字只存文本数据
$JSON存 [键] [值]$
$JSON存字 [键] [值]$
// 可以直接通过多层键设置值
$JSON存 [值] [键] [键]$
// 这是给元素追加用的
$JSON追加 [值]$
$JSON存在 [键]$
$JSON删 [键]$

快捷方法

$JSON追加 [] [值]$
有数据数据函数
需求 返回
解析 string
判断 true/false
长度 int
取出 json/[]json/string
// 快捷解析支持->批量解析
$JSON解析 {} 键->键$
$JSON判断 {}$
$JSON长度$
$JSON取出$

快捷方法

$JSON长度 {}$
JSON美化

1代表缩进空格数量,默认就是1可以留空。

$JSON美化 {}$
$JSON美化 {} 1$
长度

文本长度是单字符算作1单位

$文本长度 内容$
$长度 内容$
正则

正则匹配内容返回json

$正则 正则 内容$

正则匹配只会返回true/false

$正则匹配 正则 内容$
截取
$截取 abcd 1 2$
取中间
$取中间 abcd a c$
字符定位

没有找到会返回-1

$查找字 内容 查找内容$
延迟

毫秒单位

// 一秒延迟示例
$延迟 [1000*1]$
HTML编码
$HTML编码 内容$
$HTML解码 内容$
HTML解析
a:"""
<!DOCTYPE html>
<html>
    <head>
        <title>标题</title>
    </head>
    <body>
        <h1>文本</h1>
        <p>文本2</p>
    </body>
</html>
"""
$HTML解析 %a% html head title$
MD转HTML

把MD文本转为HTML显示

$MD转HTML 内容$
系统

值留空为读取

$系统 键 值$
引入

可以让内部跟函数

private/dic/a.n

[函数]a
成功

运行的词库
#引入=dic,a
$a$
插入词条

可以让文本直接插入执行

private/dic/a.n
ok

[内部]a
成功
运行的词库
[插入=dic/a.n]
$回调 a$
终止

这里只会输出一个a

a
>终止
a
分割
$分割 , a,b,c$

分割范围

$分割 , a,b,c 2$
时间戳格式化时间
$时间戳格式化时间 %时间戳% s秒$
终端

执行成功报错返回null

$终端 python test.py$
%报错%

会卡死线程等待输入后执行

$打印 等待输入$
a:$终端等待输入$
$打印 内容%a%$
内容%a%
DLL

跟程序在同一个目录进行加载

$加载动态库 命名 test.dll$

回调dll的函数func字符串传参a,b,c

$回调动态库 命名 func a b c$
排序

true/false代表正反排序

$排序 键 数据 true/false$

使用示例

文本>z=
[
{"data":"100","key":"啤酒"},
{"data":"500","key":"兄弟"},
{"data":"500","key":"兄弟"},
{"data":"50","key":"你好香"}
]
<文本
$排序 data %z% true$
重命名移动

返回true/false 成功返回true

$重命名 database database2$
复制粘贴

返回true/false 成功返回true

$复制粘贴 database database2$
编码解码
支持编码
GBK
二进制
十六进制
HZGB2312
GB18030
ASCII
ISO-8859-1
$编码 二进制 你好$
$解码 二进制 111001001011110110100000111001011010010110111101$

Directories

Path Synopsis
Package log 是 SDK 的 logger 接口定义与内置的 logger。
Package log 是 SDK 的 logger 接口定义与内置的 logger。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL