Snapblocks


功能

Snapblocksscratchblocks 的一个分支,允许用户将文本转换为 Snap! 脚本的图像。此 Discourse 插件允许用户在帖子中使用 snapblocks。

您可以在帖子中创建 snapblocks,只需在 [snapblocks][/snapblocks] bbcode 标签内输入 snapblocks 代码即可。例如:

[snapblocks]
move (10) steps
[/snapblocks]

您也可以使用 [scratchblocks][/scratchblocks] 作为别名,尽管它可以被禁用。

您还可以使用 [sb][/sb] 在行内添加 snapblocks 代码。

使用 [sb]move (10) steps[/sb] 块向前移动。

选项

有几个设置可以更改 snapblocks 的渲染方式。

  • 块样式
  • 块缩放
  • 斑马纹着色
  • 块换行
  • 显示空格
  • 圣诞帽

许多选项也可以在 snapblocks 代码片段中使用。

[snapblocks blockStyle="snap-flat" wrap="true" wrapSize=100 zebra="true" showSpaces="false" santa="true"]
when flag clicked
if <[] = []> {
  forever {
    run ({} @addInput) with inputs [Hello world] @delInput @verticalEllipsis @addInput
  }
}
[/snapblocks]

您也可以通过默认参数设置块样式。

[snapblocks="snap-flat"]
move (10) steps
[/snapblocks]

配置

名称 描述
块样式 默认块样式。可以是 snapsnap-flatscratch2scratch3scratch3-hc
块缩放 默认块图像缩放比例。必须是浮点数。
斑马纹着色 如果多个块颜色相同,则交替使用较浅的颜色。
块换行 如果块过宽,将块的部分内容换行到新行。
显示空格 在输入中用点显示空格。
Scratchblock 别名 启用 [scratchblocks] 别名。

更新日志

  • 1.5.0
    • 更新 snapblocks 至 v1.10.0
    • 修复加载 snapblocks 库时的错误(由于“文件名错误”而抛出错误)
  • 1.4.1
    • 修复多行代码片段引用问题
    • 正确检测块翻译
  • 1.4.0
    • 改进 snapblocks 的引用功能
    • 块中的文本不可被选中(尽管您仍然可以选中整个脚本并进行引用)。
  • 1.3.0
    • 在设置中添加“圣诞帽”选项
    • 在 snapblocks 代码片段中添加 santa 选项
    • 更新 snapblocks 至 1.8.0
  • 1.2.0
    • 允许切换 [scratchblocks] 别名(我终于知道如何实现了)。
    • 更新 snapblocks 至 1.7.0
  • 1.1.1
    • 确保溢出的脚本可以滚动。
    • 使用工具栏中的 snapblocks 按钮时添加实际文本。
  • 1.1.0
    • 更新 snapblocks 至 1.6.0
  • 1.0.0
    • 初始版本

待办事项

  • [scratchblocks] 设置单独的默认样式
13 个赞

scratchblocks 是否存在任何不兼容之处,需要为 Scratch 单独创建一个插件?

如果不存在,可以在此处以及 GitHub 上该插件的 README 文件中注明。

1 个赞

我认为唯一的不兼容之处主要是小的语法调整,例如下拉菜单和定义块。在大多数情况下,scratchblocks 代码与 snapblocks 大致兼容。

我仍然认为应该有一个单独的 scratchblocks 插件,因为我知道一些关于 scratch/scratch mods 的论坛可能不想使用 snapblocks,因为 snapblocks 最适合 snap(而且我在 scratch 样式打磨方面一直做得不够好),更不用说我还没有添加将工具栏快捷方式切换为使用 scratchblocks 的功能。

如果有人想尝试使用此插件作为基础来创建 scratchblocks 插件(我可能没时间自己做一个),我认为值得注意的是,我使用的渲染函数不在 scratchblocks API 中,因此需要比直接使用 scratchblocks 做更多的工作。

1 个赞

乍一看,似乎没有反对意见可以使用此插件进行初步实验(我的环境是学校环境),并且只有在必要时才投入时间开发 Scratch 插件。

1 个赞

功能请求:可以为 [scratchblocks] 别名单独定义块样式。
这将允许轻松使用不同样式的 Scratch 和 Snap! 元素。

2 个赞

这确实是个好主意。我会研究一下添加这个功能。

3 个赞

我没看到任何服务器端逻辑,这或许更适合构建为主题组件?

3 个赞

(帖子已被作者删除)

它通过挂钩消息解析器来确保标签内的内容不会被解析,并提供了许多选项来配置其行为。我还希望支持新的所见即所得消息编辑器,但一直难以将其完美实现。此外,我主要不希望论坛管理员需要为每个主题单独启用它,因为这可能会引发问题和混淆(我之前已经见过这种情况发生)。

那么,我是否对主题组件的功能存在误解?它能否实现为“全局启用一次,从此一劳永逸”的类型?

(哎呀,按错了回复按钮 @RGJ

安装插件比这要繁琐得多 :thinking:,而且在 Discourse.org 托管计划中无法使用。

此外,我认为大多数论坛只有一个活跃主题。

主题组件可以拥有设置,并且能够完成插件 JavaScript 端所能做的所有事情。以当前插件的状态来看,你不会损失任何功能。

2 个赞

你难道不是直接把仓库克隆到插件目录吗?我觉得这不算很麻烦。不过,在 Discourse 托管计划上无法使用这一点确实成立。

这个插件所针对的论坛并非如此。但我刚刚检查了一下,发现主题组件设置界面自上次我处理它们以来已经经历了巨大的改动,所以看起来比我记忆中更容易管理。

明白了,那我尝试将其重写为主题组件,但由于其他事务,我估计暂时无法着手处理。

1 个赞

并非所有管理员都有命令行访问权限,即使有,也并非所有人都很熟悉它。

此外,这需要重新构建,这个过程不是即时的,可能产生副作用,甚至可能导致问题。

更新插件同样需要重新构建,而更新主题组件只需点击一下按钮。

2 个赞

我稍后可能会尝试一下,因为这里确实没有后端逻辑。

1 个赞