コード例 #1
0
 void Populate(ICssRuleList rules)
 {
     foreach (var rule in rules)
     {
         children.Add(new CssRuleViewModel(rule));
     }
 }
コード例 #2
0
        /// <summary>
        /// Gets the style rule with the provided selector text.
        /// </summary>
        /// <param name="rules">The rules to look in.</param>
        /// <param name="selectorText">The selector text to look for.</param>
        /// <param name="context">The context for normalizing the CSS selector.</param>
        /// <returns>The style rule, if any.</returns>
        public static ICssStyleRule GetStyleRuleWith(this ICssRuleList rules, String selectorText, IBrowsingContext context = null)
        {
            var styleRules             = rules.OfType <ICssStyleRule>();
            var parser                 = context?.GetService <ICssSelectorParser>();
            var normalizedSelectorText = parser?.ParseSelector(selectorText)?.Text ?? selectorText;

            foreach (var rule in styleRules)
            {
                if (rule.SelectorText.Is(normalizedSelectorText))
                {
                    return(rule);
                }
            }

            return(null);
        }
コード例 #3
0
        /// <summary>
        /// Gets the styles matching the given render device.
        /// </summary>
        /// <param name="rules">The set of rules.</param>
        /// <param name="device">The render device.</param>
        /// <returns>The style rules.</returns>
        public static IEnumerable <ICssStyleRule> GetMatchingStyles(this ICssRuleList rules, IRenderDevice device)
        {
            foreach (var rule in rules)
            {
                if (rule.Type == CssRuleType.Media)
                {
                    var media = (ICssMediaRule)rule;

                    if (media.IsValid(device))
                    {
                        var subrules = media.Rules.GetMatchingStyles(device);

                        foreach (var subrule in subrules)
                        {
                            yield return(subrule);
                        }
                    }
                }
                else if (rule.Type == CssRuleType.Supports)
                {
                    var support = (ICssSupportsRule)rule;

                    if (support.IsValid(device))
                    {
                        var subrules = support.Rules.GetMatchingStyles(device);

                        foreach (var subrule in subrules)
                        {
                            yield return(subrule);
                        }
                    }
                }
                else if (rule.Type == CssRuleType.Style)
                {
                    yield return((ICssStyleRule)rule);
                }
            }
        }
コード例 #4
0
        private IEnumerable <ICssStyleRule> GetRules(ICssRuleList rules)
        {
            foreach (var rule in rules)
            {
                if (rule.Type == CssRuleType.Media)
                {
                    var media = (ICssMediaRule)rule;

                    if (media.IsValid(_device))
                    {
                        var subrules = GetRules(media.Rules);

                        foreach (var subrule in subrules)
                        {
                            yield return(subrule);
                        }
                    }
                }
                else if (rule.Type == CssRuleType.Supports)
                {
                    var support = (ICssSupportsRule)rule;

                    if (support.IsValid(_device))
                    {
                        var subrules = GetRules(support.Rules);

                        foreach (var subrule in subrules)
                        {
                            yield return(subrule);
                        }
                    }
                }
                else if (rule.Type == CssRuleType.Style)
                {
                    yield return((ICssStyleRule)rule);
                }
            }
        }
コード例 #5
0
 void Populate(ICssRuleList rules)
 {
     foreach (var rule in rules)
         children.Add(new CssRuleViewModel(rule));
 }