TinEngine使用(9)——内嵌代码

引言

在HTML中,javascript占据了很重的部分,无论是前端和后端,javascript都为网页带来了大量的可操作性和交互性,使得网页内容不断丰富,不断契合人们的操作。

在Tin中,编写者可以使用<code>标签来写入内嵌代码,将一定格式的脚本内联到Tin文件中。这类似于HTML的<script>元素。该标签允许编写者使用特定脚本增强文件的操作性和交互性。


一般使用

<code>标签允许四个参数。

<code>代码名称;代码种类[;参数]
代码
</code>

代码名称是在本TinText中,该代码段的标志。当名称重复时,则代表代码段覆盖或者是更新;当名称为“now”时,该代码段无需触发,即刻执行。

代码种类是在TinText中允许运行的脚本类型,包括:Python、tcl、vbs三种。其中,Python和tcl均有所限制,具体限制内容查看TinEngine的使用说明,或者下载TinReader获取说明文件。vbs文件通过生成临时文件,使用Windows系统的wscript进行运行。

代码参数是一串参数,这些参数使用“|”来分割。这是非必选的,这些参数在代码段中用“%参数%”的形式存在,当触发该代码段并给定代码段参数时,这些参数将被替换,否则,这个参数内容就是参数的默认值。该选项对一般使用者来讲没有用处,但如果你希望你的Tin文件能给读者留下深刻印象,这个功能也可以尝试使用。


代码触发

目前,可以使用即刻启动、<do>标签和内部函数三种方法触发内联代码。

我们以下方的Python代码为例子:

self.insert('end','main')

即刻启动

在上文中讲到,当代码名称为“now”使,TinText会直接运行这一段代码,同时会阻塞渲染。

<code>now;python
self.insert('end','main')
</code>

do标签启动

<do>标签是Tin中启动指定脚本的特定标签,一般使用一个参数:<do>code_name[;args]。更多用法请查看Tin说明文件。

该方法为前置代码段

<code>test;python
self.insert('end','main')
</code>

;代码段需要提前载入
<do>test

内部函数启动

在TinText中,使用函数==self.get_codes_to_run(name,args:list=[])==触发指定代码段。

前置代码段

<code>test;python
self.insert('end','main')
</code>

<tkinter>
get_codes_to_run('test')
</tkinter>

后置代码段

<tkinter>
window_create(self.end,window=Button(self,text='code button',command=lambda:self.get_codes_to_run('test')))
</tkinter>
;在TinReader中,使用:
;<tkinter>
;window_create(self.end,window=Button(self,text='code button',command=lambda:MyText.get_codes_to_run('test')))
;</tkinter>

<code>test;python
self.insert('end','main')
</code>

后置代码段的效果:
在这里插入图片描述

这一段代码虽然很简单,但是足以展现<code>应用于Tin中的重要性。


使用参数

对于普通使用者来说,以上的使用已经足够了,但是对于想玩点花样的编写者,没有参数设定可是少了很多乐趣。

接下来,我们仍然以上面的一段简单的Python代码作为例子,看看如何在<code>中使用参数。

直接执行,忽略参数

在Tin中,代码可以拥有参数列表,但是当一段代码被触发时,可以不传递参数,或者说参数可以不全(不建议,要么传参,要么不传使用默认值)。当参数传递使,代码段中的“%参数%”字样将被代替为参数值,否则直接被替换成“参数”

那么以上的代码段需要进行改写:

<code>now;python;self.end|main
self.insert('end','TIN')
self.insert(%self.end%,' %main%')
</code>

此时,在TinText中显示的是:TIN main

导入参数

触发标签

如果使用<do>标签进行触发,不传参使用方法如下:

<code>test;python;self.end|main
self.insert('end','TIN')
self.insert(%self.end%,' %main%')
</code>

<do>test

此时,在TinText中显示的是:TIN main

传参使用方法:

<code>test;python;self.end|main
self.insert('end','TIN')
self.insert(%self.end%,' %main%')
</code>

<do>test;1.1|code

此时,在TinText中显示的是:T codeIN

内部函数

使用内部函数,仍可以不传参:

<code>test;python;self.end|main
self.insert('end','TIN')
self.insert(%self.end%,' %main%')
</code>

<code>now;python
self.get_codes_to_run('test')
</code>

此时,在TinText中显示的是:TIN main

传递参数:

<code>test;python;self.end|main
self.insert('end','TIN')
self.insert(%self.end%,' %main%')
</code>

<code>now;python
self.get_codes_to_run('test',['1.1','code'])
</code>

此时,在TinText中显示的是:T codeIN


结语

这就是在Tin语言中使用内嵌代码段的基本方法,使用脚本控制可以让TinText的交互功能更加丰富。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值