@page "/editor"
@using Katheryne.Services
@using Katheryne.Exceptions
@inject NavigationManager Navigation
@inject KatheryneChatRobotFactory RobotFactory
@code {
private StandaloneCodeEditor _editor = null!;
private AntList _logList = null!;
private readonly List _logs = new();
protected override async Task OnInitializedAsync()
{
Log("编辑器加载完成");
await base.OnInitializedAsync();
}
private StandaloneEditorConstructionOptions GetEditorConstructionOptions(StandaloneCodeEditor editor)
{
string grammarText;
if (!string.IsNullOrEmpty(RobotFactory.GrammarText))
{
Log("加载文法...");
grammarText = RobotFactory.GrammarText;
}
else
{
Log("未设置文法");
grammarText = string.Empty;
}
return new StandaloneEditorConstructionOptions
{
Language = "yaml",
Value = grammarText
};
}
private async Task CompileGrammarClicked()
{
string grammarText = await _editor.GetValue();
try
{
Log("编译文法...");
RobotFactory.SetGrammar(grammarText);
Log("编译成功!");
}
catch (GrammarException e)
{
Log($"编译文法遇到错误:{e.Message}");
}
}
private void QuitButtontClicked()
{
Navigation.NavigateTo("/", replace: true);
}
private void Log(string message)
{
_logs.Add($"{DateTime.Now:HH:mm:ss} {message}");
StateHasChanged();
}
}