General purpose implemention of the application Context interface for general application use. This class should be used in place of the original Context class.
Inheritance: NVelocity.Context.AbstractContext
示例#1
1
        public void ProcessRequest(HttpContext context)
        {
            DataBooks book=new DataBooks();
            book.name = context.Request["bookname"];
            book.type = context.Request["booktype"];
            if(book.name!=null)
                bookcollector.Add(book);

            context.Response.ContentType = "text/html";
            VelocityEngine vltEngine = new VelocityEngine();
            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));//模板文件所在的文件夹
            vltEngine.Init();

            VelocityContext vltContext = new VelocityContext();

            //vltContext.Put("msg", "");
            vltContext.Put("bookcollector", bookcollector);
            vltContext.Put("book", book);

            Template vltTemplate = vltEngine.GetTemplate("Front/ShopingCar.html");//模版文件所在位置

            System.IO.StringWriter vltWriter = new System.IO.StringWriter();
            vltTemplate.Merge(vltContext, vltWriter);
            string html = vltWriter.GetStringBuilder().ToString();
            context.Response.Write(html);
        }
 private static string ApplyTemplate(string template, VelocityContext context)
 {
     VelocityEngine velocity = new VelocityEngine();
     ExtendedProperties props = new ExtendedProperties();
     velocity.Init(props);
     using (var writer = new StringWriter(CultureInfo.CurrentCulture))
     {
         velocity.Evaluate(context, writer, string.Empty, template);
         return writer.GetStringBuilder().ToString();
     }
 }
        /// <summary>
        /// Merge the specified Velocity template with the given model and write
        /// the result to the given Writer.
        /// </summary>
        /// <param name="velocityEngine">VelocityEngine to work with</param>
        /// <param name="templateLocation">the location of template, relative to Velocity's resource loader path</param>
        /// <param name="encoding">encoding the encoding of the template file</param>
        /// <param name="model">the Hashtable that contains model names as keys and model objects</param>
        /// <param name="writer">writer the TextWriter to write the result to</param>
        /// <exception cref="VelocityException">thrown if any exception is thrown by the velocity engine</exception>		
        public static void MergeTemplate(
            VelocityEngine velocityEngine, string templateLocation, string encoding, Hashtable model, TextWriter writer) {

            try {
                VelocityContext velocityContext = new VelocityContext(model);
                velocityEngine.MergeTemplate(templateLocation, encoding, velocityContext, writer);
            } catch (VelocityException) {
                throw;
            } catch (Exception ex) {
                throw new VelocityException(ex.ToString(), ex);
            }
        }
 public static string FormatText(string templateText, IDictionary<string,object> values)
 {
     var nvelocityContext = new VelocityContext();
     foreach (var tagValue in values)
         nvelocityContext.Put(tagValue.Key, tagValue.Value);
     return FormatText(templateText, nvelocityContext);
 }
        public static string RenderView(this HtmlHelper html, string viewName, string sectionName, IDictionary parameters)
        {
            if (!string.IsNullOrEmpty(sectionName))
            {
                viewName += ":" + sectionName;
            }

            var velocityView = html.ViewContext.View as NVelocityView;
            if (velocityView == null) throw new InvalidOperationException("The RenderView extension can only be used from views that were created using NVelocity.");

            var newContext = velocityView.Context;
            if (parameters != null && parameters.Keys.Count > 0)
            {
                // Clone the existing context and then add the custom parameters
                newContext = new VelocityContext();
                foreach (var key in velocityView.Context.Keys)
                {
                    newContext.Put((string)key, velocityView.Context.Get((string)key));
                }
                foreach (var key in parameters.Keys)
                {
                    newContext.Put((string)key, parameters[key]);
                }
            }

            // Resolve the template and render it. The partial resource loader takes care of validating
            // the view name and extracting the partials.
            var template = velocityView.Engine.GetTemplate(viewName);
            using (var writer = new StringWriter())
            {
                template.Merge(newContext, writer);
                return writer.ToString();
            }
        }
示例#6
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/html";

            string username = context.Request.Form["username"];
            string password = context.Request.Form["password"];

            if (string.IsNullOrEmpty(username) && string.IsNullOrEmpty(password))
            {

                VelocityEngine vltEngine = new VelocityEngine();
                vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
                vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));//模板文件所在的文件夹
                vltEngine.Init();

                VelocityContext vltContext = new VelocityContext();
                //vltContext.Put("p", person);//设置参数,在模板中可以通过$data来引用
                vltContext.Put("username", "");
                vltContext.Put("password", "");
                vltContext.Put("msg", "");

                Template vltTemplate = vltEngine.GetTemplate("Front/login.html");//模版文件所在位置

                System.IO.StringWriter vltWriter = new System.IO.StringWriter();
                vltTemplate.Merge(vltContext, vltWriter);

                string html = vltWriter.GetStringBuilder().ToString();
                context.Response.Write(html);
            }
            else
            {
                if (dataaccess(username, password))
                {
                    context.Session["username"] = username;
                    context.Response.Redirect("Index.ashx");
                }
                else
                {

                    VelocityEngine vltEngine = new VelocityEngine();
                    vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
                    vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));//模板文件所在的文件夹
                    vltEngine.Init();

                    VelocityContext vltContext = new VelocityContext();
                    //vltContext.Put("p", person);//设置参数,在模板中可以通过$data来引用
                    vltContext.Put("username", username);
                    vltContext.Put("password", password);
                    vltContext.Put("msg", "用户名密码错误");

                    Template vltTemplate = vltEngine.GetTemplate("Front/login.html");//模版文件所在位置

                    System.IO.StringWriter vltWriter = new System.IO.StringWriter();
                    vltTemplate.Merge(vltContext, vltWriter);

                    string html = vltWriter.GetStringBuilder().ToString();
                    context.Response.Write(html);
                }
            }
        }
示例#7
0
        /// <summary>
        /// This test uses the previously created velocity engine
        /// </summary>
        public void ExecuteMethodUntilSignal2()
        {
            startEvent.WaitOne(int.MaxValue, false);

            while(!stopEvent.WaitOne(0, false))
            {
                StringWriter sw = new StringWriter();

                VelocityContext c = new VelocityContext();
                c.Put("x", new Something());
                c.Put("items", items);

                bool ok = velocityEngine.Evaluate(c, sw,
                                                  "ContextTest.CaseInsensitive",
                                                  @"
                    #foreach($item in $items)
                        $item,
                    #end

                    $x.Print('hey') $x.Contents('test', '1')
                ");

                Assert.IsTrue(ok, "Evaluation returned failure");
                Assert.AreEqual("a,b,c,d,heytest,1", Normalize(sw));
            }
        }
示例#8
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NVelocityView"/> class.
 /// </summary>
 /// <param name="template">The template.</param>
 /// <param name="viewData">The view data.</param>
 /// <param name="engine">The engine.</param>
 public NVelocityView(Template template, ViewDataDictionary viewData, VelocityEngine engine)
 {
     _context = new VelocityContext();
     _template = template;
     _engine = engine;
     ViewData = viewData;
 }
        public string RenderTemplate(string masterPage, string templateName, IDictionary<string, object> data)
        {
            if (string.IsNullOrEmpty(templateName))
            {
                throw new ArgumentException("The \"templateName\" parameter must be specified", "templateName");
            }

            var name = !string.IsNullOrEmpty(masterPage)
                 ? masterPage : templateName;

            var engine = new VelocityEngine();
            var props = new ExtendedProperties();
            props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, _templatesPath);
            engine.Init(props);
            var template = engine.GetTemplate(name);
            template.Encoding = Encoding.UTF8.BodyName;
            var context = new VelocityContext();

            var templateData = data ?? new Dictionary<string, object>();
            foreach (var key in templateData.Keys)
            {
                context.Put(key, templateData[key]);
            }

            if (!string.IsNullOrEmpty(masterPage))
            {
                context.Put("childContent", templateName);
            }

            using (var writer = new StringWriter())
            {
                engine.MergeTemplate(name, context, writer);
                return writer.GetStringBuilder().ToString();
            }
        }
		protected virtual string GetGenericTemplateText(string templateFileName, Hashtable data) {

			string fullTemplateFileName = TemplatePath + templateFileName;

			//Check file
			if (!IsValidTemplate(fullTemplateFileName)) {
				return null;
			}

			InitialiseNVelocity(templateFileName);				
			VelocityContext context = new VelocityContext();

			foreach (object key in data.Keys) {
				AddData(key.ToString(), data[key], context);
			}

			//Standard things used in email
			AddStandardItems(context);

			StringWriter writer = new StringWriter();

			Template template = null;

			try {
				template = Velocity.GetTemplate(templateFileName);
				template.Merge(context, writer);

				return writer.ToString();

			} catch (Exception e) {
				LogManager.GetLogger(GetType()).Error(e);
			}

			return null;
		}
示例#11
0
        public static void CreateCode(string filepath, string outputpath, VelocityContext context)
        {
            StreamWriter writer=null;
            try
            {
                VelocityEngine engine = null;//new VelocityEngine();
                ExtendedProperties extendedProperties = new ExtendedProperties();
                //extendedProperties.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, filepath.Substring(0, filepath.LastIndexOf("\\")));

                engine.Init(extendedProperties);
                //Template template = engine.GetTemplate(filepath.Substring(filepath.LastIndexOf("\\")+1));
                //FileStream fos = new FileStream(outputpath + "\\1.vm", FileMode.Create);
                //writer = new StreamWriter(fos);
                //template.Merge(context, writer);
                //writer.Flush();
                //writer.Close();
                StringWriter output=new StringWriter();
                engine.Evaluate(context, output, "", filepath);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (writer != null)
                {
                    writer.Close();
                }
            }
        }
示例#12
0
        public string  ProcessTemplate(string templateValue, Hashtable context)
        {
 	        VelocityContext vContext = new VelocityContext(context);
            
            //foreach(string key in context.Keys)
            //    vContext.Put(key, context[key]);
 
            string result = null;

            if (!string.IsNullOrEmpty(templateValue))
            {
                System.IO.StringWriter writer = new System.IO.StringWriter();
                try
                {
                    if (Velocity.Evaluate(vContext, writer, "", templateValue))
                        result = writer.ToString();
                }
                catch (ParseErrorException pe)
                {
                    return pe.Message;
                }
                catch (MethodInvocationException mi)
                {
                    return mi.Message;
                }
                
            }
            return result;
        }
        /// <summary>The format.</summary>
        /// <param name="text">The text.</param>
        /// <param name="items">The items.</param>
        /// <returns>The format.</returns>
        /// <exception cref="TemplateException"></exception>
        public string Format(string text, Dictionary<string, object> items)
        {
            try
            {
                VelocityContext velocityContext = new VelocityContext();

                if (items != null)
                {
                    foreach (var pair in items)
                    {
                        velocityContext.Put(pair.Key, pair.Value);
                    }
                }

                StringWriter sw = new StringWriter();
                VelocityEngine velocityEngine = new VelocityEngine();
                velocityEngine.Init();

                bool ok = velocityEngine.Evaluate(velocityContext, sw, "ContextTest.CaseInsensitive", text);

                if (!ok)
                {
                    throw new TemplateException("Template run error (try adding an extra newline at the end of the file)");
                }

                return sw.ToString();
            }
            catch (ParseErrorException parseErrorException)
            {
                throw new TemplateException(parseErrorException.Message, parseErrorException);
            }
        }
示例#14
0
        /// <summary>
        /// 用data数据填充templateName模板,渲染生成html返回
        /// </summary>
        /// <param name="templateName"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string RenderHtml(string templateName, object data)
        {
            //第一步:Creating a VelocityEngine也就是创建一个VelocityEngine的实例
            VelocityEngine vltEngine = new VelocityEngine();   //也可以使用带参构造函数直接实例
            vltEngine.SetProperty(RuntimeConstants.RESOURCE_LOADER, "file");
            vltEngine.SetProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, System.Web.Hosting.HostingEnvironment.MapPath("~/templates"));//模板文件所在的文件夹
            vltEngine.Init();
            //vltEngine.AddProperty(RuntimeConstants.INPUT_ENCODING, "gb2312");
            //vltEngine.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "gb2312");

            //第二步:Creating the Template加载模板文件
            //这时通过的是Template类,并使用VelocityEngine的GetTemplate方法加载模板
            Template vltTemplate = vltEngine.GetTemplate(templateName);

            //第三步:Merging the template整合模板
            VelocityContext vltContext = new VelocityContext();
            vltContext.Put("Data", data);//设置参数,在模板中可以通过$data来引用

            //第四步:创建一个IO流来输出模板内容推荐使用StringWriter(因为template中以string形式存放)
            System.IO.StringWriter vltWriter = new System.IO.StringWriter();
            vltTemplate.Merge(vltContext, vltWriter);

            string html = vltWriter.GetStringBuilder().ToString();
            return html;
        }
示例#15
0
		/// <exception cref="ArgumentException"></exception>
		string BuildEmail(string templateName, IDictionary<string, object> viewdata)
		{
			if (viewdata == null)
			{
				throw new ArgumentNullException("viewData");
			}

			if (string.IsNullOrEmpty(templateName))
			{
				throw new ArgumentException("TemplateName");
			}

			var template = ResolveTemplate(templateName);

			var context = new VelocityContext();

			foreach (var key in viewdata.Keys)
			{
				context.Put(key, viewdata[key]);
			}

			using (var writer = new StringWriter())
			{
				template.Merge(context, writer);
				return writer.ToString();
			}
		}
示例#16
0
        public static string Format(HttpContext context, string pattern, VelocityContext velocitycontext)
        {
                using (var writer = new StringWriter())
                {
                    try
                    {
                        if (!_isInitialized)
                        {
                            var props = new ExtendedProperties();
                            props.AddProperty("file.resource.loader.path",
                                              new ArrayList(new[]
                                                                {
                                                                    ".",
                                                                    Path.Combine(
                                                                        context.Server.MapPath(feed.HandlerBasePath),
                                                                        "Patterns")
                                                                }));
                            Velocity.Init(props);
                            _isInitialized = true;
                        }
                        //Load patterns
                        var template = Patterns.Get(pattern, () => LoadTemplate(pattern));

                        template.Merge(velocitycontext, writer);
                        return writer.GetStringBuilder().ToString();

                    }
                    catch (Exception)
                    {
                        //Format failed some way
                        return writer.GetStringBuilder().ToString();
                    }
                }
        }
示例#17
0
        public void RenderTemplate(string templateName, object model)
        {
            string templateFullPath = applicationInfo.AbsolutizePath("Web/Pages/Templates/" + templateName + ".vm.html");

            ITemplateSource template = new CacheableFileTemplate(
                templateFullPath,
                fileCache);
            string templateText = template.GetTemplate();

            VelocityEngine velocity = new VelocityEngine();
            velocity.Init();

            VelocityContext velocityContext = new VelocityContext();
            velocityContext.Put("m", model);
            velocityContext.Put("h", this);

            using (StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture))
            {
                if (false == velocity.Evaluate(velocityContext, stringWriter, null, templateText))
                    throw new InvalidOperationException("Template expansion failed");

                writer.InnerWriter.Write(stringWriter.ToString());
            }

            writer.WriteLine();
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="velocityEngine">The velocity engine</param>
        /// <param name="velocityContext">The current velocity context.</param>
        /// <param name="reportWriter">The report writer</param>
        /// <param name="templatePath">The template path.</param>
        /// <param name="contentType">The content type of the report.</param>
        /// <param name="extension">The extension of the report file.</param>
        /// <param name="helper">The formatting helper class.</param>
        /// <param name="pageSize">The number of test steps displayed in one page.</param>
        public MultipleFilesVtlReportWriter(VelocityEngine velocityEngine, VelocityContext velocityContext, IReportWriter reportWriter, string templatePath, string contentType, string extension, FormatHelper helper, int pageSize)
            : base(velocityEngine, velocityContext, reportWriter, templatePath, contentType, extension, helper)
        {
            if (pageSize <= 0)
                throw new ArgumentOutOfRangeException("size", "Must be greater than zero.");

            this.pageSize = pageSize;
        }
示例#19
0
 static IContext CreateNVelocityContext(IDictionary<string, object> items)
 {
     IDictionary internalDictionary = new Hashtable();
     foreach (var key in items.Keys)
         internalDictionary.Add(key, items[key]);
     var context = new VelocityContext(new Hashtable(internalDictionary));
     return context;
 }
示例#20
0
        /// <summary>
        /// The parse.
        /// </summary>
        /// <param name="template">
        /// The template.
        /// </param>
        /// <param name="model">
        /// The model.
        /// </param>
        /// <returns>
        /// The System.String.
        /// </returns>
        public string Parse(string template, dynamic model)
        {
            var ctx = new VelocityContext();
            ctx.Put("Model", model);
            var writer = new StringWriter();
            VelocityEngine.Evaluate(ctx, writer, null, template);

            return writer.GetStringBuilder().ToString();
        }
 public String GetTemplatedDocument(String templateName, IDictionary<String, String> data)
 {
     Template template = _engine.GetTemplate(templateName);
     VelocityContext context = new VelocityContext();
     data.Keys.ToList().ForEach(k => context.Put(k, data[k]));
     StringWriter writer = new StringWriter();
     template.Merge(context, writer);
     return writer.ToString();
 }
示例#22
0
 private static VelocityContext GetContextFromDictionary(Dictionary<string, object> param)
 {
     VelocityContext context = new VelocityContext();
     foreach (KeyValuePair<string, object> pair in param)
     {
         context.Put(pair.Key, pair.Value);
     }
     return context;
 }
 public string TransformTemplate(IDictionary<string,object> templateData, string template)
 {
     if (templateData == null)
         throw new ArgumentNullException("templateData");
     var context = new VelocityContext();
     foreach(var dataItem in templateData)
         context.Put(dataItem.Key, dataItem.Value);
     return ApplyTemplate(template, context);
 }
示例#24
0
 private VelocityContext GetContext(Dictionary<string, object> data)
 {
     var context = new VelocityContext();
     foreach (KeyValuePair<string, object> pair in data)
     {
         context.Put(pair.Key, pair.Value);
     }
     return context;
 }
 public static string AsNVelocityTemplate(this Dictionary<string, object> inputs, TemplateEnum template)
 {
     var context = new VelocityContext();
     foreach (var input in inputs)
     {
         context.Put(input.Key, input.Value);
     }
     return NVelocityConfig.MergeTemplate(context, template);
 }
示例#26
0
 public static string Fill(this string s, object param)
 {
     var context = new VelocityContext();
     foreach (var prop in param.GetType().GetProperties())
         context.Put(prop.Name, prop.GetValue(param, null));
     using (var tw = new StringWriter()) {
         engine.Evaluate(context, tw, "", s);
         return tw.ToString();
     }
 }
        private static IContext GetContext(IEnumerable<KeyValuePair<string, object>> data)
        {
            var context = new VelocityContext();
            foreach (var d in data)
            {
                context.Put(d.Key, d.Value);
            }

            return context;
        }
 protected override void BeforeFormat(INoticeMessage message, ITagValue[] tagsValues)
 {
     _nvelocityContext = new VelocityContext();
     _nvelocityContext.AttachEventCartridge(new EventCartridge());
     _nvelocityContext.EventCartridge.ReferenceInsertion += EventCartridgeReferenceInsertion;
     foreach (var tagValue in tagsValues)
     {
         _nvelocityContext.Put(tagValue.Tag, tagValue.Value);
     }
     base.BeforeFormat(message, tagsValues);
 }
示例#29
0
        private IContext CreateVelocityContext(object model)
        {
            var velocityContext = new VelocityContext();

            if (model != null)
                velocityContext.Put("model", model);

            velocityContext.Put("vel", this);
            velocityContext.Put("html", new HtmlHelper());

            return velocityContext;
        }
示例#30
0
 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();
 }
示例#31
0
    public static void  Main(System.String[] args)
    {
        // first, we init the runtime engine.  Defaults are fine.
        try {
            Velocity.Init();
        } catch (System.Exception e) {
            System.Console.Out.WriteLine("Problem initializing Velocity : " + e);
            return;
        }

        // lets make a Context and put data into it
        VelocityContext context = new VelocityContext();

        context.Put("name", "Velocity");
        context.Put("project", "Jakarta");

        // lets render a template
        StringWriter writer = new StringWriter();

        try {
            Velocity.MergeTemplate("example2.vm", context, writer);
        } catch (System.Exception e) {
            System.Console.Out.WriteLine("Problem merging template : " + e);
        }

        System.Console.Out.WriteLine(" template : " + writer.GetStringBuilder().ToString());

        // lets dynamically 'create' our template
        // and use the evaluate() method to render it
        System.String s = "We are using $project $name to render this.";
        writer = new StringWriter();
        try {
            Velocity.Evaluate(context, writer, "mystring", s);
        } catch (ParseErrorException pee) {
            // thrown if something is wrong with the
            // syntax of our template string
            System.Console.Out.WriteLine("ParseErrorException : " + pee);
        } catch (MethodInvocationException mee) {
            // thrown if a method of a reference
            // called by the template
            // throws an exception. That won't happen here
            // as we aren't calling any methods in this
            // example, but we have to catch them anyway
            System.Console.Out.WriteLine("MethodInvocationException : " + mee);
        } catch (System.Exception e) {
            System.Console.Out.WriteLine("Exception : " + e);
        }

        System.Console.Out.WriteLine(" string : " + writer.GetStringBuilder().ToString());
    }
    public Example1(System.String templateFile)
    {
        try {
            /*
             * setup
             */
            Velocity.Init("nvelocity.properties");

            /*
             *  Make a context object and populate with the data.  This
             *  is where the Velocity engine gets the data to resolve the
             *  references (ex. $list) in the template
             */
            VelocityContext context = new VelocityContext();
            context.Put("list", Names);

            /*
             *  get the Template object.  This is the parsed version of your
             *  template input file.  Note that getTemplate() can throw
             *   ResourceNotFoundException : if it doesn't find the template
             *   ParseErrorException : if there is something wrong with the VTL
             *   Exception : if something else goes wrong (this is generally
             *        indicative of as serious problem...)
             */
            Template template = null;

            try {
                template = Velocity.GetTemplate(templateFile)
                ;
            } catch (ResourceNotFoundException) {
                System.Console.Out.WriteLine("Example1 : error : cannot find template " + templateFile);
            } catch (ParseErrorException pee) {
                System.Console.Out.WriteLine("Example1 : Syntax error in template " + templateFile + ":" + pee);
            }

            /*
             *  Now have the template engine process your template using the
             *  data placed into the context.  Think of it as a  'merge'
             *  of the template and the data to produce the output stream.
             */
            if (template != null)
            {
                template.Merge(context, System.Console.Out);
            }
        } catch (System.Exception e) {
            System.Console.Out.WriteLine(e);
        }
    }
        public static StringWriter GetFileText(string path, Hashtable ht)
        {
            if (String.IsNullOrEmpty(path))
            {
                throw new ArgumentNullException("Argument Excception!");
            }
            try
            {
                string tmpPath  = path.Substring(0, path.LastIndexOf(@"\"));
                string filePath = path.Substring(path.LastIndexOf(@"\") + 1);

                VelocityEngine     velocity = new VelocityEngine();
                ExtendedProperties props    = new ExtendedProperties();
                props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "file");
                props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, tmpPath);
                props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, true);
                props.AddProperty(RuntimeConstants.INPUT_ENCODING, "utf-8");
                props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8");
                velocity.Init(props);

                Template temp    = velocity.GetTemplate(filePath);
                IContext context = new VelocityContext();
                foreach (string key in ht.Keys)
                {
                    context.Put(key, ht[key]);
                }
                StringWriter writer = new StringWriter();
                temp.Merge(context, writer);

                return(writer);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#34
0
 public void BeforeEachTest()
 {
     // Reset the context
     context = new VelocityContext();
 }