Discuz.Forum/NVelocity.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Commons.Collections;
using NVelocity;
using NVelocity.App;
using NVelocity.Context;
using System.IO;
using NVelocity.Runtime;
using System.Text;
using Discuz.Common;
using Discuz.Config;
namespace Discuz.Forum
{
public class NVelocity
{
public static VelocityEngine engine;
public static ExtendedProperties props;
public static string filePath = "";
public static Template template;
static NVelocity()
{
filePath = Utils.GetMapPath(BaseConfigs.GetForumPath);
engine = new VelocityEngine();
props = new ExtendedProperties();
props.AddProperty(RuntimeConstants.INPUT_ENCODING, "utf-8");
props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8");
props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, filePath);
engine.Init(props);
}
public static string GetTemplateData(string name)
{
template = engine.GetTemplate(name);
return template.Data.ToString();
}
public static string TemplateMerge(string name, Hashtable table)
{
template = engine.GetTemplate(filePath+name);
VelocityContext content = new VelocityContext();
foreach (DictionaryEntry entry in table)
{
content.Put(entry.Key.ToString(), entry.Value);
}
StringWriter writer = new StringWriter();
template.Merge(content, writer);
return writer.GetStringBuilder().ToString();
}
public static string StringMerge(string templateContext, Hashtable table)
{
var engine = new VelocityEngine();
engine.Init();
var content = new VelocityContext();
if (table != null)
foreach (DictionaryEntry entry in table)
{
content.Put(entry.Key.ToString(), entry.Value);
}
using (var writer = new StringWriter())
{
engine.Evaluate(content, writer, "", templateContext);
return writer.GetStringBuilder().ToString();
}
}
public static bool CreateTemplate(string path, string str)
{
try
{
using (FileStream fs = new FileStream(filePath +path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
{
str = str.Replace("%include", "#include");
Byte[] info = Encoding.UTF8.GetBytes(str);
fs.Write(info, 0, info.Length);
fs.Close();
}
return true;
}
catch (Exception e)
{
return false;
}
}
}
}
作者:Bober Song
出处:http://bober.cnblogs.com/
CARE健康网: http://www.aicareyou.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://bober.cnblogs.com/
CARE健康网: http://www.aicareyou.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步