Пример #1
0
        void ParseTemplate(string elmName, List <UxlTemplate> parent)
        {
            SourceValue?templateName = null;
            SourceValue?cond         = null;
            var         def          = false;

            ParseAttributes(
                name =>
            {
                switch (name)
                {
                case "Name":
                    templateName = GetValue();
                    return(true);

                case "Condition":
                    cond = GetValue();
                    return(true);

                case "IsDefault":
                    def = GetBool();
                    return(true);

                default:
                    return(false);
                }
            });

            var result = new UxlTemplate(templateName ?? new SourceValue(), cond, def);

            if (templateName == null)
            {
                Log.Error(GetSource(), ErrorCode.E0000, "Expected 'Name' attribute on <" + elmName + ">");
            }
            else
            {
                parent.Add(result);
            }

            ParseElements(name => TryParseEntity(name, result));
        }
Пример #2
0
        void CompileTemplate(UxlTemplate uxl, Namescope[] usings)
        {
            if (!Test(uxl.Condition))
            {
                return;
            }

            var template = new ExtensionEntity(uxl.Name.Source, uxl.Name.String, uxl.Disambiguation);

            Apply("Template", uxl.Name.String, template, _root.Templates);

            foreach (var e in uxl.Elements)
            {
                string key;
                if (!TryGetKey(e, out key) || !Test(e.Condition))
                {
                    continue;
                }

                CompileExtensionElement(template, "Template", key, e, usings);
            }

            CompileFiles(template, uxl);
        }