B5.函数列表
原创米波模板大约 3 分钟
B5.函数列表
函数的用法,详情参看【字典引擎引擎 map】的管道约定和函数规则。 函数全名和别名均以fun:
为前缀。在不冲突时,管道符内前缀可省略。
在示例说明中,描述函数时,存在以下约定,
obj
- 特指管道输出,没有时为nullarg...
- arg为可变参数。arg?
- arg可以null,&opt
- opt选项是默认值String:javaEval
- 返回类型String,函数类型是javaEval
可在模板中,进行以下形式的使用
{{ now }}
- 直接使用{{ index | mod even odd | BIG_SNAKE }}
- 管道符链接
B5.1.时间类型
以日期和时间为核心
1a.当前日时 now
类型用途:String:javaEval,输出指定格式的当前日期时间 用法说明:fun:now ptn?
- obj - 若是
java.util.Date
或TemporalAccessor
,则格式化 - 若是null或其他,则为
LocalDateTime.now()
- ptn - 为
DateTimeFormatter
格式, now
- 无参数,则为yyyy-MM-dd HH:mm:ss
now.date
- 无参数,输出yyyy-MM-dd
now.time
- 无参数 输出HH:mm:ss
# ptn含空格,用引号包围
{{ now 'yyyy-MM-dd HH:mm:ss' }}
# 输出 2021-01-05 10:01:31
// RNA:USE /date/fun:now/
B5.2.数值类型
以数值为核心,主要以Long和BigDecimal为核心
2a.取余 mod
类型用途:String:javaEval,以MOD(obj, args.length)作为索引(0-based),获得args中索引的值 用法说明:fun:mod obj arg... 返回类型:以取模值为key获取context的值或key字符串
- obj - 可转换为Number,取intValue,对arg.length取余
- Boolean, false=0, true=1
- Number, intValue
- Else, toString, BigDecimal
- arg - 必须有值,可为字符串或数字。
# index = 3; count = 4;
{{ index | mod even odd }}
{{ count | mod even "" }}
# 输出 odd even
2b.绝对值 abs
类型用途:String:javaEval,对数值取绝对值 用法说明:fun:abs obj 返回类型:Long或BigDecimal类型的绝对值
- obj - 可转换为Number,返回Long或BigDecimal
# npi = -3.14; count = 4;
{{ npi | abs }}
{{ count | abs }}
# 输出 3.14 4
B5.3.格式化 fmt
对象格式化为字符串形式
3a.全格式printf
类型用途:String:javaEval,调用String.printf格式化对象 用法说明:fun:fmt obj ptn 返回类型:字符串
- obj - 为任意对象
- ptn - 为java格式化,调用String.format(ptn,obj)
# amount = 1000
{{ amount | fmt '$%,d' }}
# 输出 $1,000
B5.4.字符串类型
以字符串为核心
4a.风格变换
类型用途:String:javaEval,对obj进行命名风格转换 用法说明:fun:### obj arg?,其中 ### 为以下函数名和别名 返回类型:字符串
- upperCase 全部大写,支持 locale 参数
- lowerCase 全部小写,支持 locale 参数
- dotCase 逗点分隔,可定制大小写,如 try.do.for
- kebabCase, kebab-case 减号分隔,可定制大小写,如 try-do-for
- bigKebab, BIG-KEBAB 减号分隔,全大写,如 TRY-DO-FOR
- camelCase 驼峰首字小写,如 tryDoFor
- pascalCase, PascalCase 驼峰首字大写,如 TryDoFor
- snakeCase, snake_case 下划线分隔,可定制大小写,如 try_do_for
- bigSnake, BIG_SNAKE 下划线分隔,全大写,如 TRY_DO_FOR
参数说明
- obj - String, 否则toString,null返回空串
- arg - 在upperCase,lowerCase中,为locale格式
- arg - 在dotCase,snakeCase,kebabCase中,为lower,upper,keep
- 其余函数无arg,不支持定制大小写
# author = try&DO&for
{{ author | upperCase zh-cn }} #输出 TRY&DO&FOR
{{ author | lowerCase zh-cn }} #输出 try&do&for
{{ author | dotCase }} #输出 try.do.for
{{ author | dotCase lower }} #输出 try.do.for
{{ author | dotCase upper }} #输出 TRY.DO.FOR
{{ author | dotCase keep }} #输出 try.DO.for
{{ author | kebab-case }} #输出 try-do-for
{{ author | BIG-KEBAB }} #输出 TRY-DO-FOR
{{ author | camelCase }} #输出 tryDoFor
{{ author | PascalCase }} #输出 TryDoFor
{{ author | snake_case }} #输出 try_do_for
{{ author | BIG_SNAKE }} #输出 TRY_DO_FOR
B5.5.条件控制
一些简单的条件控制输出
5a.输出可见 see
类型用途:String:javaEval,args输出第一个可见的值 用法说明:fun:see obj arg... 返回类型:obj或arg中第一个非null或非空字符串空的值。
- obj - 任意对象
- arg - 字符串或其他对象。
# ctx.put("nil", null);
# ctx.put("empty", "");
# ctx.put("value", "got");
{{ fun:see nil empty value }}
{{ nil | fun:see empty value }}
# 输出 got