码上掘金自定义语言的语法高亮和用法

JCode Custom Lang

码上掘金自定义语言合集

使用说明

1. Script Tab 下选择 Custom 2. 第一行输入对应语言的Hashbang,比如:

#!/jcode/lang/wenyan https://xitu.github.io/jcode-languages/dist/lang-wenyan.json

接着输入该语言代码,如

吾嘗觀「「控制秘術」」之書。方悟「等待指針按下」「等待指針移動」之義。 吾嘗觀「「畫譜」」之書。方悟「備紙」「擇筆」「蘸色」「落筆」「運筆」「提筆」「設色」「裱畫」之義。 吾有一術。名之曰「繪製」。欲行是術。必先得一物。曰「紙」。 行是術以俟其毕。 是術曰。 恆為是。 且施「等待指針移動」於「紙」。以俟其毕。名之曰「指針」。 夫「指針」之「「經數」」者。名之曰「經數」。 夫「指針」之「「緯數」」者。名之曰「緯數」。 夫「指針」之「「鍵值」」者。名之曰「鍵值」。 夫「指針」之「「前經」」者。名之曰「橫」。 夫「指針」之「「前緯」」者。名之曰「縱」。 施「落筆」於「紙」於「橫」於「縱」。 若「鍵值」等於零者。施「提筆」於「紙」。乃止也。 施「運筆」於「紙」於「經數」於「緯數」。 施「提筆」於「紙」。 施「設色」於「紙」。 云云。 是謂「繪製」之術也。 施「備紙」於五百。於五百。名之曰「紙」。 施「蘸色」於「紙」於「「花青」」。 施「擇筆」於「紙」於五。 施「裱畫」於「紙」於「「app」」。 恆為是。 且施「等待指針按下」於「紙」。以俟其毕。名之曰「指針」。 且施「繪製」於「紙」。以俟其毕。 云云。 3. 在脚本依赖中引入 https://cdn.jsdelivr.net/npm/jcode-tools 和依赖的语言解析脚本,如 https://cdn.jsdelivr.net/npm/@wenyanlang/core/index.min.js 4. Markup Tab 下对自定义语言进行解析,比如:

<div id="app"></div> <script> (async function() { const code = await JCode.getCustomCode(); const jscode = Wenyan.compile(code, { logCallback: () => {}, importPaths: ['https://akira-cn.github.io/wenyan-demos/'], allowHttp: true, }); Wenyan.evalCompiled(`(async () => {${jscode}})()`); }()); </script> 5. Server端语言

目前码上掘金通过CodeX-API支持Server端编程语言。

比如Rust语言:

例子

<div id="app"></div> <script type="module"> import {CodeXClient, logger} from 'https://cdn.jsdelivr.net/npm/jcode-tools@^0.10.2/dist/jcode-tools.esm.js'; (async () => { window.console = logger(app); console.log('提交代码,请稍候'); try { const code = new CodeXClient(); // 默认会从CustomCode中获取 const result = await code.runCode(); if(result.error) { console.error(result.error); } console.log(result.output); } catch(ex) { console.error(ex); } })(); </script> 支持语言

目前官方支持了10种语言:

语言 json 文件 示例 运行时
glsl lang-glsl glsl-demo glsl-doodle
live & coffee lang-coffee coffee-demo live-demo coffeescript livescript
lua lang-lua lua-demo fengari-lua
markdown lang-markdown markdown-demo markdedjs
python lang-python python-demo brython
ruby lang-ruby ruby-demo opal
scheme lang-scheme scheme-demo lips
sql lang-sql sql-demo jSQL
webslides lang-webslides webslides-demo webslides.md
文言文 lang-wenyan wenyan-demo wenyan-lang

以及多种Server端语言:

语言 json 文件 示例
c/c++ lang-cpp c-demo c++-demo
dart lang-dart dart-demo
elixir lang-elixir elixir-demo
erlang lang-erlang erl-demo
golang lang-go go-demo
java lang-java java-demo
javascript lang-javascript nodejs-demo-async
kotlin lang-kotlin kotlin-demo
perl lang-perl perl-demo
php lang-php php-demo
python lang-python python-demo
ruby lang-ruby ruby-demo
rust lang-rust rust-demo
scala lang-scala scala-demo
zig lang-zig zig-demo
如何扩展我的自定义语言 准备语法高亮JSON文件

码上掘金支持JSON格式的Monaco Editor语法高亮配置,而通常的Monaco Editor语法高文件是JS文件,需要转成对应的JSON。

可以fork本代码仓库,直接将语法高亮JS文件复制到src目录,然后运行npm run build,会自动构建并生成dist目录下对应的JSON文件。

之后可以自己发布这个JSON,或者给本项目提交PR,代码合并后,就可以直接通过:

https://xitu.github.io/jcode-languages/dist/lang-你的语言类型.json

来访问了。

设置hashbang

语法为:

#!/jcode/lang/你的语言类型 https://xitu.github.io/jcode-languages/dist/lang-你的语言类型.json

然后就可以按照上面的使用说明,写自己的自定义语言代码了。

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。