src/SSCMS.Core/Services/ParseManager.cs
(开头部分) 10KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Datory;
using SSCMS.Configuration;
using SSCMS.Core.Context;
using SSCMS.Core.StlParser.StlElement;
using SSCMS.Core.Utils;
using SSCMS.Enums;
using SSCMS.Models;
using SSCMS.Parse;
using SSCMS.Plugins;
using SSCMS.Services;
using SSCMS.Utils;
namespace SSCMS.Core.Services
{
public partial class ParseManager : IParseManager
{
public ISettingsManager SettingsManager { get; }
public IPathManager PathManager { get; }
public IDatabaseManager DatabaseManager { get; }
private readonly IPluginManager _pluginManager;
public ParseManager(ISettingsManager settingsManager, IPathManager pathManager, IDatabaseManager databaseManager, IPluginManager pluginManager)
{
SettingsManager = settingsManager;
PathManager = pathManager;
DatabaseManager = databaseManager;
_pluginManager = pluginManager;
}
public ParsePage PageInfo { get; set; }
public ParseContext ContextInfo { get; set; }
public async Task InitAsync(EditMode editMode, Site site, int pageChannelId, int pageContentId, Template template)
{
var config = await DatabaseManager.ConfigRepository.GetAsync();
PageInfo = new ParsePage(PathManager, editMode, config, pageChannelId, pageContentId, site, template, new Dictionary<string, object>());
ContextInfo = new ParseContext(PageInfo);
}
public async Task ParseAsync(StringBuilder contentBuilder, string filePath, bool isPreview)
{
var context = new PluginParseContext(this);
var startParsesAsync = _pluginManager.GetExtensions<IPluginCreateStartAsync>();
if (startParsesAsync != null)
{
foreach (var extension in startParsesAsync)
{
try
{
await extension.ParseAsync(context);
}
catch (Exception ex)
{
await AddStlErrorLogAsync(nameof(IPluginCreateStartAsync), string.Empty,
ex);
后面还有 227 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
