## 1.woo常用函数列表【区分系统级函数】
*ps:woo支持部分lua常用函数,woo函数都是下划线开始*
### table扩展函数:
table.slice({1,2,3,4,5,6},1,3)={2,3}
### *.)多功能函数
>1._del(del_mode,res,...params)
高级元素删除函数
DEL_MODE:
woo.DEL_NORMAL='n' 表示正常的删除逻辑
woo.DEL_FROM='f' 表示从索引处开始删除
woo.DEL_TO='t' 表示删除到索引处
woo.DEL_REPEAT='r' 表示删除重复的元素仅仅保留一次
```
:C
_out(_del(woo.DEL_NORMAL,'12345',5,3,1)) --'24' -- 大索引在前
_out(_del(woo.DEL_NORMAL,{1,2,3,4,5,6,7,8,9,item1=1,item2=2},9,6,2,'item1') ) --{1,3,4,5,7,8,item2=2}
_out(_del(woo.DEL_FROM,{1,2,3,4,5,6},3) ) -- {1,2}
_out(_del(woo.DEL_FROM,'12345',3) ) -- '12'
_out(_del(woo.DEL_TO,'12345',3) ) -- '45'
_out(_del(woo.DEL_TO,{1,2,3,4,5,6},3) ) -- {4,5,6}
_out(_del(woo.DEL_FROM_tO,'12345',2,3) ) -- '145'
_out(_del(woo.DEL_FROM_tO,{1,2,3,4,5,6},2,3) ) -- {1,4,5,6}
_out(_del(woo.DEL_REPEAT,'12334455')) --'12345' -- 仅支持字符串
:R
```
>2._sub_ex(del_mode,res,...params)
高级分割,支持数组table
SUBEX_MODE:
woo.SUBEX_N='n' 表示正常截取 normal
woo.SUBEX_NE='ne' 表示正常截取到结尾 normal-end
woo.SUBEX_R='r' 表示反转 reverse
woo.SUBEX_RE='re' 表示反转 reverse-end
```
:C
print('文本测试截取:', _sub_ex('n', '1/2/3/4/5/6', '/')) -- 1
print('文本测试截取:', _sub_ex('ne', '1/2/3/4/5/6', '/')) -- 1/2/3/4/5
print('文本测试截取:', _sub_ex('r', '1/2/3/4/5/6', '/')) -- 6
print('文本测试截取:', _sub_ex('re', '1/2/3/4/5/6', '/')) -- 2/3/4/5/6
print('文本测试截取:', _sub_ex('n', '123456789', 3)) -- 123
print('文本测试截取:', _sub_ex('ne', '123456789', 3)) -- 123456
print('文本测试截取:', _sub_ex('r', '123456789', 3)) -- 789
print('文本测试截取:', _sub_ex('re', '123456789', 3)) -- 456789
:R
```
>3.其他常用函数
ps:下方的表格出问题了,他们的表格有bug,后续会推出woo语言开发的文档网站
| 函数名称 | 参数| 作用 |
| --- | --- |--- |
|_foreach() | (p1,p2=function(k,v)end) | 循环迭代:</br>p1为数组table时key,val循环迭代到p2函数中</br>p1数值时p2函数将被回调p1次</br>p1为字符串时,p2函数中迭代每个字符|
|_chan_put() | (is_parent,val) |保存全局数据,会阻塞当前线程 |
|_chan_get() | (is_parent) |获取全局数据,会阻塞当前线程|
|_lock() | (key,function()) |线程锁,_lock('lock_key',function() end) ,key为空,则清空所有锁|
## 第一部分:
| 函数名称 | 参数| 作用 |
| --- | --- |--- |
|_log() | _log(...) |打印日志信息到日志文件,http模式可用,log(1,'123',{'12','23'}) |
|_home() | | 获取用户home目录一般都是 ~/ |
|_cp() | (from , to) | 复制一个文件或文件夹_cp('a.txt','b.txt'),此处致敬linux命令cp |
|_rm() | (file_path) | 删除文件,此处致敬linux命令rm |
|_sleep() | (mill_second) | 延迟执行,延迟多少毫秒后继续执行 |
|_mv() | (from,to) | 移动文件,致敬linux命令mv |
|_mkdir() | _mkdir(path) | 新建目录 |
|_rand()|_rand(seed=number\|nil)|取随机数,介于0-1之间,seed可以设置种子|
| _zip|_zip('zip\|unzip\|view','./folder','a.zip')|压缩/解压缩/查看压缩包内容,支持rar zip tar xz ...|
|_out() | (val1,val2,val3,...) | 输出数据到网页(如果是http模式,否则输出到控制台)|
|_base64_encode() | | base64加密|
|_base64_decode() | | base64解密|
|_file_save() | _file_save(path,'this is file content.') | 写到文件|
|_cat() | _cat(file_path,is_read_bin) | 致敬linux命令cat,从文件读入,is_read_bin==true表示读入文本,不填 读入字节集|
|_md5() | | md5加密 |
|_file_md5() | | 文件md5 |
|_sha() | (string,256\|512\|nil) | shal 了解的人自然了解,参数#2不传为sha1的值 |
|_crc32() | | crc32 了解的人自然了解 |
|_file_size() | | 文件尺寸|
|_file_name() | | 文件名称 |
|_file_exist() | | 文件是否存在 |
|_choose() | (true\|int) | 多项选择:_choose(1>2,'123','321')=='321'<br/>_choose(2,'123','321')=='321'|
|_time() | | 获取时间戳:_time() |
|_date() | | 获取日期:date("Y-m-d H:i:s"),date("Y-m-d H:i:s", strtotime('2019-01-08 13:50:30'))|
|_str_time() | | 字符串到时间(此致敬php了) |
|_ord() | | assiic 到字符 |
|_chr() | |字符到assiic |
|_ascii() | | 字符到assiic |
|_bytes() | | 字符串到字节集:_str_byte('abc'),结果:{56,57,58} |
|_str() | | 字节集到字符串,_bytes({56,57,58})=='abc' |
|_char_at() | | 返回字符串某个位置id字符:_char_at('123',2)==2 |
|_urlencode() | | url加密|
|_urldecode() | | url解密|
|_file_sha() | | 文件sha加密:_file_sha('rain.mp3',nil or '128' or '256' or '512')|
|_join() | | 字符串拼接 |
|_json_encode() | | json编码|
|_json_decode() | | json解析|
|_str_sub() | | 字符串分割|
|_str_split() | | 分割函数,_str_split('1.2.f.123.','.')=={'1','2','f','123',''}|
|_str_index() | | 同 _str_pos |
|_str_rindex() | | 同 _str_rpos|
|_begin_with() | | 是否以某个字符串开始?|
|_end_with() | | 是否以某个字符串结尾|
|_stack() | | 打印栈|
|_str_rev() | | 字符串翻转|
|_str_count() | | 字符串个数,建议使用 _len()函数替代|
|_rtrim() | | 删除右边字符,默认删除空格,_rtrim('1234','34')=='12', _rtrim('1 ')=='1' |
|_ltrim() | | 删除左边字符,默认删除空格,_rtrim('1123','1')=='23', _rtrim(' 1 ')=='1' |
|_trim() | | 删除左右两边字符,默认删除空格,_rtrim('23123','1')=='1', _rtrim(' 1 ')=='1' |
|_str_upper() | | 到大写 |
|_str_lower() | | 到小写|
|_str_replace() | | 字符串替换,_str_replace('123123123','2','')=='131313' |
|_format() | (str,....) | 格式化字符串print(_format('%s%x','aaa','123'))|
## 第二部分:
| 函数名称 | 参数| 作用 |
| --- | --- |--- |
|_str_repeat() | ('a',n) | 重复字符a,n次|
| 函数名称 | 参数| 作用 |
|_str_replace_re() | | 字符串正则替换 _str_replace_re('12222.3,322.1','(2*?)\\.','(${1}-)')=='1(2222-)3,(322-)1' |
|_re_match() | (str string,rule string) | 正则匹配 |
|_readline() | (show_text string,is_password_input bool) | 从命令行标准输入读取一行 |
|_exec() | (params={},isAsync=true\|false) | 执行cmd/shell命令:_exec({'cmd','/c','echo 1'},async=true\|false\|function(handler){}) async如果是true表示异步执行,不等待,否则默认同步执行,等待且返回执行结果,如果是函数,则handler可以读写|
|_in_array() | | _in_array(0,{0,9,8}) ==true |
|_data_put() | (key string,value any) | 设置全局变量|
|_data_get() | (key) | 获取全局变量|
|_ls() | (folder_dir string ,func function(is_folder,folder_name),not_get_sub_file) | 递归获取目录中所有文件,not_get_sub_file表示是否遍历子文件夹 |
|_to() | (num,to,is_any_to_ten) | 10进制到任意进制,如122到64进制:_to(122,64),任意进制到10进制,如122转64再转10进制:_to(_to(122,64),64|
|_args() | | 取启动参数:_args()返回数组,里面是woo启动参数例如命令行:```cw 1.lua start ```, 返回table:{start}|
|_is_valid() | (...) | 判断参数是由有效(支持多参数:0,false,空字符串,空数组,nil返回false):```_is_valid('a','2',true ,{1}) ```|
|_async() | (func,...) | 启动线程 |
|_run() | | 开启一个线程来执行脚本,_run('exp.woo','params1','params2)|
|_send_mail() | |不做成内置,可以做成扩展包,做好的的同学请联系 |
|_yml() | _yml(path) | 解析yaml文件返回数组table , 获取woo启动的默认yaml文件数组,cli模式没有,http 可用 |
|_is_cli() | | 是否cli模式运行 |
|_env() | | 获取环境变量|
|_escape() | | 对字符串去除敏感,常用于mysql等数据库 |
|_merge() | | 合并数组table,_merge({ 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, 10, 11, 12, "13" )|
|_len() | | 数组table长度 |
|_uuid() | | 获取唯一uuid |
|_dir() | (true\|dir\|nil) | 1.参数nil或空 返回woo执行文件目录<br/>2.参数为/user/local 返回/usr<br/>3.参数为true返回woo执行文件目录加文件名<br/>用例:[oshine/6](http://coder.passer.top/code/oshine/6)
|
|_wget() | (savename,url,opt,callback) | 下载文件<br/>savename保存文件名<br/>url下载地址<br/>opt:参数:{cookie={delPer="10",...},header={key="value",...}}}<br/>callback 回调函数:function(current,total)<br/>例:_wget('r.html','http://www.baidu.com') |
|_pwd() | | 获取当前cmd执行路径 |
|_os (isGetArch) | (true\|nil) | 获取当前系统,<br/>【isGetArch=nil或空】:widnows,drawin linux,<br/>【isGetArch=true】:linux/amd64,windows/amd64,darwin/amd64,... |
|_temp () | | 当前系统缓存目录,linux一般是:/temp |
|_copy| | io复制,可以复制具有读写方法的类|
>4.特殊函数详解:
颜色文本输出函数:_color()
~~~woo
;;;
local str = "hello world"
_color('pre', str, 'red')
_color('pre', str, 'green')
_color('pre', str, 'cyan')
_color('pre', str, 'yellow')
_color('pre', "font color with back color", 'yellow', 'white')
_color('info', "info message")
_color('warn', 'warn message')
_color('error', 'error message')
_color('diy', "<suc>he</><comment>llo</>, <cyan>wel</><red>come</>\n")
_color('diy', "<fg=11aa23>he</><bg=120,35,156>llo</>, <fg=167;bg=232>wel</><fg=red>come</>")
;;;
~~~
![](https://img.kancloud.cn/aa/5f/aa5fc80ad8dc7342b71d8c0e073e6f56_226x221.png)
- 序言
- 安装
- 可视化编辑器
- woo 命令行参数详解
- 测试用例
- 简单http服务
- 正则
- gpio控制硬件设备
- 比武不招亲
- 和php比WebServer
- woo语法
- 语法简介
- 基本语法
- woo数据类型
- woo变量
- woo循环
- woo流程控制
- woo函数
- woo运算符
- woo字符串
- 类
- 类的继承
- 模块
- 数组
- 迭代
- table
- 元表(魔术方法)
- 错误处理
- 面向对象
- woo开发必须注意事项
- 函数/模块
- 内置函数
- webServer专属函数
- 内置模块
- gd-2d绘图库
- 2D图形例子
- websockets用例
- buffer缓存
- http
- orm数据库连接
- redis-ssdb连接
- queue队列
- 其他特别函数
- sockets
- 启动线程如何
- Murphy-http Web框架
- 简介
- 全局函数
- model
- view
- controller
- 消息队列
- 全局线程锁
- 包管理器/coder wooyri package manager
- 最ok的包上榜名单
- woo栗子
- 函数传参
- 编码解码
- http模块用例
- 移动读写文件流用例
- 文件下载用例
- 数组迭代
- 进制转换
- _choose用例
- 日期时间用例
- 注明
- wop 码包|coder wooyri peogram
- 码人激励计划