Example #1
0
        UxlDocument ParseDocument()
        {
            SourceValue?backend = null;
            SourceValue?cond    = null;

            ParseAttributes(
                name =>
            {
                switch (name)
                {
                case "Backend":
                    backend = GetValue();
                    return(true);

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

                default:
                    return(false);
                }
            });

            UxlBackendType backendType = 0;

            if (backend == null)
            {
                Log.Error(GetSource(), ErrorCode.E0000, "Expected 'Backend' attribute on <Extensions>");
            }
            else if (!Enum.TryParse(backend.Value.String, out backendType) || backendType == UxlBackendType.Unknown)
            {
                Log.Error(backend.Value.Source, ErrorCode.E0000, "Unknown backend " + backend.Value.String.Quote());
            }

            var result = new UxlDocument(File.Package, backendType, cond);

            ParseElements(
                name =>
            {
                switch (name)
                {
                case "Using":
                    ParseUsing(result);
                    return(true);

                case "Define":
                    ParseDefine(result);
                    return(true);

                case "Declare":
                    ParseDeclare(result);
                    return(true);

                case "Deprecate":
                    ParseDeprecate(result);
                    return(true);

                case "Definition":
                    Log.Warning(GetSource(), ErrorCode.W0000, "<Definition> is deprecated, replace with <Declare>");
                    ParseDeclare(result);
                    return(true);

                case "Type":
                    ParseType(name, result);
                    return(true);

                case "Template":
                    ParseTemplate(name, result.Templates);
                    return(true);

                case "Library":
                    Log.Warning(GetSource(), ErrorCode.W0000, "<Library> is deprecated, replace with <Template>");
                    ParseTemplate(name, result.Templates);
                    return(true);

                case "Property":
                    Log.Warning(GetSource(), ErrorCode.W0000, "<Property> is deprecated, replace with <Set>");
                    ParseSet(name, result.Elements);
                    return(true);

                default:
                    return(TryParseEntity(name, result));
                }
            });

            return(result);
        }
Example #2
0
 public UxlDocument(SourcePackage upk, UxlBackendType backend, SourceValue?cond)
 {
     Package   = upk;
     Backend   = backend;
     Condition = cond;
 }