add: DI加入WeatherModule
This commit is contained in:
parent
e477c015af
commit
10cf7cd72a
|
@ -54,6 +54,7 @@ public class StringFormatterTests
|
||||||
Regex regex = new(".*?");
|
Regex regex = new(".*?");
|
||||||
Match match = regex.Match("Test Input");
|
Match match = regex.Match("Test Input");
|
||||||
|
|
||||||
|
Assert.True(formatter.IsFormat);
|
||||||
Assert.Equal("Test Hello, Katheryne", formatter.Format(match.Groups));
|
Assert.Equal("Test Hello, Katheryne", formatter.Format(match.Groups));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ public class KatheryneChatRobot : IChatRobot
|
||||||
if (answer.IsFormat)
|
if (answer.IsFormat)
|
||||||
{
|
{
|
||||||
string temp = answer.Format(match.Groups);
|
string temp = answer.Format(match.Groups);
|
||||||
_logger.LogInformation("Format answer {} to {}.",
|
_logger.LogDebug("Format answer {} to {}.",
|
||||||
answer.RowString, temp);
|
answer.RowString, temp);
|
||||||
result.Add(temp);
|
result.Add(temp);
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ public class KatheryneChatRobot : IChatRobot
|
||||||
{
|
{
|
||||||
result.Add(answer.RowString);
|
result.Add(answer.RowString);
|
||||||
}
|
}
|
||||||
_logger.LogInformation("Moving to stage {} on input {}.",
|
_logger.LogDebug("Moving to stage {} on input {}.",
|
||||||
_currentStage, input);
|
_currentStage, input);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ public class KatheryneChatRobot : IChatRobot
|
||||||
_currentStage = transformer.NextStage;
|
_currentStage = transformer.NextStage;
|
||||||
result.Add(_grammarTree[_currentStage].Answer.RowString);
|
result.Add(_grammarTree[_currentStage].Answer.RowString);
|
||||||
|
|
||||||
_logger.LogInformation("Moving to stage {} with empty transform.",
|
_logger.LogDebug("Moving to stage {} with empty transform.",
|
||||||
_currentStage);
|
_currentStage);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class StringFormatter
|
||||||
GetFormatTags();
|
GetFormatTags();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsFormat => _formatTags.Count != 0;
|
public bool IsFormat => _formatTags.Count != 0 || _params.Count != 0;
|
||||||
|
|
||||||
public string RowString => _originString;
|
public string RowString => _originString;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
using Katheryne.Abstractions;
|
using Katheryne.Abstractions;
|
||||||
|
using Katheryne.Modules;
|
||||||
using Katheryne.Services;
|
using Katheryne.Services;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Katheryne;
|
namespace Katheryne;
|
||||||
|
|
||||||
|
@ -10,6 +12,21 @@ public static class ServiceCollectionExtensions
|
||||||
{
|
{
|
||||||
collection.AddSingleton<YamlDeserializerFactory>();
|
collection.AddSingleton<YamlDeserializerFactory>();
|
||||||
collection.AddSingleton<DefaultChatRobot>();
|
collection.AddSingleton<DefaultChatRobot>();
|
||||||
collection.AddSingleton<IChatRobotFactory, KatheryneChatRobotFactory>();
|
collection.AddSingleton<WeatherModule>();
|
||||||
|
|
||||||
|
collection.AddSingleton<IChatRobotFactory, KatheryneChatRobotFactory>(serviceProvider =>
|
||||||
|
{
|
||||||
|
var factory = new KatheryneChatRobotFactory(
|
||||||
|
serviceProvider.GetRequiredService<YamlDeserializerFactory>(),
|
||||||
|
serviceProvider.GetRequiredService<ILogger<KatheryneChatRobotFactory>>(),
|
||||||
|
serviceProvider.GetRequiredService<ILogger<KatheryneChatRobot>>(),
|
||||||
|
serviceProvider.GetRequiredService<DefaultChatRobot>());
|
||||||
|
|
||||||
|
WeatherModule module = serviceProvider.GetRequiredService<WeatherModule>();
|
||||||
|
|
||||||
|
factory.Modules.Add(module.ModuleName, module);
|
||||||
|
|
||||||
|
return factory;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -13,10 +13,10 @@ public class KatheryneChatRobotFactory : IChatRobotFactory
|
||||||
private readonly ILogger<KatheryneChatRobot> _robotLogger;
|
private readonly ILogger<KatheryneChatRobot> _robotLogger;
|
||||||
private readonly DefaultChatRobot _defaultChatRobot;
|
private readonly DefaultChatRobot _defaultChatRobot;
|
||||||
|
|
||||||
private readonly Dictionary<string, IParamsModule> _modules = new();
|
|
||||||
|
|
||||||
private Grammar? _grammar;
|
private Grammar? _grammar;
|
||||||
|
|
||||||
|
public Dictionary<string, IParamsModule> Modules { get; } = new();
|
||||||
|
|
||||||
public string GrammarText { get; private set; } = string.Empty;
|
public string GrammarText { get; private set; } = string.Empty;
|
||||||
|
|
||||||
public KatheryneChatRobotFactory(YamlDeserializerFactory deserializerFactory,
|
public KatheryneChatRobotFactory(YamlDeserializerFactory deserializerFactory,
|
||||||
|
@ -37,7 +37,7 @@ public class KatheryneChatRobotFactory : IChatRobotFactory
|
||||||
/// <exception cref="GrammarException">编译文法失败抛出的异常</exception>
|
/// <exception cref="GrammarException">编译文法失败抛出的异常</exception>
|
||||||
public void SetGrammar(string grammarText)
|
public void SetGrammar(string grammarText)
|
||||||
{
|
{
|
||||||
_factoryLogger.LogInformation("Receive new grammar: {}.", grammarText);
|
_factoryLogger.LogDebug("Receive new grammar: {}.", grammarText);
|
||||||
GrammarText = grammarText;
|
GrammarText = grammarText;
|
||||||
IDeserializer deserializer = _deserializerFactory.GetDeserializer();
|
IDeserializer deserializer = _deserializerFactory.GetDeserializer();
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ public class KatheryneChatRobotFactory : IChatRobotFactory
|
||||||
{
|
{
|
||||||
throw new GrammarException("Failed to parse lexical model.", ex);
|
throw new GrammarException("Failed to parse lexical model.", ex);
|
||||||
}
|
}
|
||||||
_grammar = new Grammar(new GrammarTree(model, _modules),
|
_grammar = new Grammar(new GrammarTree(model, Modules),
|
||||||
model.RobotName, model.BeginStageName);
|
model.RobotName, model.BeginStageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user