/// <summary> /// Generates the blocks definition. /// </summary> /// <returns></returns> public string GenerateBlocksValueDefinition() { var globalVars = "var glbVar=function(workspace){"; var types = this.Types() .Where(it => it.Item2 == null) .Select(it => it.Item1) .ToArray(); string blockText = ""; foreach (var type in types) { globalVars += $"workspace.createVariable('var_{type.Name}', '{nameType(type)}');"; blockText += $@"{Environment.NewLine} var blockText_{type.Name} = '<block type=""{nameType(type)}"">';"; foreach (var item in type.GetProperties()) { if (item.GetSetMethod() == null) { continue; } var typeProp = item.PropertyType; var existing = ListOfBlockly.BlocklyTypeTranslator(typeProp); if (existing == null) { continue; } var blockShadow = ListOfBlockly.BlocklyTypeBlocks(typeProp); blockText += $@"{Environment.NewLine} var blockTextLocalSiteFunctions = '<value name=""val_{item.Name}"">'; blockTextLocalSiteFunctions += '<shadow type=""{blockShadow}"">';"; blockText += generateShadow(blockShadow); blockText += $@" blockTextLocalSiteFunctions += '</shadow></value>'; "; blockText += $"blockText_{type.Name} += blockTextLocalSiteFunctions;"; } blockText += $"blockText_{type.Name} += '</block>';"; blockText += $@"block_{type.Name} = Blockly.Xml.textToDom(blockText_{type.Name}); xmlList.push(block_{type.Name});"; blockText += ";"; blockText += $@"var block_{type.Name}Set='<block type=""variables_set""><field name=""VAR"">var_{type.Name}</field></block>';"; blockText += $@"block_{type.Name}Set = Blockly.Xml.textToDom(block_{type.Name}Set); xmlList.push(block_{type.Name}Set);"; } var strDef = $@" var registerValues = function() {{ var xmlList = []; {blockText} return xmlList; }}; "; globalVars += "}"; strDef += globalVars; return(strDef); }
internal string GenerateBlocksFunctionsDefinition() { string blockText = "var blockTextLocalSiteFunctions='';"; foreach (var cmdAll in this.GroupBy(it => it.ControllerName)) { var key = cmdAll.Key; blockText += $"blockTextLocalSiteFunctions += '<category name=\"{key}\">';"; foreach (var cmd in cmdAll) { blockText += $@"{Environment.NewLine} blockTextLocalSiteFunctions += '<block type=""{cmd.nameCommand()}"">';"; if (cmd.ExistsParams) { foreach (var param in cmd.Params) { var type = param.Value.type; var existing = ListOfBlockly.BlocklyTypeTranslator(type); if (existing == null) { var tuple = TypesGenerateArray().FirstOrDefault(it => it.Item1 == type); if (tuple != null) { var blockShadow = nameType(type); blockText += $@"{Environment.NewLine} blockTextLocalSiteFunctions += '<value name=""val_{param.Key}"">'; blockTextLocalSiteFunctions += '<shadow type=""{blockShadow}"">';"; //blockText += generateShadow(blockShadow); blockText += $@" blockTextLocalSiteFunctions += '</shadow></value>'; "; } } if (existing != null) { var blockShadow = ListOfBlockly.BlocklyTypeBlocks(type); blockText += $@"{Environment.NewLine} blockTextLocalSiteFunctions += '<value name=""val_{param.Key}"">'; blockTextLocalSiteFunctions += '<shadow type=""{blockShadow}"">';"; blockText += generateShadow(blockShadow); blockText += $@" blockTextLocalSiteFunctions += '</shadow></value>'; "; } } } blockText += "blockTextLocalSiteFunctions += '</block>';"; } blockText += $"blockTextLocalSiteFunctions+='</category>';"; //blockText += $"blockText_{key} +='</category>';"; //blockText += $"xmlList.push(Blockly.Xml.textToDom(blockText_{key}));"; } //blockText += $"console.log(blockTextLocalSiteFunctions);"; return(blockText); // var strDef = $@" // var registerFunctions = function() {{ // var xmlList = []; // {blockText} //return xmlList; // }} "; // return strDef; }