示例#1
0
文件: CssWriter.cs 项目: carbon/Css
        public IEnumerable<CssRule> Rewrite(CssRule rule)
        {
            var styleRule = rule as StyleRule;

            if (styleRule == null || rule.All(r => r.Kind == NodeKind.Declaration))
            {
                yield return rule;

                yield break;
            }

            // Figure out how to eliminate this clone

            var clone = (StyleRule)rule.CloneNode();

            // Expand includes
            foreach (var includeNode in clone.Children.OfType<IncludeNode>().ToArray())
            {
                scope = ExpandInclude(includeNode, clone);

                clone.Children.Remove(includeNode);
            }

            var root = new List<CssRule>();

            root.Add(clone);

            foreach (var nestedRule in clone.Children.OfType<StyleRule>().ToArray())
            {
                foreach (var r in ExpandStyleRule(nestedRule, parent: clone))
                {
                    root.Add(r);
                }
            }

            foreach (var r in root)
            {
                if (r.HasChildren) yield return r;
            }
        }