Beispiel #1
0
        private static void ParseModules(CssSchema schema, Queue <FileInfo> modules)
        {
            while (modules.Count > 0)
            {
                var moduleFile = modules.Dequeue();
                if (!moduleFile.Exists)
                {
                    continue;
                }

                var document = XDocument.Load(moduleFile.FullName);
                foreach (var element in document.Root.Elements())
                {
                    switch (element.Name.LocalName)
                    {
                    case "CssAtDirective": ParseDirective(schema, element); break;

                    case "CssProperty": ParseProperty(schema, element); break;

                    case "CssPropertyValue": ParsePropertyValue(schema, element); break;

                    case "CssPseudo": ParsePseudo(schema, element); break;

                    default: Logger.Log(string.Format("Unknown css schema element '{0}'", element.Name.LocalName)); break;
                    }
                }
            }
        }
Beispiel #2
0
        public static ICssSchema Parse(XDocument document, DirectoryInfo directory)
        {
            var schema = new CssSchema();
            ParseBrowsers(schema, document);
            ParseModules(schema, CompileModules(document, directory));

            return schema;
        }
Beispiel #3
0
        public static ICssSchema Parse(XDocument document, DirectoryInfo directory)
        {
            var schema = new CssSchema();

            ParseBrowsers(schema, document);
            ParseModules(schema, CompileModules(document, directory));

            return(schema);
        }
Beispiel #4
0
        private static void ParsePseudo(CssSchema schema, XElement element)
        {
            var name        = element.Attribute("name");
            var description = element.Attribute("description");

            if (!schema._Pseudos.ContainsKey(name.Value))
            {
                schema._Pseudos.Add(name.Value, new CssPseudo(name.Value, Optional(description)));
            }
        }
Beispiel #5
0
        private static void ParsePropertyValue(CssSchema schema, XElement element)
        {
            var         propertyName = element.Attribute("type");
            CssProperty property;

            if (!schema._Properties.TryGetValue(propertyName.Value, out property))
            {
                return;
            }

            AddValues(property, element);
        }
Beispiel #6
0
        private static void ParseBrowsers(CssSchema schema, XDocument document)
        {
            foreach (var browser in document.Root.Elements("Browser"))
            {
                var name         = browser.Attribute("name");
                var abbreviation = browser.Attribute("abbreviation");

                if (name != null && abbreviation != null && !schema._Browsers.ContainsKey(abbreviation.Value))
                {
                    schema._Browsers.Add(abbreviation.Value, new BrowserReference(abbreviation.Value, name.Value));
                }
            }
        }
Beispiel #7
0
        private static void ParseProperty(CssSchema schema, XElement element)
        {
            var name = element.Attribute("name") ?? element.Attribute("_locID");
            // TODO: restriction
            // TODO: type
            var description = element.Attribute("description");

            if (!schema._Properties.ContainsKey(name.Value))
            {
                var property = new CssProperty(name.Value, Optional(description));
                schema._Properties.Add(name.Value, property);

                AddValues(property, element);
            }
        }
        public ICssSchema Load()
        {
            try
            {
                var path = Path.Combine(SchemaDirectory, "css-main.xml");
                var file = new FileInfo(path);
                if (!file.Exists)
                {
                    return(null);
                }

                var document = XDocument.Load(path);

                return(CssSchema.Parse(document, file.Directory));
            }
            catch (Exception ex)
            {
                Logger.Log(ex, "Failed to load schema.");
                return(null);
            }
        }
Beispiel #9
0
        private static void ParsePseudo(CssSchema schema, XElement element)
        {
            var name = element.Attribute("name");
            var description = element.Attribute("description");

            if (!schema._Pseudos.ContainsKey(name.Value))
                schema._Pseudos.Add(name.Value, new CssPseudo(name.Value, Optional(description)));
        }
Beispiel #10
0
        private static void ParsePropertyValue(CssSchema schema, XElement element)
        {
            var propertyName = element.Attribute("type");
            CssProperty property;
            if (!schema._Properties.TryGetValue(propertyName.Value, out property))
                return;

            AddValues(property, element);
        }
Beispiel #11
0
        private static void ParseProperty(CssSchema schema, XElement element)
        {
            var name = element.Attribute("name") ?? element.Attribute("_locID");
            // TODO: restriction
            // TODO: type
            var description = element.Attribute("description");

            if (!schema._Properties.ContainsKey(name.Value))
            {
                var property = new CssProperty(name.Value, Optional(description));
                schema._Properties.Add(name.Value, property);

                AddValues(property, element);
            }
        }
Beispiel #12
0
        private static void ParseModules(CssSchema schema, Queue<FileInfo> modules)
        {
            while (modules.Count > 0)
            {
                var moduleFile = modules.Dequeue();
                if (!moduleFile.Exists) continue;

                var document = XDocument.Load(moduleFile.FullName);
                foreach (var element in document.Root.Elements())
                {
                    switch (element.Name.LocalName)
                    {
                        case "CssAtDirective": ParseDirective(schema, element); break;
                        case "CssProperty": ParseProperty(schema, element); break;
                        case "CssPropertyValue": ParsePropertyValue(schema, element); break;
                        case "CssPseudo": ParsePseudo(schema, element); break;
                        default: Logger.Log(string.Format("Unknown css schema element '{0}'", element.Name.LocalName)); break;
                    }
                }
            }
        }
Beispiel #13
0
        private static void ParseBrowsers(CssSchema schema, XDocument document)
        {
            foreach (var browser in document.Root.Elements("Browser"))
            {
                var name = browser.Attribute("name");
                var abbreviation = browser.Attribute("abbreviation");

                if (name != null && abbreviation != null && !schema._Browsers.ContainsKey(abbreviation.Value))
                    schema._Browsers.Add(abbreviation.Value, new BrowserReference(abbreviation.Value, name.Value));
            }
        }