俊泽生成器Web应用程序 - 帮助

俊泽生成器Web应用程序 - 帮助概述模板列表变量的定义与引用直接赋值模式模板赋值模式变量引用变量解引用变量描述符的出现顺序环境变量默认环境变量函数a (array)A (array operation)c (character)C (calculate)d (date)e (date)E (Emoji)f (foreach)i (if)I (invoke)j (juejuezi)L (logic calculate)n (natural language processing)r (random)R (range)w (while)W (do-while)生成模式eval模式HTML输出模式故障排除生成时错误... is not defined (jz001)Expected '...' or '...', but read end of input (jz101)Unexpected token: ... (jz102)Invalid character in tag name: '...'. Only hyphen, underline, latin letter and '$' are valid (jz103)Runtime error: ... (jz201)Internal error: ... (jz202)词库同步错误

概述

一个用来表达对俊泽和赵总的思念,以及生成一些其他奇怪东西的程序。

俊泽生成器Web应用程序的诞生离不开junze-generatorrandomaxioscorpusZhmaterial-webJueJueZiGenerator等开源项目。俊泽生成器本身也是一个使用DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE的开源项目

模板

俊泽生成器模板是生成字符串的模板。这句话不是废话文学,因为上一句话里的第一个模板是pattern,第二个模板是template。例如:

可能的生成结果:

模板中可以包含一些以%开头的使用特定语法的表达式。这些表达式包括:函数,列表,变量。

列表

生成一个列表,可以在a函数中使用

变量的定义与引用

变量定义可以保存模板或者生成的值,以供之后再次使用。变量名只能使用连字符,下划线,拉丁字母和美元符号。

直接赋值模式

在使用直接赋值模式定义变量时,会将生成的值存储进变量中。这样的变量称为值变量

模板赋值模式

在使用模板赋值模式定义变量时,会将生成使用的模板存储进变量,下次调用时会使用存储的模板重新生成。这样的变量称为模板变量

变量引用

在定义变量或者引用变量时,在变量名称前加入&会返回变量名称而不是变量值。这种情况下的变量名称被称作变量引用。例如:

上述语句的生成结果是a2

如果在变量名称前加入@,那么定义变量语句不会被执行,也不会有任何返回值。例如:

上述语句的生成结果是0, 1

特别的,如果在声明变量引用的时候不设置变量名称,那么它就是一个匿名变量引用。俊泽生成器在运行时会自动为其分配一个独一无二的名称。

变量解引用

对于一个值为变量引用的变量,在调用变量时在名称前加入*来解引用,从而获得变量引用所引用的值。它既可用于声明也可用于调用。例如:

上述语句的生成结果是1, 2

变量描述符的出现顺序

变量引用符号&和无声符号@至多出现一个,且位于最开始。

变量解引用符号*至多出现一次,位于第二位。

模板变量符号%至多出现一次,位于第三位。

环境变量

默认环境变量
变量名数据类型描述
__t整数当前生成是连续生成的第几次(从0开始)
__year整数输入的年份数值
__month整数输入的月份数值
__date整数输入的日期数值
__day整数输入的时间是星期几
__today_year整数今天的年份数值
__today_month整数今天的月份数值
__today_date整数今天的日期数值
__today_day整数今天的时间是星期几
__input字符串在”输入数据“一栏中输入的文本

变量__t在一些场合下很有帮助,你可以用它来实现类似循环的效果。例如:

关于日期的变量在一些场合下也非常有用。例如:

函数

语法:

没有参数的函数可以省略参数列表。

a (array)

从列表或字符串中选取一个元素。

A (array operation)

对列表或字符串执行指定的操作。

//TODO

c (character)

在U+4E00到U+9fff范围内随机生成一个字符。

C (calculate)

计算逆波兰表达式。

d (date)

计算设置的日期到今天的日数。

e (date)

计算今天到设置的日期的日数。

E (Emoji)

随机生成一个emoji字符。

f (foreach)

遍历列表。

i (if)

根据不同条件返回不同参数。

I (invoke)

调用变量。

j (juejuezi)

直通绝绝子生成器

L (logic calculate)

执行逻辑计算。

n (natural language processing)

自然语言处理,其实就是指定随机生成词语的词性。

r (random)

生成随机数:

R (range)

生成一个区间。

w (while)

循环,直到指定的变量值变为假。

W (do-while)

其他与while相同,但是它会首先调用一次循环变量,再判断条件。

生成模式

eval模式

eval模式允许在生成时使用JavaScript模板字符串

在eval模式下,以%开头的表达式将不再可用,取而代之的是一些全局对象:

全局对象名称描述
junze函数列表
context生成器当前的上下文(详见定义
randomrandom模块(详见官方文档

其中,函数列表的方法键值即为上述列出的所有函数名称,例如:

使用eval模式即为:

eval模式具有潜在的风险,是因为它可以执行任意JavaScript代码,攻击者可能以此进行跟踪或者执行恶意代码。

HTML输出模式

在输出时启用HTML,例如:

会随机生成一个视频播放的嵌入式框架。

HTML输出模式具有潜在的风险,是因为它可以向网页中嵌入任何内容,攻击者可能以此进行跟踪或者执行恶意代码。

故障排除

生成时错误

... is not defined (jz001)

函数未定义。可能输入了错误的函数名称。

Expected '...' or '...', but read end of input (jz101)

输入在不应结束的地方结束。请检查括号是否匹配。

Unexpected token: ... (jz102)

意外的符号。请检查语法。

Invalid character in tag name: '...'. Only hyphen, underline, latin letter and '$' are valid (jz103)

变量名中出现非法字符。

Runtime error: ... (jz201)

运行时错误。请检查函数的参数列表以及参数的数据类型是否合法。

Internal error: ... (jz202)

内部错误。可能是由于俊泽生成器存在漏洞。

词库同步错误

请检查网络是否科学。