47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
from Xbot import XbotProject, XbotBlock
|
|
|
|
|
|
class XBotGlobalVariable(object):
|
|
@classmethod
|
|
def build_glv_var(cls, var_name: str):
|
|
assert isinstance(var_name, str)
|
|
return f"glv['{var_name}']"
|
|
|
|
|
|
class XBotVariableUtil(object):
|
|
self_prefix_string = "self."
|
|
|
|
@classmethod
|
|
def is_self_var(cls, var_name: str):
|
|
return var_name.startswith(cls.self_prefix_string)
|
|
|
|
@classmethod
|
|
def trim_self(cls, var_name):
|
|
return var_name[len(cls.self_prefix_string):]
|
|
|
|
@classmethod
|
|
def create_comment_block(cls, comment):
|
|
comment_block = XbotBlock(id="", name="programing.comment")
|
|
comment_block.fields["content"].set_text_value(comment)
|
|
return comment_block
|
|
|
|
@classmethod
|
|
def create_var_block(cls, project: XbotProject, var_name: str, var_value: str):
|
|
set_var_block = XbotBlock(id="", name="programing.variable")
|
|
# 绑定的变量 = ret_name (any)
|
|
set_var_block.fields["value_type"].set_text_value("any")
|
|
|
|
if cls.is_self_var(var_name):
|
|
var_value_without_self = cls.trim_self(var_name)
|
|
cls.add_global_if_not_existed(project, var_value_without_self)
|
|
set_var_block.variables["variable"].set_name(var_value_without_self)
|
|
else:
|
|
set_var_block.variables["variable"].set_name(var_name)
|
|
|
|
set_var_block.fields["value"].set_expression_value(var_value)
|
|
return set_var_block
|
|
|
|
@classmethod
|
|
def add_global_if_not_existed(cls, project: XbotProject, var_name: str) -> None:
|
|
if not project.global_variable_exist(var_name):
|
|
project.add_global_variable(var_name, value=None) |