Пример #1
0
        static void Basic()
        {
            StringTemplate stringTemplate = new StringTemplate("hello <data>");
            stringTemplate.Add("data", "world");

            Console.WriteLine(stringTemplate.Render());
        }
Пример #2
0
 //= null
 public static string Apply(string template, Dictionary<string, object> @params )
 {
     StringTemplate st = new StringTemplate(template);
     AddDefaultAttributes(st);
     if (@params != null) AddAttributes(st, @params);
     return st.ToString();
 }
        public StringTemplateView(StringTemplate template)
        {
            //null check
            if (template == null) throw new ArgumentNullException("template");

            //set template
            _template = template;
        }
        public StringTemplateView(string templateString)
        {
            //null check
            if (string.IsNullOrEmpty(templateString)) throw new ArgumentNullException("templateString");

            //set template
            _template = new StringTemplate(StringTemplateViewEngine.Group, templateString);
        }
Пример #5
0
 static void TestStringTemplate()
 {
     string text = "$entity.Account$您好!<br/> 请点击连接重置您的秘密<br><a href=\"$url$\">$url$</a>";
     StringTemplate st = new StringTemplate(text);
     st.SetAttribute("entity", new Demo() { Account = "fengpengbin" });
     st.SetAttribute("url", "http://www.aporeboy.com/vail");
     Console.WriteLine(st.ToString());
 }
        public string Populate(ParameterSet parameterSet)
        {
            var t = new StringTemplate()
            {
                Text = Text,
            };

            return t.Populate(parameterSet.Parameters);
        }
Пример #7
0
        public static string Generate(string input, Dictionary<string, object> data)
        {
            var template = new StringTemplate(input);

            foreach (var d in data)
                template.SetAttribute(d.Key, d.Value);

            string result = template.ToString();
            ;
            template.Reset();
            data.Clear();
            template = null;
            return result;
        }
Пример #8
0
        /// <summary>
        /// 把实体的数据融合到模板中,并返回融合结果,会保留数据的空格,换行,减少空间占用
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="entity">实体类</param>
        /// <param name="templateNames">模板名称,可以有多级,多级用“.”分隔,对于小模板只需提供节点名称就可以了</param>
        /// <returns></returns>
        public string EntityToStr <T>(T entity, string templateName)
        {
            StringTemplate stringTemplate = new StringTemplate(_cache[templateName]);

            if (_attrRendererMap.ContainsKey(templateName))
            {
                foreach (KeyValuePair <Type, IAttributeRenderer> keyVal in _attrRendererMap[templateName])
                {
                    stringTemplate.RegisterRenderer(keyVal.Key, keyVal.Value);
                }
            }
            stringTemplate.SetAttribute("entity", entity);
            return(stringTemplate.ToString().Trim());
        }
Пример #9
0
        public Template(string name)
        {
            var assembly = Assembly.GetCallingAssembly();
            var stream = assembly.GetManifestResourceStream(name);

            if (stream == null)
            {
                var candidates = string.Join(", ", assembly.GetManifestResourceNames());
                throw new FileNotFoundException(string.Format("cannot find embedded resource {0} in assembly {1}, candidate templates include [{2}]", name, assembly.GetName(), candidates));
            }

            var contents = new StreamReader(stream).ReadToEnd();
            template = new StringTemplate(contents);
        }
Пример #10
0
        public string Export(IList dbObjects, string templatePath)
        {
            StringTemplate template = new StringTemplate();

            var text = File.ReadAllText(templatePath);

            //remove all tabs - it used only to format template code, not output code
            template.Template = text.Replace("\t", "");

            template.SetAttribute("dbObjects", dbObjects);
            var output = template.ToString();

            return output;
        }
Пример #11
0
        public virtual void WriteTreeTestFile(string parserName, string treeParserName, string lexerName, string parserStartRuleName, string treeParserStartRuleName)
        {
            StringTemplate outputFileST   = GetTreeTestFileTemplate();
            StringTemplate createParserST = GetParserCreationTemplate();

            outputFileST.SetAttribute("createParser", createParserST);
            outputFileST.SetAttribute("parserName", parserName);
            outputFileST.SetAttribute("treeParserName", treeParserName);
            outputFileST.SetAttribute("lexerName", lexerName);
            outputFileST.SetAttribute("parserStartRuleName", parserStartRuleName);
            outputFileST.SetAttribute("treeParserStartRuleName", treeParserStartRuleName);

            WriteTestFile(outputFileST.ToString());
        }
        public void StringTemplatStringAngleBracketsTest()
        {
            target = new StringTemplate("<hello> <world>");
            target.Add("hello", "hello");
            target.Add("<world>", "world");

            Assert.AreEqual(2, target.ElementData.Count);
            Assert.IsTrue(target.ElementData.ContainsKey("hello"));
            Assert.AreEqual("hello", target.ElementData["hello"]);
            Assert.IsTrue(target.ElementData.ContainsKey("world"));
            Assert.AreEqual("world", target.ElementData["world"]);

            Assert.AreEqual("hello world", target.Render());
        }
Пример #13
0
        public void Test_HiddenMembers()
        {
            DerivedValues values = new DerivedValues {
                X = "hello", Y = 42
            };
            BaseValues bValues = values;

            bValues.X = 42;

            string expected = $"{values.X} {values.Y}";
            string actual   = StringTemplate.Format("{X} {Y}", values);

            Assert.Equal(expected, actual);
        }
Пример #14
0
        public void EvalTemplateTest()
        {
            var obj = new { Name = "Jane" };

            var template = new StringTemplate("Hello {name}");

            Assert.AreEqual("Hello World", template.Format(new { name = "World" }));

            template = new StringTemplate("{greeting} {name}");
            Assert.AreEqual("Hello World", template.Format(new { greeting = "Hello", name = "World" }));

            var value = "Hello {name}".Tmpl(new { name = "World" });

            Assert.AreEqual("Hello World", value);
        }
Пример #15
0
        private string GetCurrentFilePath()
        {
            var result = StringTemplate.Format(CultureInfo.CurrentCulture, FilePathTemplate,
                                               delegate(string name, out object?value)
            {
                if (!_systemValueProvider.TryGetArgumentValue(name, out value))
                {
                    value = "{" + name + "}";
                }

                return(true);
            });

            return(result);
        }
Пример #16
0
    private string GetBreakUpText(Client client1, Client client2)
    {
        if (client1.RelationshipHealth <= 0 && client2.RelationshipHealth <= 0)
        {
            return(StringTemplate.ParseAndReplaceTemplate(mutualBreakUp, client1, client2));
        }

        if (client1.RelationshipHealth <= 0)
        {
            return(StringTemplate.ParseAndReplaceTemplate(oneSidedBreakUp, client2, client1));
        }

        // Must be client2 that broke up, return that description.
        return(StringTemplate.ParseAndReplaceTemplate(oneSidedBreakUp, client1, client2));
    }
Пример #17
0
        /// <inheritDoc/>
        public override string ExportPublicationToHtmlDocument(Publication publication, string templatePath, string htmlPath)
        {
            StringTemplate stringTemplate = LoadHtmlTemplate(publication, templatePath);

            JournalArticle journalArticle = publication.JournalArticle;

            stringTemplate.SetAttribute("journaltitle", journalArticle.JournalTitle);
            stringTemplate.SetAttribute("number", journalArticle.Number);
            stringTemplate.SetAttribute("pages", journalArticle.FromPage == journalArticle.ToPage ?
                                        (journalArticle.FromPage + "") :
                                        (journalArticle.FromPage + " - " + journalArticle.ToPage));
            stringTemplate.SetAttribute("identification", journalArticle.ISSN);

            return(SaveHtmlDocument(stringTemplate, htmlPath));
        }
Пример #18
0
        public void StringTemplateValueConverter_Works_With_FormatProvider_And_Return_Type_Change()
        {
            var ticks  = 1337;
            var values = new ValuesForFormatProvider {
                DateTimeConvertedToTicks = new DateTime(ticks)
            };
            var formatProvider = new NumberFormatInfo {
                CurrencySymbol = "piasses", CurrencyPositivePattern = 3                                         /* symbol at the end, with a space */
            };
            var expectedFormattedTicks = string.Format(formatProvider, "{0:C0}", ticks);

            var actual = StringTemplate.Format("{DateTimeConvertedToTicks:C0}", values, true, formatProvider);

            Assert.Equal(expectedFormattedTicks, actual);
        }
Пример #19
0
        public virtual void AddElseIfSubtemplate(ASTExpr conditionalTree,
                                                 StringTemplate subtemplate)
        {
            if (_elseIfSubtemplates == null)
            {
                _elseIfSubtemplates = new List <ElseIfClauseData>();
            }
            ElseIfClauseData d = new ElseIfClauseData()
            {
                expr = conditionalTree,
                st   = subtemplate
            };

            _elseIfSubtemplates.Add(d);
        }
Пример #20
0
        public void Generate(string database, string table, string className, string rutaDestino, string rutaTemplate)
        {
            StreamReader sr       = new StreamReader(rutaTemplate);
            string       template = sr.ReadToEnd();

            sr.Close();
            TemplateContent content      = GenerateContent(database, table, className);
            string          renderedText = StringTemplate.Render(template, content);

            // Write the string array to a new file
            using (StreamWriter outputFile = new StreamWriter(rutaDestino))
            {
                outputFile.Write(renderedText);
            }
        }
        private bool DocShortCut(KeyEventArgs e)
        {
            var _snippet = CodeLib.Instance.CodeSnippets.GetByShortCut(e.KeyData).FirstOrDefault();

            if (_snippet != null)
            {
                StringTemplate stringtemplate = new StringTemplate();
                string         result         = stringtemplate.Format(_snippet.GetCode(), _tb.SelectedText);
                _tb.SelectedText = result;
                _tb.Focus();
                return(true);
            }

            return(false);
        }
Пример #22
0
        string WriteRootConstants(ShaderOutputContext ctx, TemplateGroup group)
        {
            StringBuilder          res    = new StringBuilder();
            List <UniformConstant> consts = ctx.UniformConstants;

            foreach (var c in consts)
            {
                StringTemplate cBufferTemplate = group.GetInstanceOf("uniformConstant");
                cBufferTemplate.Add("name", c.Name);
                cBufferTemplate.Add("reg", c.Bindpoint.Reg.ToString());
                cBufferTemplate.Add("space", c.Bindpoint.Space.ToString());
                res.Append(cBufferTemplate.Render() + '\n');
            }
            return(res.ToString());
        }
Пример #23
0
        public static string StringTemp(string filename, object data)
        {
            var path     = HttpContext.Current.Server.MapPath("~/");
            var filepath = Path.Combine(path, filename);
            var result   = string.Empty;

            using (StreamReader reader = new StreamReader(filepath))
            {
                string         sttemplate = reader.ReadToEnd();
                StringTemplate template   = new StringTemplate(sttemplate);
                template.SetAttribute("item", data);
                result = template.ToString();
            }
            return(result);
        }
Пример #24
0
        string WriteVertexLayouts(ShaderOutputContext ctx, TemplateGroup group)
        {
            List <VertexLayoutMember> vertexLayoutMembers = ctx.VertLayout.Members;
            StringBuilder             res = new StringBuilder();

            foreach (var vlm in vertexLayoutMembers)
            {
                StringTemplate vertexLayoutMemberTemplate = group.GetInstanceOf("vlayoutmember");
                vertexLayoutMemberTemplate.Add("semantic", m_semanticToKiotoSemantic[vlm.Semantic]);
                vertexLayoutMemberTemplate.Add("index", vlm.SemanticIndex);
                vertexLayoutMemberTemplate.Add("format", m_typeToKiotoFormat[vlm.Type]);
                res.Append(vertexLayoutMemberTemplate.Render() + '\n');
            }
            return(res.ToString());
        }
Пример #25
0
        public override string RenderContent()
        {
            int recordCount = 0;
            IEnumerable <IDictionary <string, object> > entities = GetData();

            if (entities.IsNullOrEmpty())
            {
                return(EmptyTemplate);
            }
            StringBuilder result = new StringBuilder();

            if (AllowPaging)
            {
                Pager.TargetId = Id;
                if (PagerPosition == PagerPosition.Top || PagerPosition == PagerPosition.Both)
                {
                    result.AppendLine(Pager.Render());
                }
            }
            Pager.RecordCount = recordCount;
            var content = new List <string>();

            entities.ForEach((entity) =>
            {
                StringTemplate query = new StringTemplate(ItemTemplate);
                query.SetAttribute(entity);
                content.Add(query.ToString());
            });
            result.AppendLine(string.Join(SeperatorTemplate, content.ToArray()));
            if (AllowPaging)
            {
                if (PagerPosition == PagerPosition.Bottom || PagerPosition == PagerPosition.Both)
                {
                    result.AppendLine(Pager.Render());
                }
            }
            if (SubContainerTag != SubContainerTag.none)
            {
                var subContainer = new TagBuilder(SubContainerTag.ToString());
                if (!SubContainerCssClass.IsNullOrEmpty())
                {
                    subContainer.AddCssClass(SubContainerCssClass);
                }
                subContainer.InnerHtml = result.ToString();
                return(subContainer.ToString());
            }
            return(result.ToString());
        }
Пример #26
0
        public void StringTemplateValueConverter_Works_With_FormatProvider()
        {
            var values = new ValuesForFormatProvider {
                DateTimeConvertedWithFortyTwoDaysAdded = DateTime.Today
            };
            var expectedConvertedDate = values.DateTimeConvertedWithFortyTwoDaysAdded + TimeSpan.FromDays(42);

            var cultures = new[] { CultureInfo.InvariantCulture, null, new CultureInfo("fr-FR") };

            foreach (var culture in cultures)
            {
                string expected = expectedConvertedDate.ToString("D", culture);
                string actual   = StringTemplate.Format("{DateTimeConvertedWithFortyTwoDaysAdded:D}", values, true, culture);
                Assert.Equal(expected, actual);
            }
        }
Пример #27
0
            public override string TransformRange(string stringToTransform, string commandContent, Dictionary <string, string> variables)
            {
                var    split        = commandContent.Split(',').ToList();
                string variableName = split[0];
                string value        = split[1];

                if (variables.ContainsKey(variableName))
                {
                    if (variables[variableName] == value)
                    {
                        return(stringToTransform);
                    }
                    return("");
                }
                return(StringTemplate.CreateIfBlock(variableName, value, stringToTransform)); // The variable is not set yet, so we need to keep the if command until it is ready to be processed.
            }
        public void ListIterator_SingleItem()
        {
            // Arrange
            var template = new StringTemplate("$user:{ u | $u.FirstName$ is a super user? $u.IsSuperUser$. But his last name is $u.LastName$.}$");
            template.SetAttribute("user", new
                                              {
                                                  FirstName = "Ian",
                                                  LastName = "Robinson",
                                                  IsSuperUser = false
                                              });
            // Act
            var renderedText = template.ToString();

            // Assert
            Assert.AreEqual(renderedText, "Ian is a super user? False. But his last name is Robinson.");
        }
        public void ListIterator_MultipleItems()
        {
            // Arrange
            var template = new StringTemplate("$user:{ u | <p>$u.FirstName$ is a super user? $u.IsSuperUser$. But his last name is $u.LastName$.</p>}$");
            var user = new { FirstName = "Ian", LastName = "Robinson", IsSuperUser = false };
            var userList = (new[] {user}).ToList();
            userList.Add(new { FirstName = "Gertrude", LastName = "Schmuckbucket", IsSuperUser = true});

            template.SetAttribute("user", userList);

            // Act
            var renderedText = template.ToString();

            // Assert
            Assert.AreEqual(renderedText, "<p>Ian is a super user? False. But his last name is Robinson.</p><p>Gertrude is a super user? True. But his last name is Schmuckbucket.</p>");
        }
        /// <inheritDoc/>
        public override string ExportPublicationToHtmlDocument(Publication publication, string templatePath, string htmlPath)
        {
            StringTemplate stringTemplate = LoadHtmlTemplate(publication, templatePath);

            ConferenceArticle conferenceArticle = publication.ConferenceArticle;

            stringTemplate.SetAttribute("booktitle", conferenceArticle.BookTitle);
            stringTemplate.SetAttribute("address", conferenceArticle.Address);
            stringTemplate.SetAttribute("publisher", conferenceArticle.Publisher);
            stringTemplate.SetAttribute("pages", conferenceArticle.FromPage == conferenceArticle.ToPage ?
                                        (conferenceArticle.FromPage + "") :
                                        (conferenceArticle.FromPage + " - " + conferenceArticle.ToPage));
            stringTemplate.SetAttribute("identification", !string.IsNullOrEmpty(conferenceArticle.ISBN) ?
                                        ("ISBN " + conferenceArticle.ISBN) : ("ISSN" + conferenceArticle.ISSN));

            return(SaveHtmlDocument(stringTemplate, htmlPath));
        }
Пример #31
0
        public void FormLetterTest()
        {
            var letter = new Letter()
            {
                Greeting = "Hello"
            };

            letter.Recipient.Name = "Johnny";
            letter.Sent           = DateTime.Parse("3/8/2016");
            letter.Revision       = 12345;

            var formLetter = new StringTemplate(My.Resources.FormLetter);
            var value      = formLetter.Format(letter);

            Debug.WriteLine(value);
            Assert.IsTrue(value.Contains("Hello Johnny 5.0,"));
        }
Пример #32
0
        private static string GetRepositoryAbsolutePath(RepositoryInfo repo,
                                                        string pathTemplate = DefaultRepoPathTemplate)
        {
            if (string.IsNullOrEmpty(pathTemplate))
            {
                pathTemplate = DefaultRepoPathTemplate;
            }

            var relativeRepoPath = StringTemplate.Compile(pathTemplate, new Dictionary <string, string>
            {
                { "ProviderName", ProviderName },
                { "Namespace", repo.Namespace.ToLowerInvariant() },
                { "Slug", repo.Slug.ToLowerInvariant() }
            });

            return(Path.GetFullPath(relativeRepoPath));
        }
        public void StringTemplateConstructorTemplateNullTest()
        {
            try
            {
                target = new StringTemplate(null);

                Assert.Fail("No exception thrown");
            }
            catch (ArgumentNullException exception)
            {
                Assert.AreEqual("template", exception.ParamName);
            }
            catch
            {
                Assert.Fail("ArgumentNullException not thrown");
            }
        }
Пример #34
0
        public static string Generate(string input, Dictionary <string, object> data)
        {
            var template = new StringTemplate(input);

            foreach (var d in data)
            {
                template.SetAttribute(d.Key, d.Value);
            }

            string result = template.ToString();

            ;
            template.Reset();
            data.Clear();
            template = null;
            return(result);
        }
Пример #35
0
        public void DictionaryTest()
        {
            var dict = new Dictionary <string, object>
            {
                { "Name", "World" },
                { "Greeting", "Hello" }
            };
            var template = new StringTemplate("{Greeting} {Name}");
            var actual   = template.Format(dict);

            Assert.AreEqual("Hello World", actual);

            template = new StringTemplate("{Test.Greeting} {Test.Name}");
            var args = new { Test = dict };

            actual = template.Format(args);
            Assert.AreEqual("Hello World", actual);
        }
Пример #36
0
    static void WriteLevel(WebGLLevel level, Stream outStream)
    {
        if (EditorUtility.DisplayCancelableProgressBar("Exporting Level", "Writing JSON", 1.0f))
        {
            throw new Exception("User canceled export");
        }

        // Write out JSON
        StringTemplateGroup templateGroup = new StringTemplateGroup("MG", templatePath, typeof(DefaultTemplateLexer));
        StringTemplate      animTemplate  = templateGroup.GetInstanceOf("WebGLLevel");

        animTemplate.SetAttribute("level", level);

        string content = animTemplate.ToString();

        Byte[] bytes = new UTF8Encoding(true).GetBytes(CleanJSON(content));
        outStream.Write(bytes, 0, bytes.Length);
    }
Пример #37
0
        /// <inheritdoc/>
        public override void Parse(DecodedMetar decodedMetar)
        {
            var pressure = new StringBuilder();

            if (decodedMetar.Pressure != null)
            {
                pressure.Append(
                    StringTemplate.Format(
                        strings.PressureDetails,
                        new
                {
                    hectoPascal = Math.Round(decodedMetar.Pressure.GetConvertedValue(Value.Unit.HectoPascal)),
                    mercuryInch = Math.Round(decodedMetar.Pressure.GetConvertedValue(Value.Unit.MercuryInch))
                }, false));
            }
            Label   = strings.PressureLabel;
            Message = pressure.ToString();
        }
Пример #38
0
 private static Package <ITemplate> CreateSingleFile(string name, string ext, string source)
 {
     return(new Package <ITemplate>(new PackageFileTemplate(
                                        new StringTemplate(
                                            StringTemplate.GetVariableTemplate("name") + $".{ext}",
                                            new Variable[] { new Variable("name").Required() }
                                            )
                                        ).UseTemplate(new TextFileTemplate(new StringTemplate(source))))
     {
         Metadata = new PackageMetadata
         {
             Name = name,
             Author = nameof(CodeRunner),
             CreationTime = DateTimeOffset.Now,
             Version = Assembly.GetAssembly(typeof(FileTemplates))?.GetName().Version ?? new Version()
         }
     });
 }
Пример #39
0
        /// <summary>
        /// Enqueues a mail message.
        /// </summary>
        protected virtual async Task EnqueueAsync(ProjectItem project, ContactItem from, ContactItem to, MailMessageItem mailMessage, PropertyDictionary placeholders, CancellationToken cancellationToken)
        {
            Debug.Assert(project != null);
            Debug.Assert(from != null);
            Debug.Assert(to != null);
            Debug.Assert(mailMessage != null);
            Debug.Assert(placeholders != null);

            bool   hasSubject = !string.IsNullOrEmpty(mailMessage.Subject);
            bool   hasContent = !string.IsNullOrEmpty(mailMessage.Body);
            string subject    = null;
            string content    = null;

            if (hasSubject || hasContent)
            {
                placeholders = new PropertyDictionary(placeholders);
                placeholders.AddIfNotExists(StringTemplate.IdentityIdProperty, to.Id);
                placeholders.AddIfNotExists(MailResources.MailHeaderFrom, from);
                placeholders.AddIfNotExists(MailResources.MailHeaderTo, to);

                var immutablePlaceholders = placeholders.ToImmutableDictionary();

                if (hasSubject)
                {
                    subject = await StringTemplate.InterpolateAsync(mailMessage.Subject, immutablePlaceholders, cancellationToken);
                }
                if (hasContent)
                {
                    content = await StringTemplate.InterpolateAsync(mailMessage.Body, immutablePlaceholders, cancellationToken);
                }
            }

            BackgroundJob.Enqueue <MailJobClient>(job => job.Send(
                                                      new MailJobMessage
            {
                MessageId = mailMessage.Id,
                ProjectId = project.Id,
                From      = new MailJobAddress(from.Id, from.Email.Address, from.Email.Name),
                To        = new MailJobAddress(to.Id, to.Email.Address, to.Email.Name),
                Subject   = subject,
                Body      = content,
                Users     = _userIds
            }));
        }
Пример #40
0
        public void Generate(string path)
        {
            StringTemplateGroup group        = new StringTemplateGroup("myGroup", @".\Templet");
            StringTemplate      st           = group.GetInstanceOf("Home");
            int           ID                 = 1;
            List <String> allMethodSigniture = new List <string>();

            foreach (var testSummary in AllTestSummary)
            {
                string methodSignature = testSummary.GetMethodSignature();
                st.SetAttribute("IDNum", ID++);
                st.SetAttribute("MethodSignature", methodSignature);
                var method       = testSummary.Method;
                var methodString = GetEntireMethodString(method);
                st.SetAttribute("SourceCode", methodString);
                bool bStartTests = false;
                if (testSummary.SwumSummary.StartsWith("test"))
                {
                    bStartTests = true;
                }
                st.SetAttribute("NotStartTests", !bStartTests);
                st.SetAttribute("SwumDesc", testSummary.SwumSummary.ToLower());

                st.SetAttribute("MethodBodyDesc", testSummary.GetBodyDescriptions());
                allMethodSigniture.Add(methodSignature);
            }
            allMethodSigniture.Sort();
            //hyper index
            foreach (var ms in allMethodSigniture)
            {
                st.SetAttribute("MethodLinkID", ms);
            }


            //st.SetAttribute("Message", "hello ");
            String result = st.ToString(); // yields "int x = 0;"
            //Console.WriteLine(result);

            StreamWriter writetext = new StreamWriter(path);

            writetext.WriteLine(result);
            writetext.Close();
        }
        public void NestedProperties()
        {
            // Arrange
            IDictionary<string, object> ret = new Dictionary<string, object>();
            ret["elem1"] = true;
            ret["elem2"] = false;

            var nestedObj = new Dictionary<string, object>();
            nestedObj["nestedProp"] = 100;
            ret["elem3"] = nestedObj;

            var template = new StringTemplate("$elem1$ or $elem2$ and value: $elem3.nestedProp$") { Attributes = ret };

            // Act
            var renderedText = template.ToString();

            // Assert
            Assert.AreEqual(renderedText, "True or False and value: 100");
        }
Пример #42
0
        protected virtual int WriteSubTemplate(StringTemplate self,
                                               IStringTemplateWriter @out,
                                               StringTemplate subtemplate)
        {
            /* To evaluate the IF chunk, make a new instance whose enclosingInstance
             * points at 'self' so get attribute works.  Otherwise, enclosingInstance
             * points at the template used to make the precompiled code.  We need a
             * new template instance every time we exec this chunk to get the new
             * "enclosing instance" pointer.
             */
            StringTemplate s = subtemplate.GetInstanceOf();

            s.EnclosingInstance = self;
            // make sure we evaluate in context of enclosing template's
            // group so polymorphism works. :)
            s.Group       = self.Group;
            s.NativeGroup = self.NativeGroup;
            return(s.Write(@out));
        }
Пример #43
0
        public override StringTemplate GetParserCreationTemplate()
        {
            StringTemplate createParserST =
                new StringTemplate(
                    "        Profiler2 profiler = new Profiler2();\n" +
                    "        $parserName$ parser = new $parserName$(tokens,profiler);\n" +
                    "        profiler.setParser(parser);\n"
                    );

            if ( !Debug )
            {
                createParserST =
                    new StringTemplate(
                        "        $parserName$ parser = new $parserName$(tokens);\n"
                        );
            }

            return createParserST;
        }
Пример #44
0
 public static void AddAttributes(StringTemplate st, Dictionary<string, object> @params)
 {
     foreach(string key in @params.Keys) {
         object val = @params[key];
         if (val != null) {
             if (val is string && String.IsNullOrEmpty(val as string))
                 continue;
             /*
            if (val is ArrayList)
             {
                 //st.SetAttribute(key, (val as ArrayList).ToArray());
                 ArrayList al = val as ArrayList;
                 foreach (object o in al)
                     st.SetAttribute(key, o);
             }
             else
             */
                 st.SetAttribute(key, val);
         }
     }
 }
        public void StringTemplatAddDuplicateSameValuesTest()
        {
            target = new StringTemplate(String.Empty);

            target.Add("test", "one");

            try
            {
                target.Add("test", "one");

                Assert.Fail("No exception thrown");
            }
            catch (ArgumentException exception)
            {
                Assert.AreEqual("Element has already been added.\r\nParameter name: element", exception.Message);
                Assert.AreEqual("element", exception.ParamName);
            }
            catch
            {
                Assert.Fail("ArgumentException not thrown");
            }
        }
Пример #46
0
        public override StringTemplate GetLexerTestFileTemplate()
        {
            StringTemplate outputFileST = new StringTemplate(
                "import org.antlr.runtime.*;\n" +
                "import org.antlr.runtime.tree.*;\n" +
                "import org.antlr.runtime.debug.*;\n" +
                "\n" +
                "class Profiler2 extends Profiler {\n" +
                "    public void terminate() { ; }\n" +
                "}\n" +
                "public class Test {\n" +
                "    public static void main(String[] args) throws Exception {\n" +
                "        CharStream input = new ANTLRFileStream(args[0]);\n" +
                "        $lexerName$ lex = new $lexerName$(input);\n" +
                "        CommonTokenStream tokens = new CommonTokenStream(lex);\n" +
                "        System.out.println(tokens);\n" +
                "    }\n" +
                "}"
                );

            return outputFileST;
        }
Пример #47
0
        public override string ToString()
        {
            Tests = Enumerable
                .Range(0, TestCount)
                .Select(x => "test" + x)
                .Join(", ");

            InstructionCompleteCasesText = InstructionCompleteCases
                .Select(x => string.Format(
                    @"
                        {0}:
                                  begin
                                      {1}
                                  end
                        ",
                    x.Key,
                    x.Value))
                .JoinLines();

            var template = File.ReadAllText(PathHelper.GetExecutingPath(@"McuTestTemplate.v"));
            var t = new StringTemplate(template).PopulateObj(this);

            return t;
        }
Пример #48
0
 public virtual StringTemplate GetEmbeddedInstanceOf( StringTemplate enclosingInstance,
                                             string name )
 {
     //Console.Out.WriteLine( "surrounding group is " +
     //                   enclosingInstance.Group.Name +
     //                   " with native group " + enclosingInstance.NativeGroup.Name );
     StringTemplate st = null;
     // TODO: seems like this should go into lookupTemplate
     if ( name.StartsWith( "super." ) )
     {
         // for super.foo() refs, ensure that we look at the native
         // group for the embedded instance not the current evaluation
         // group (which is always pulled down to the original group
         // from which somebody did group.getInstanceOf("foo");
         st = enclosingInstance.NativeGroup.GetInstanceOf( enclosingInstance, name );
     }
     else
     {
         st = GetInstanceOf( enclosingInstance, name );
     }
     // make sure all embedded templates have the same group as enclosing
     // so that polymorphic refs will start looking at the original group
     st.Group = this;
     st.EnclosingInstance = enclosingInstance;
     return st;
 }
Пример #49
0
        public override StringTemplate GetTreeTestFileTemplate()
        {
            StringTemplate outputFileST = new StringTemplate(
                "import org.antlr.runtime.*;\n" +
                "import org.antlr.runtime.tree.*;\n" +
                "import org.antlr.runtime.debug.*;\n" +
                "\n" +
                "class Profiler2 extends Profiler {\n" +
                "    public void terminate() { ; }\n" +
                "}\n" +
                "public class Test {\n" +
                "    public static void main(String[] args) throws Exception {\n" +
                "        CharStream input = new ANTLRFileStream(args[0]);\n" +
                "        $lexerName$ lex = new $lexerName$(input);\n" +
                "        TokenRewriteStream tokens = new TokenRewriteStream(lex);\n" +
                "        $createParser$\n" +
                "        $parserName$.$parserStartRuleName$_return r = parser.$parserStartRuleName$();\n" +
                "        $if(!treeParserStartRuleName)$\n" +
                "        if ( r.tree!=null ) {\n" +
                "            System.out.println(((Tree)r.tree).toStringTree());\n" +
                "            ((CommonTree)r.tree).sanityCheckParentAndChildIndexes();\n" +
                "		 }\n" +
                "        $else$\n" +
                "        CommonTreeNodeStream nodes = new CommonTreeNodeStream((Tree)r.tree);\n" +
                "        nodes.setTokenStream(tokens);\n" +
                "        $treeParserName$ walker = new $treeParserName$(nodes);\n" +
                "        walker.$treeParserStartRuleName$();\n" +
                "        $endif$\n" +
                "    }\n" +
                "}"
                );

            return outputFileST;
        }
Пример #50
0
 /** <summary>Track all references to regions &lt;@foo>...&lt;@end> or &lt;@foo()>.</summary>  */
 public virtual StringTemplate DefineRegionTemplate( StringTemplate enclosingTemplate,
                                            string regionName,
                                            string template,
                                            RegionType type )
 {
     StringTemplate regionST =
         DefineRegionTemplate( enclosingTemplate.OutermostName,
                              regionName,
                              template,
                              type );
     enclosingTemplate.OutermostEnclosingInstance.AddRegionName( regionName );
     return regionST;
 }
Пример #51
0
 public virtual void EmitTemplateStopDebugString( StringTemplate st,
                                         IStringTemplateWriter @out )
 {
     if ( _noDebugStartStopStrings == null ||
          !_noDebugStartStopStrings.Contains( st.Name ) )
     {
         string groupPrefix = "";
         if ( !st.Name.StartsWith( "if" ) && !st.Name.StartsWith( "else" ) )
         {
             if ( st.NativeGroup != null )
             {
                 groupPrefix = st.NativeGroup.Name + ".";
             }
             else
             {
                 groupPrefix = st.Group.Name + ".";
             }
         }
         @out.Write( "</" + groupPrefix + st.Name + ">" );
     }
 }
Пример #52
0
 /** <summary>Track all references to regions &lt;@foo()>.  We automatically
  *  define as
  *
  *     @enclosingtemplate.foo() ::= ""
  *  </summary>
  *
  *  <remarks>
  *  You cannot set these manually in the same group; you have to subgroup
  *  to override.
  *  </remarks>
  */
 public virtual StringTemplate DefineImplicitRegionTemplate( StringTemplate enclosingTemplate,
                                                    string name )
 {
     return DefineRegionTemplate( enclosingTemplate,
                                 name,
                                 "",
                                 RegionType.Implicit );
 }
Пример #53
0
 /** <summary>StringTemplate object factory; each group can have its own.</summary> */
 public virtual StringTemplate CreateStringTemplate()
 {
     StringTemplate st = new StringTemplate();
     return st;
 }
Пример #54
0
 public FormalArgument(String name, StringTemplate defaultValueST)
 {
     this.name = name;
     this.defaultValueST = defaultValueST;
 }
Пример #55
0
        public override StringTemplate GetTemplateTestFileTemplate()
        {
            StringTemplate outputFileST = new StringTemplate(
                "import org.antlr.runtime.*;\n" +
                "import org.antlr.stringtemplate.*;\n" +
                "import org.antlr.stringtemplate.language.*;\n" +
                "import org.antlr.runtime.debug.*;\n" +
                "import java.io.*;\n" +
                "\n" +
                "class Profiler2 extends Profiler {\n" +
                "    public void terminate() { ; }\n" +
                "}\n" +
                "public class Test {\n" +
                "    static String templates =\n" +
                "    		\"group test;\"+" +
                "    		\"foo(x,y) ::= \\\"<x> <y>\\\"\";\n" +
                "    static StringTemplateGroup group =" +
                "    		new StringTemplateGroup(new StringReader(templates)," +
                "					AngleBracketTemplateLexer.class);" +
                "    public static void main(String[] args) throws Exception {\n" +
                "        CharStream input = new ANTLRFileStream(args[0]);\n" +
                "        $lexerName$ lex = new $lexerName$(input);\n" +
                "        CommonTokenStream tokens = new CommonTokenStream(lex);\n" +
                "        $createParser$\n" +
                "		 parser.setTemplateLib(group);\n" +
                "        $parserName$.$parserStartRuleName$_return r = parser.$parserStartRuleName$();\n" +
                "        if ( r.st!=null )\n" +
                "            System.out.print(r.st.toString());\n" +
                "	 	 else\n" +
                "            System.out.print(\"\");\n" +
                "    }\n" +
                "}"
                );

            return outputFileST;
        }
Пример #56
0
        public virtual StringTemplate LookupTemplate( StringTemplate enclosingInstance, string name )
        {
            //Console.Out.WriteLine( "look up " + Name + "::" + name );
            if ( name.StartsWith( "super." ) )
            {
                if ( _superGroup != null )
                {
                    int dot = name.IndexOf( '.' );
                    name = name.Substring( dot + 1 );
                    StringTemplate superScopeST =
                        _superGroup.LookupTemplate( enclosingInstance, name );
                    //Console.Out.WriteLine( "superScopeST is " +
                    //                   superScopeST.Group.Name + "::" + name +
                    //                   " with native group " + superScopeST.NativeGroup.Name );
                    return superScopeST;
                }
                throw new ArgumentException( Name + " has no super group; invalid template: " + name );
            }
            CheckRefreshInterval();
            StringTemplate st;

            lock (_templates)
            {
                if (!_templates.TryGetValue(name, out st) || st == null)
                {
                    // not there?  Attempt to load
                    if (!_templatesDefinedInGroupFile)
                    {
                        // only check the disk for individual template
                        st = LoadTemplateFromBeneathRootDirOrCLASSPATH(GetFileNameFromTemplateName(name));
                    }
                    if (st == null && _superGroup != null)
                    {
                        // try to resolve in super group
                        st = _superGroup.GetInstanceOf(name);
                        // make sure that when we inherit a template, that it's
                        // group is reset; it's nativeGroup will remain where it was
                        if (st != null)
                        {
                            st.Group = this;
                        }
                    }
                    if (st != null)
                    {
                        // found in superGroup
                        // insert into this group; refresh will allow super
                        // to change it's def later or this group to add
                        // an override.
                        _templates[name] = st;
                    }
                    else
                    {
                        // not found; remember that this sucker doesn't exist
                        _templates[name] = NOT_FOUND_ST;
                        string context = "";
                        if (enclosingInstance != null)
                        {
                            context = "; context is " +
                                      enclosingInstance.GetEnclosingInstanceStackString();
                        }
                        string hier = GetGroupHierarchyStackString();
                        context += "; group hierarchy is " + hier;
                        throw new ArgumentException("Can't find template " +
                                                           GetFileNameFromTemplateName(name) +
                                                           context);
                    }
                }
                else if (st == NOT_FOUND_ST)
                {
                    return null;
                }
                //Console.Out.WriteLine( "lookup found " + st.Group.Name + "::" + st.Name );
            }

            return st;
        }
Пример #57
0
 public virtual string ToString( bool showTemplatePatterns )
 {
     StringBuilder buf = new StringBuilder();
     buf.Append( "group " + Name + ";" + _newline );
     StringTemplate formalArgs = new StringTemplate( "$args;separator=\",\"$" );
     foreach ( var template in _templates.OrderBy( item => (string)item.Key ) )
     {
         string tname = template.Key;
         StringTemplate st = template.Value;
         if ( st != NOT_FOUND_ST )
         {
             formalArgs = formalArgs.GetInstanceOf();
             formalArgs.SetAttribute( "args", st.FormalArguments );
             buf.Append( tname + "(" + formalArgs + ")" );
             if ( showTemplatePatterns )
             {
                 buf.Append( " ::= <<" );
                 buf.Append( st.Template );
                 buf.Append( ">>" + _newline );
             }
             else
             {
                 buf.Append( _newline );
             }
         }
     }
     return buf.ToString();
 }
Пример #58
0
        public Antlr.Runtime.Lexer CreateLexer( StringTemplate template, TextReader reader )
        {
            if ( _templateLexerClassCtor != null )
            {
                return _templateLexerClassCtor( template, reader );
            }

            return _defaultTemplateLexerClassCtor( template, reader );
        }
Пример #59
0
 // Removes trailing commas from JSON files, so that it can be parsed by JSON.parse() on JS side
 public static string CleanJSON(StringTemplate st)
 {
     return Regex.Replace (st.ToString(), @",(\s*)[\},\]]", @"$1}", RegexOptions.Multiline);
 }
Пример #60
0
 /** <summary>
  *  A support routine that gets an instance of name knowing which
  *  ST encloses it for error messages.
  *  </summary>
  */
 protected virtual StringTemplate GetInstanceOf( StringTemplate enclosingInstance,
                                        string name )
 {
     //Console.Out.WriteLine( "getInstanceOf(" + Name + "::" + name + ")" );
     StringTemplate st = LookupTemplate( enclosingInstance, name );
     if ( st != null )
     {
         StringTemplate instanceST = st.GetInstanceOf();
         return instanceST;
     }
     return null;
 }