namespace GFramework.Game.Config;
///
/// 提供面向宿主的 YAML 文本校验入口,使保存前校验可以复用运行时同一套 schema 规则。
///
public static class YamlConfigTextValidator
{
///
/// 使用指定 schema 文件同步校验 YAML 文本。
///
/// 所属配置表名称。
/// Schema 文件绝对路径。
/// YAML 文件路径,仅用于诊断信息。
/// 待校验的 YAML 文本。
/// 当 或 为空白时抛出。
/// 当 或 为 时抛出。
/// 当 schema 文件不可用,或 YAML 内容与 schema 不匹配时抛出。
public static void Validate(
string tableName,
string schemaPath,
string yamlPath,
string yamlText)
{
var schema = YamlConfigSchemaValidator.Load(tableName, schemaPath);
YamlConfigSchemaValidator.Validate(tableName, schema, yamlPath, yamlText);
}
///
/// 使用指定 schema 文件异步校验 YAML 文本。
///
/// 所属配置表名称。
/// Schema 文件绝对路径。
/// YAML 文件路径,仅用于诊断信息。
/// 待校验的 YAML 文本。
/// 取消令牌。
/// 表示异步校验操作的任务。
/// 当 或 为空白时抛出。
/// 当 或 为 时抛出。
/// 当 schema 文件不可用,或 YAML 内容与 schema 不匹配时抛出。
public static async Task ValidateAsync(
string tableName,
string schemaPath,
string yamlPath,
string yamlText,
CancellationToken cancellationToken = default)
{
var schema = await YamlConfigSchemaValidator.LoadAsync(tableName, schemaPath, cancellationToken)
.ConfigureAwait(false);
YamlConfigSchemaValidator.Validate(tableName, schema, yamlPath, yamlText);
}
}