admin管理员组文章数量:1315305
I know that I can use
Blockly.JavaScript['my_code'] = function() { ... }
But how can I add another language support like JSON? I tried ..
Blockly.Json['my_code'] = function() { ... }
It fails when I try to recover
Blockly.Json.workspaceToCode(this.workspace)
workspaceToCode
is not a function.
I need to add a new language to Blockly
I will not display this new language (JSON), it will just be used to send instructions to the robots.
I try to
Blockly.Json = new Blockly.Generator('Json');
Blockly.Json['my_code'] = function() { ... }
But an error occurs in
Blockly.Json.workspaceToCode(this.workspace)
Error ..
Uncaught TypeError: this.init is not a function
at js.ou3v.module.exports.Blockly.Generator.workspaceToCode
I know that I can use
Blockly.JavaScript['my_code'] = function() { ... }
But how can I add another language support like JSON? I tried ..
Blockly.Json['my_code'] = function() { ... }
It fails when I try to recover
Blockly.Json.workspaceToCode(this.workspace)
workspaceToCode
is not a function.
I need to add a new language to Blockly
I will not display this new language (JSON), it will just be used to send instructions to the robots.
I try to
Blockly.Json = new Blockly.Generator('Json');
Blockly.Json['my_code'] = function() { ... }
But an error occurs in
Blockly.Json.workspaceToCode(this.workspace)
Error ..
Uncaught TypeError: this.init is not a function
at js.ou3v.module.exports.Blockly.Generator.workspaceToCode
Share
Improve this question
edited Feb 1, 2019 at 12:22
Kresten
1002 silver badges9 bronze badges
asked Jul 4, 2017 at 1:01
ridermansbridermansb
11.1k28 gold badges121 silver badges231 bronze badges
2 Answers
Reset to default 8Creating a new language generator for Blockly is a fairly large undertaking, and with that in mind the documentation doesn't seem to offer much in terms of help with creating one.
From my experience the best way to build a generator is to take a look at the existing ones in generators/, I have used the JavaScript generator as a template for a project of mine where I wanted to generate C++ code.
It's also worth noting that the Block Factory generates JSON for use in other Blockly applications, however when I took a look at the code for that there isn't an actual generator defined for it.
I think the error you're getting is caused because Blockly.Json doesn't have an init function. This is something defined in the existing generator files, for example, from the JavaScript generator:
/**
* Initialise the database of variable names.
* @param {!Blockly.Workspace} workspace Workspace to generate code from.
*/
Blockly.JavaScript.init = function(workspace) {
....
};
With this in mind, your function would look like:
/**
* Initialise the database of variable names.
* @param {!Blockly.Workspace} workspace Workspace to generate code from.
*/
Blockly.Json.init = function(workspace) {
.....
};
There are other functions that the generator file contains, but taking a look at the existing code and adapting it for your needs should help you along the way.
Here's the minimal viable example I came up with:
I have defined a little custom block print
:
Blockly.defineBlocksWithJsonArray([
{
type: 'print',
message0: 'print %1',
args0: [
{ type: 'field_input', name: 'EMOJI_CODE' }
]
}
]);
Then I initialise the Blockly editor with this new block:
const ws = Blockly.inject('ide', {
toolbox: {
kind: 'flyoutToolbox',
contents: [
{ kind: 'block', type: 'print' }
]
}
});
Then I need to define what the block will generate.
In this example we convert strings to emojis e.g.
本文标签:
javascriptCustom language generator to BlocklyStack Overflow
版权声明:本文标题:javascript - Custom language generator to Blockly - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人,
转载请联系作者并注明出处:http://www.betaflare.com/web/1741977924a2408231.html,
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
:-)
bees
发表评论