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)); }
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); }