Richang.js
// ___ ___ ___ ___ ___ ___// /\ \ /\__\ /\ \ /\ \ /\ \ /\__\// /::\ \ ___ /:/ / \:\ \ /::\ \ \:\ \ /:/ _/_// /:/\:\__\ /\__\ /:/ / \:\ \ /:/\:\ \ \:\ \ /:/ /\ \// /:/ /:/ / /:/__/ /:/ / ___ ___ /::\ \ /:/ /::\ \ _____\:\ \ /:/ /::\ \// /:/_/:/__/___ /::\ \ /:/__/ /\__\ /\ /:/\:\__\ /:/_/:/\:\__\ /::::::::\__\ /:/__\/\:\__\// \:\/:::::/ / \/\:\ \__ \:\ \ /:/ / \:\/:/ \/__/ \:\/:/ \/__/ \:\~~\~~\/__/ \:\ \ /:/ /// \::/~~/~~~~ ~~\:\/\__\ \:\ /:/ / \::/__/ \::/__/ \:\ \ \:\ /:/ /// \:\~~\ \::/ / \:\/:/ / \:\ \ \:\ \ \:\ \ \:\/:/ /// \:\__\ /:/ / \::/ / \:\__\ \:\__\ \:\__\ \::/ /// \/__/ \/__/ \/__/ \/__/ \/__/ \/__/ \/__/////// 日常// +-------------------+// | Richang JSEX |// +-------------------+
Install
npm i -S richang.js
不使用 Node 相关模块
// ES6 modules // Node.js (CJS) modulesvar Richang = // 载入纯 ES6 modules // 捆绑了所有 node_modules 依赖
使用 Node 相关模块
// 依赖在 node_modules 中var Richang = // 捆绑了所有 node_modules 依赖(bable 目标 Node 1.2 的模块, transform-runtime)var Richang = // 如果项目没有使用 babel, 可能需要单独使用 babel-polyfillvar Richang =
如果遇到
ReferenceError: regeneratorRuntime is not defined
,需要安装npm i -S babel-polyfill
,并且在引入Richang.js
前先引入babel-polyfill
Members
- Time :
Object
时间日期操作相关模块
- byteToHex
Convert array of 16 byte values to UUID string format of the form: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
- Tool :
Object
通用工具相关模块
- NodeFile :
Object
文件操作相关模块
- NodeDebug :
Object
Node 调试相关模块
- NodeImage :
Object
Node 图片相关模块
- NodeTool :
Object
Node 通用工具
- ConsoleCON :
Object
控制台相关功能模块
- ObjectOBJ :
Object
对象操作相关操作
- StringSTR :
Object
字符串相关功能模块
- Rect :
Object
矩形处理相关模块
- TypeTYP :
Object
类型相关模块
- AarryArr :
Object
数组相关功能模块
- Calc :
Object
计算相关功能模块
- FileFIL :
Object
文件操作相关模块
- Cache :
Object
缓存相关
Object
Time : 时间日期操作相关模块
Kind: global variable
- Time :
Object
Time.genTimestamp([raw])
生成时间戳(当前时间的 32 进制)
Kind: static method of Time
Param | Type | Description |
---|---|---|
[raw] | Object |
获取原始格式,比如 1521602474428 |
Date
Time.parseTimestamp(timestamp) ⇒ 解析一个时间戳返回 date
Kind: static method of Time
Param |
---|
timestamp |
byteToHex
Convert array of 16 byte values to UUID string format of the form: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Object
Tool : 通用工具相关模块
Kind: global variable
- Tool :
Object
- .genUUID_v4() ⇒
string
- .genUUID_v5(name, [namespace]) ⇒
*
- .genSHA1(str) ⇒
*
- .formatUUID(str) ⇒
string
- .checkUUID(uuid) ⇒
number
- .roll(max, min)
- .rollString(length, [dict]) ⇒
string
- .genUUID_v4() ⇒
string
Tool.genUUID_v4() ⇒ 生成一个随机的 UUID
genUUID_v4() => 'f8061fba-842b-4cc5-9872-9348e2e06916'
Kind: static method of Tool
*
Tool.genUUID_v5(name, [namespace]) ⇒ 根据一个名字和命名空间生成一个 UUID,这个 UUID 与名称+命名空间有一一对应,不随机 (与标准不同,这里命名空间可不用 UUID 而是任何字符串,我们会用默认 UUID 和给命名空间生成一个 UUID)
genUUID_v5("Gasoft_Mobiusbug.exe","BGLL") => '2cb20c42-026f-5d56-b33f-008e354ac8d3'
Kind: static method of Tool
Param | Type | Description |
---|---|---|
name | string |
名称 |
[namespace] | string |
命名空间, |
*
Tool.genSHA1(str) ⇒ 用 sha1 生成一个字符串
genSHA1("nullice") => 51918a176c8e2b0af211a94c5478c58a54f239cd
Kind: static method of Tool
Param | Type |
---|---|
str | string |
string
Tool.formatUUID(str) ⇒ 把36位字符串转换成带横杠 UUID 的格式
formatUUID("e9411a6f1a2e22dd2244b78ee491c616") => "e9411a6f1a2e22dd2244b78ee491c616"
Kind: static method of Tool
Param | Type |
---|---|
str | string |
number
Tool.checkUUID(uuid) ⇒ 检查一个字符串是 UUID 的版本或者是否是 UUID,返回 UUID 的版本,如果为 0 则说明不是 UUID
Kind: static method of Tool
Param | Type | Description |
---|---|---|
uuid | string |
uuid |
Tool.roll(max, min)
生成一个随机整数
Kind: static method of Tool
Param | Type | Description |
---|---|---|
max | number |
最大值 |
min | number |
最小值 |
string
Tool.rollString(length, [dict]) ⇒ 生成一个随机字符串
Kind: static method of Tool
Param | Type | Description |
---|---|---|
length | number |
随机字符串长度 |
[dict] | string |
随机字符字典,默认为 a—Z0-9 |
Object
NodeFile : 文件操作相关模块
*
NodeFile.getTempDirManager(name) ⇒ 生成一个临时文件夹管理器,会在系统临时目录中创建一个指定名字的临时文件夹,和一个实例临时文件夹 可以用得到的 TempDirManager,申请临时文件名,和销毁临时文件夹
var tepmDM = getTempDirManager("siphonink") tepmDM.genTempFilePath(subDir) - 申请一个临时文件路径,可用提供一个子文件夹名 tepmDM.destroy() - 销毁临时目录 tepmDM.clear(day) - 清除 day 天前的实例临时文件夹
Kind: static method of NodeFile
Param |
---|
name |
Object
NodeDebug : Node 调试相关模块
Kind: global variable
- NodeDebug :
Object
- .logRed(text)
- .cRed(text) ⇒
string
|*
- .logBlue(text)
- .cBlue(text) ⇒
*
|string
- .logGreen(text)
- .cGreen(text) ⇒
string
|*
- .logGray(text)
- .cGray(text) ⇒
string
|*
- .logYellow(text)
- .cYellow(text) ⇒
string
|*
- .logLableRed(text)
- .logLableYellow(text)
- .logLableCyan(text)
- .logLableGreen(text)
- .logLableWhite(text)
NodeDebug.logRed(text)
在终端打出红色 log
Kind: static method of NodeDebug
Param |
---|
text |
string
| *
NodeDebug.cRed(text) ⇒ 把文本标记为红色
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logBlue(text)
在终端打出蓝色 log
Kind: static method of NodeDebug
Param |
---|
text |
*
| string
NodeDebug.cBlue(text) ⇒ 把文本标记为蓝色
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logGreen(text)
在终端打出绿色 log
Kind: static method of NodeDebug
Param |
---|
text |
string
| *
NodeDebug.cGreen(text) ⇒ 把文本标记为绿色
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logGray(text)
在终端打出灰色 log
Kind: static method of NodeDebug
Param |
---|
text |
string
| *
NodeDebug.cGray(text) ⇒ 把文本标记为灰色
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logYellow(text)
在终端打出黄色 log
Kind: static method of NodeDebug
Param |
---|
text |
string
| *
NodeDebug.cYellow(text) ⇒ 把文本标记为黄色
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logLableRed(text)
在终端打出红色标签 log
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logLableYellow(text)
在终端打出黄色标签 log
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logLableCyan(text)
在终端打出蓝绿色标签 log
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logLableGreen(text)
在终端打出绿色标签 log
Kind: static method of NodeDebug
Param |
---|
text |
NodeDebug.logLableWhite(text)
在终端打出白色色标签 log
Kind: static method of NodeDebug
Param |
---|
text |
Object
NodeImage : Node 图片相关模块
Kind: global variable
- NodeImage :
Object
NodeImage.ARGB_BufferToPngFileBuffer
Kind: static class of NodeImage
new ARGB_BufferToPngFileBuffer(argbBuffer, channelCount, wh)
把 ARGB 格式的像素 buffer 转化为可直接写入文件的 PNG buffer
Param | Type | Description |
---|---|---|
argbBuffer | buffer |
argb |
channelCount | number |
通道数量 1-4 |
wh | object |
高宽 {w, h} |
Promise.<Buffer>
NodeImage.getPngData ⇒ 获取 PNG 图片文件的像素数据 Buffer
Kind: static property of NodeImage
Param | Type | Description |
---|---|---|
data | buffer |
PNG 文件的 buffer |
Object
NodeTool : Node 通用工具
Kind: global variable
- NodeTool :
Object
- .getMD5(inData) ⇒
*
|PromiseLike.<ArrayBuffer>
- .getSHA256(inData) ⇒
*
|PromiseLike.<ArrayBuffer>
- .arrayBuffertoBuffer(arrayBuffer) ⇒
Buffer
- .getMD5(inData) ⇒
*
| PromiseLike.<ArrayBuffer>
NodeTool.getMD5(inData) ⇒ 获取数据的 MD5 值
getMD5("白色的空曲奇在发热") => 3b81233f69cc6dbf83899148b888f0db
Kind: static method of NodeTool
Param | Type | Description |
---|---|---|
inData | buffer | string |
输入的数据 |
*
| PromiseLike.<ArrayBuffer>
NodeTool.getSHA256(inData) ⇒ 获取数据的 getSHA256 值
getSHA256("白色的空曲奇在发热") => 5be124e39cb90f3144fba1a798ab3a8472c24a44c0f9efc305f76c1e34de848f
Kind: static method of NodeTool
Param | Type | Description |
---|---|---|
inData | buffer | string |
输入的数据 |
Buffer
NodeTool.arrayBuffertoBuffer(arrayBuffer) ⇒ ArrayBuffer to Buffer
Kind: static method of NodeTool
Param | Type |
---|---|
arrayBuffer | arrayBuffer |
Object
ConsoleCON : 控制台相关功能模块
ConsoleCON.CSS_POST
控制台颜色
用法: console.log("%c test", CSS_POST)
Kind: static property of ConsoleCON
Object
ObjectOBJ : 对象操作相关操作
Kind: global variable
- ObjectOBJ :
Object
- .isEmptyObject(obj) ⇒
boolean
- .objectCopyToObject(ob1, ob2, func_allowCopy, func_rename, func_valueFiter, func_for)
- .setObjectValueByNames(object, names, value)
- .deleteObjectValueByNames(object, names)
- .treeFind(objectArr, match, childrenKey, findAll, depthFirst) ⇒
array
|null
- .treeEach(objectArr, eachFunc, childrenKey, depthFirst) ⇒
Object
- .pathEach(object, eachFunc, [checkCycle])
- .isEmptyObject(obj) ⇒
boolean
ObjectOBJ.isEmptyObject(obj) ⇒ 对象是否为空
Kind: static method of ObjectOBJ
Param |
---|
obj |
ObjectOBJ.objectCopyToObject(ob1, ob2, func_allowCopy, func_rename, func_valueFiter, func_for)
复制对象。可控制要复制的属性,复制后的属性名,处理新属性值
Kind: static method of ObjectOBJ
Param | Description |
---|---|
ob1 | 源对象 |
ob2 | 目标对象 |
func_allowCopy | 判断是否允许复制的函数,返回真允许复制 func_allowCopy(属性名,属性值)。可空 |
func_rename | 重命名复制到目标对象上的属性名, 返回新属性名 func_rename(属性名,属性值)。可空 |
func_valueFiter | 处理复制到目标对象上的属性值,返回处理后的属性值 func_rename(属性名,属性值)。可空 |
func_for | 每次循环执行的函数 func_for(ob1,ob2,x)。可空 |
ObjectOBJ.setObjectValueByNames(object, names, value)
根据属性名路径列表(names)对对象属性赋值
Kind: static method of ObjectOBJ
Param | Description |
---|---|
object | 对象 |
names | 属性名路径列表,如 [position,enableAssigns,y] |
value | 值 |
ObjectOBJ.deleteObjectValueByNames(object, names)
根据属性名路径列表(names)对对象属性删除
Kind: static method of ObjectOBJ
Param | Description |
---|---|
object | 对象 |
names | 属性名路径列表,如 [position,enableAssigns,y] |
array
| null
ObjectOBJ.treeFind(objectArr, match, childrenKey, findAll, depthFirst) ⇒ 在由对象数组组成的树中查找对象。如果查找全部结果会以数组返回,否则直接返回找到的对象。
tree = [ {id: 1, children: [{id: 4}]}, {id: 2}, ] findTree (tree, 4, "children", false, false) => {id: 4}
Kind: static method of ObjectOBJ
Param | Type | Description |
---|---|---|
objectArr | Array.<object> |
对象数组组成的树 |
match | function |
匹配器 - 如果是字符串则是匹配对象下的 id 键,也可提供一个匹配函数,匹配函数通过参数接收遍历到的对象,返回是否匹配的 boolen (ob)={retrun ob.name=="xxx">} |
childrenKey | string |
子树键名 - 通过这个名字在对象中找子树 |
findAll | boolean |
是否查找全部 |
depthFirst | boolean |
深度优先 - 默认是广度优先 |
Object
ObjectOBJ.treeEach(objectArr, eachFunc, childrenKey, depthFirst) ⇒ 在由对象数组组成的树中遍历处理树的每个节点。
处理函数: eachFunc(单个对象, 遍历深度, 当层深度节点计数, 总节点计数, 当前子树, 当前子树位置) 在 eachFunc 中 return true 可以提前终止遍历。 当前子树[当前子树位置+1] 可获取下一个节点。 返回树的信息: { struct:[4,2,5], // 每层节点数 deep:3, // 树深度 total: 11 // 总节点数 }
Kind: static method of ObjectOBJ
Param | Type | Description |
---|---|---|
objectArr | Array.<object> |
对象数组组成的树 |
eachFunc | function |
处理函数 |
childrenKey | string |
子树键名 - 通过这个名字在对象中找子树 |
depthFirst | boolean |
深度优先 - 默认是广度优先 |
ObjectOBJ.pathEach(object, eachFunc, [checkCycle])
遍历对象每一个元素,可以获取对象键名组成的 path (["c","d","e"])
处理函数: eachFunc(当前元素, 当前 path, 当层深度 )
pathEach( { b:111, c:{d:{e:222}} })
Kind: static method of ObjectOBJ
Param | Type | Description |
---|---|---|
object | object |
|
eachFunc | function |
处理函数 |
[checkCycle] | boolean | function |
是否检查循环引用,为 true 会跳过循环引用,还可以提供一个函数 checkCycleCallback(target, path, cyclePath) 来处理一些事 |
Object
StringSTR : 字符串相关功能模块
Kind: global variable
- StringSTR :
Object
*
StringSTR.left(str, offset) ⇒ 取字符串左边 *依赖 stringSTR.right()
Kind: static method of StringSTR
Param | Type | Description |
---|---|---|
str | String |
原文 |
offset | Number |
偏移值 |
*
StringSTR.right(str, offset) ⇒ 取字符串右边。 *依赖 stringSTR.left()
Kind: static method of StringSTR
Param | Type | Description |
---|---|---|
str | String |
原文 |
offset | Number |
偏移值 |
*
StringSTR.insert(str, start, offset, inStr) ⇒ 插入文本到指定位置
Kind: static method of StringSTR
Param | Type | Description |
---|---|---|
str | String |
原文 |
start | Number |
开始位置 |
offset | Number |
偏移值 |
inStr | String |
要插入的文本 |
Object
Rect : 矩形处理相关模块
Kind: global variable
- Rect :
Object
- .rltb2xywh(boundsInfo) ⇒
Object
- .xywh2rltb(boundsInfo) ⇒
Object
- .paddingXywh(xywh, padding) ⇒
Object
- .getXywhsRange(xywhs) ⇒
Object
- .moveXywhs(xywhs, xy)
- .xywhHasCover(xywhA, xywhB) ⇒
boolean
- .rltb2xywh(boundsInfo) ⇒
Object
Rect.rltb2xywh(boundsInfo) ⇒ 坐标转换 把 {right, left, top, bottom} 转化为 {x, y , w, h}
Kind: static method of Rect
Param |
---|
boundsInfo |
Object
Rect.xywh2rltb(boundsInfo) ⇒ 坐标转换 把 {x, y , w, h} 转化为 {right, left, top, bottom}
Kind: static method of Rect
Param |
---|
boundsInfo |
Object
Rect.paddingXywh(xywh, padding) ⇒ 给 xywh 添加内边距
paddingXywh(xywh, 5) paddingXywh(xywh, [3,4,5,10])
Kind: static method of Rect
Param |
---|
xywh |
padding |
Object
Rect.getXywhsRange(xywhs) ⇒ 计算多个 xywh 矩形的边界
getXywhsRange([xywh])
Kind: static method of Rect
Param |
---|
xywhs |
Rect.moveXywhs(xywhs, xy)
整体移动多个 xywh 到某点,保留原 xywhs 相对位置。 会改变 xywhs 里每个 xywh 对象的 x,y 值。
Kind: static method of Rect
Param |
---|
xywhs |
xy |
boolean
Rect.xywhHasCover(xywhA, xywhB) ⇒ 2 个 xywh 是否有重叠
Kind: static method of Rect
Param |
---|
xywhA |
xywhB |
Object
TypeTYP : 类型相关模块
*
TypeTYP.getType(value) ⇒ 得到指定值的数据类型。返回数据类型名称字符串,如 "boolean","object","string" 。
Kind: static method of TypeTYP
Param |
---|
value |
Object
AarryArr : 数组相关功能模块
Kind: global variable
- AarryArr :
Object
- .symDifference(a, b) ⇒
Array
- .symDifference_ObjectArray(a, b, key) ⇒
Array
- .difference(a, b) ⇒
Array
- .union(a, b) ⇒
Array
- .intersection() ⇒
Array
- .remove(arr, removeRule, isMutator) ⇒
*
- .hasMember(arr, memberValue, equalFunc) ⇒
boolean
- .getByKey(objectArr, key, keyValue, equalRule) ⇒
*
- .deleteByKey(objectArr, key, keyValue, equalRule) ⇒
*
- .sortObjectArray(arr, key, bigFront)
- .symDifference(a, b) ⇒
Array
AarryArr.symDifference(a, b) ⇒ 对称差。(不支持对象数组)
a:[1,2,3] b:[1,2,4] a△b => [3,4]
Kind: static method of AarryArr
Param | Type |
---|---|
a | Array |
b | Array |
Array
AarryArr.symDifference_ObjectArray(a, b, key) ⇒ 对称差。对象数组。 a:[{key:1}, {key:2}] b:[{key:2}, {key:3}] a△b => [{key:1},{key:3}]
Kind: static method of AarryArr
Param | Description |
---|---|
a | |
b | |
key | 对象关键属性 |
Array
AarryArr.difference(a, b) ⇒ 差集。(不支持对象数组) a:[1,2,3] b:[1,2,4] a-b => [3]
Kind: static method of AarryArr
Param | Type |
---|---|
a | Array |
b | Array |
Array
AarryArr.union(a, b) ⇒ 并集。(不支持对象数组) a:[1,2,3] b:[1,2,4] a∪b => [1,2,3,4]
Kind: static method of AarryArr
Param | Type |
---|---|
a | Array |
b | Array |
Array
AarryArr.intersection() ⇒ 交集。(不支持对象数组) a:[1,2,3] b:[1,2,4] a∩b => [1,2]
Kind: static method of AarryArr
*
AarryArr.remove(arr, removeRule, isMutator) ⇒ 从数组中移除元素,默认是非变异的。
Kind: static method of AarryArr
Param | Type | Description |
---|---|---|
arr | Array |
|
removeRule | function |
可以给定值或者一个判断函数 function(x){ return x>3;} |
isMutator | Boolean |
变异模式,为真会改变原数组 |
boolean
AarryArr.hasMember(arr, memberValue, equalFunc) ⇒ 数组是否拥有指定成员 arr:["A","B","C"] => hasMember(arr, "C") => true
Kind: static method of AarryArr
Param | Type | Description |
---|---|---|
arr | Array |
|
memberValue | 指定成员值 | |
equalFunc | 比较函数,boolean equalFunc( arr[i], memberValue)。可空。 |
*
AarryArr.getByKey(objectArr, key, keyValue, equalRule) ⇒ 对象数组查找 从对象数组中提取出一个对象,根据对象的一个属性值。 arr: [{name:a},{name:b}] getByKey(arr,"name","b") => return {name:b}
Kind: static method of AarryArr
Param | Type | Description |
---|---|---|
objectArr | Array.<Object> |
对象数组 |
key | String |
关键属性 |
keyValue | 欲提取的关键属性值 | |
equalRule | 值比较函数,可空 |
*
AarryArr.deleteByKey(objectArr, key, keyValue, equalRule) ⇒ 对象数组删除 从对象数组中找到出一个对象元素,并删除这个元素。 arr: [{name:a},{name:b}] deleteByKey(arr,"name","b") => arr: [{name:a}]
Kind: static method of AarryArr
Param | Type | Description |
---|---|---|
objectArr | Array.<Object> |
对象数组 |
key | String |
关键属性 |
keyValue | 欲提取的关键属性值 | |
equalRule | 值比较函数,可空 |
AarryArr.sortObjectArray(arr, key, bigFront)
排序对象数组
Kind: static method of AarryArr
Param | Type | Description |
---|---|---|
arr | 数组 | |
key | a:12 |
对象排序的键值,如 [, {a:33}] , key 为 "a" 则以 a 排序 |
bigFront | 大值在前 |
Object
Calc : 计算相关功能模块
Object
FileFIL : 文件操作相关模块
*
FileFIL.filterFileName(name, fix) ⇒ 去除一个字符串中不符合成为文件名的字符
Kind: static method of FileFIL
Param | Description |
---|---|
name | |
fix | 非法字符替代 |
Object
Cache : 缓存相关
Kind: global variable