@ cratis/ 屏幕播放语言
为克拉蒂人提供摩纳哥语服务 剧本 DSL (英语:.play )——语法突出,IntelliSense完成,悬浮文档,和诊断.
使用量
import * as monaco from 'monaco-editor';
import { register } from '@cratis/screenplay-language';
register(monaco);
register 是单一的切入点。 登记 screenplay 语 文 (.play 、 完成和盘旋的提供者、 诊断监视员和 screenplay-dark 编号 : screenplay-light 摩纳哥主题,您通过. monaco-editor 这是一种对等依赖——一揽子方案从未捆绑摩纳哥.
import { languageId, screenplayDarkThemeName, screenplayLightThemeName } from '@cratis/screenplay-language';
monaco.editor.create(element, {
language: languageId,
theme: screenplayDarkThemeName,
});
涵盖的内容
- 突出显示 ——所有构造和条款关键词,切片类型,概念属性(
@pii, (中文(简体) ),@sensitive),上下文变量($context.*, (中文(简体) ),$env.*, (中文(简体) ),$eventContext.*, (中文(简体) ),$.\*),字符串,数字和注释. - 嵌入式代码块 —— 说
csharp, (中文(简体) ),java, (中文(简体) ),typescript, (中文(简体) ),react,以及html以摩纳哥自己的语言语法突出显示三重背书之间的块. - 分语言 - PDL (英语:
projection)和CDL(英语:capture) 身体通过自己的注册规则,使用蒙纳克的状态堆栈来表示. - 完成情况 ——通过附加构造(顶级,模块,特征,切片,命令,生产,处理器,屏幕,约束等)来了解上下文,外加范围内符号名:政策后
authorize之后的事件on财务报告和审定财务报表produces,在类型位置上的概念和原始,以及可解决的模块/特性目标depends on,将已宣布的目标排除在外. - 缓冲 ——关键字文档,概念定义(primitive +属性),政策需要表达式,以及事件属性列表.
- 诊断 ——未知的切片类型,未知的原始类型,引用未申报的政策与事件,标签缩进,以及未关闭的代码栅栏. 每个都带着编译器的
PLAY代码(diagnosticCodes),所以同一病情的分泌和CLI诊断是同一种代码.
快速修正
已注册的代码动作提供者会针对当前缓冲提供经核实的编辑:
PLAY0479: 替换一个遗产?后缀为optional,或移动文档.PLAY0471: 删除冗余事件id线条。 拖放的注释无法删除.
重复的ID去除工作在放置和多文档应用中. 行动尊重要求的诊断和类型,每个模型版本的缓存分析, 并按该版本编辑。 区域请求返回每个符合条件的交叉事件,不重复 行动。 每个版本一并核查独立食谱,以检查预定的食谱 语法变化和诊断去除,而不对每个标记进行回放;没有.NET进程 所需经费。 见 编辑器快速修正 对于多余的id去除行为.
用新子语言扩展
import { registerSubLanguage } from '@cratis/screenplay-language';
registerSubLanguage('workflow', {
tokens: [[/\b(?:start|step|end)\b/, 'keyword']],
completions: [{ label: 'step', insertText: 'step ${1:Name}', documentation: 'A workflow step.' }],
hovers: { step: 'Workflow — a step executed in sequence.' },
});
登记工作前后 register(monaco);活化器在苍蝇上重构. 见 分语言文档 完全设计.
大楼
yarn build
已公布的运行时间是 ES 模块图 dist/bundles/,不共享
预建块 。 根,捕捉和投影入行路径不变.
私有编译器模块作为相对文件在 dist/bundles/compiler/· ;
消费者不需要安装 @cratis/screenplay-compiler消费者可以
使用自己的捆绑器配置来分割这些模块.
可调用名称、微缩和源地图得到保存.
check-package.mjs 检查包装的柏油球, 解决每一个公开进入
只安装了宣布的对等器,并打印了十个最大的模块,总运行时间
字节和消费者导入的最小大小 register, (中文(简体) ), languageId,以及
screenplayDarkThemeName。运行时大小不包括声明和源地图.
运行时间规模预算
- 每个已发布的 JavaScript 文件必须是 500 000字节。这是消费者 块预算,从未增加; 分割模块图,而不是增长 预建块 .
- 整个运行时间必须是 1 000 000字节。本上限核准语言 在这一限度内增长,同时防范供应商依赖。 增长 除了在审查模块分解后需要明确核准外, 而不是自动提高每个发行量的上限。 摩纳哥仍然对外开放.
- 消费者的最后块块仍然取决于其捆绑者的分块配置; 模块图不能保证单个捆绑消费者留在 50万字节.
模块- 图形构建初始显示 199个JavaScript文件共计752 551个 字节它的十大单元是:
模块(与 dist/bundles/(中文(简体) ) | 字节 |
|---|---|
completion-items.js | 41,933美元 (单位:千美元) |
compiler/Syntax/SyntaxCollections.js | 29,257 (中文(简体) ) |
keyword-docs.js | 23 414 个 |
compiler/Syntax/ScreenplaySyntaxWalker.js | 20 450个 |
compiler/Parsing/SpecificationParser.js | 19,931 (英语) |
compiler/Diagnostics/DiagnosticCodes.js | 14 235个 |
sub-languages/projection/CompletionProvider.js | 13 391个 |
event-source-authoring.js | 12 877个 |
validation.js | 12 806个 |
compiler/Parsing/ScreenParser.js | 12 351个 |
包装的消费者烟雾 进口捆绑 601,682 字节 作为单一 与摩纳哥外部的精密模块。 分解包含没有打印机或 MCP-唯一出处模块. 语法序列化初始化仍然被拉动 通过编译器桶导出; 删除它需要单独检查行为 编译器导入清理, 而不是从编辑器中丢弃 parser 校验器 .
yarn test:pack 此外,还进行尺寸检查,并进行人种超大
模块。 警卫必须拒绝它,并点出它公布的路径.