Exemplo n.º 1
0
        private void ExtractValues(string elementName, XmlReader reader)
        {
            for (int i = 0; i < reader.AttributeCount; ++i)
            {
                reader.MoveToAttribute(i);

                string name  = reader.Name;
                string value = reader.Value;

                if (E.Equals(name))
                {
                    this.element = value.ToElement();
                }
                else if (K.Equals(name))
                {
                    this.keys = value;
                }
                else if (V.Equals(name))
                {
                    this.values = value;
                }
                else if (CAT.Equals(name))
                {
                    this.cat = value;
                }
                else if (CLOSED.Equals(name))
                {
                    this.closed = value.ToClosed();
                }
                else if (ZOOM_MIN.Equals(name))
                {
                    this.zoomMin = XmlUtils.ParseNonNegativeByte(name, value);
                }
                else if (ZOOM_MAX.Equals(name))
                {
                    this.zoomMax = XmlUtils.ParseNonNegativeByte(name, value);
                }
                else
                {
                    throw XmlUtils.CreateXmlReaderException(elementName, name, value, i);
                }
            }

            Validate(elementName);

            this.keyList   = new List <string>(this.keys.Split(SPLIT_PATTERN, StringSplitOptions.RemoveEmptyEntries));
            this.valueList = new List <string>(this.values.Split(SPLIT_PATTERN, StringSplitOptions.RemoveEmptyEntries));

            this.elementMatcher = getElementMatcher(this.element);
            this.closedMatcher  = GetClosedMatcher(this.closed);

            this.elementMatcher = RuleOptimizer.optimize(this.elementMatcher, this.ruleStack);
            this.closedMatcher  = RuleOptimizer.optimize(this.closedMatcher, this.ruleStack);
        }
Exemplo n.º 2
0
        private readonly List <Rule> subRules;                        // NOSONAR NOPMD we need specific interface

        public Rule(RuleBuilder ruleBuilder)
        {
            this.cat            = ruleBuilder.cat;
            this.closedMatcher  = ruleBuilder.closedMatcher;
            this.elementMatcher = ruleBuilder.elementMatcher;
            this.zoomMax        = ruleBuilder.zoomMax;
            this.zoomMin        = ruleBuilder.zoomMin;

            this.renderInstructions = new List <RenderInstruction>(4);
            this.subRules           = new List <Rule>(4);
        }
Exemplo n.º 3
0
        public void IsNullSafe()
        {
            ICollection collection = CollectionOf(1, 2, null, 4);

            Matcher matcher = new ElementMatcher(collection);

            Assert.IsTrue(matcher.Matches(1), "should match 1");
            Assert.IsTrue(matcher.Matches(2), "should match 2");
            Assert.IsTrue(matcher.Matches(null), "should match null");
            Assert.IsTrue(matcher.Matches(4), "should match 4");
            Assert.IsFalse(matcher.Matches(0), "should not match 0");
        }
Exemplo n.º 4
0
        public void MatchesIfArgumentInCollection()
        {
            ICollection collection = CollectionOf(1, 2, 3, 4);

            Matcher matcher = new ElementMatcher(collection);

            Assert.IsTrue(matcher.Matches(1), "should match 1");
            Assert.IsTrue(matcher.Matches(2), "should match 2");
            Assert.IsTrue(matcher.Matches(3), "should match 3");
            Assert.IsTrue(matcher.Matches(4), "should match 4");
            Assert.IsFalse(matcher.Matches(0), "should not match 0");
        }
Exemplo n.º 5
0
        /// <summary>
        /// Find the closest ancestor (or self) that matches the condition
        /// </summary>
        /// <param name="startElement"></param>
        /// <param name="matcher">A function that returns true if the element matches</param>
        /// <returns></returns>
        internal static XmlElement GetClosestMatch(XmlElement startElement, ElementMatcher matcher)
        {
            XmlElement currentElement = startElement;

            while (currentElement != null)
            {
                if (matcher(currentElement))
                {
                    return(currentElement);
                }

                currentElement = currentElement.ParentNode as XmlElement;
            }

            return(null);
        }
Exemplo n.º 6
0
        internal static ElementMatcher optimize(ElementMatcher elementMatcher, Stack <Rule> ruleStack)
        {
            if (elementMatcher is AnyMatcher)
            {
                return(elementMatcher);
            }

            foreach (var rule in ruleStack)
            {
                if (rule.elementMatcher.IsCoveredBy(elementMatcher))
                {
                    return(AnyMatcher.INSTANCE);
                }
                else if (!elementMatcher.IsCoveredBy(rule.elementMatcher))
                {
                    LOGGER.Warn("unreachable rule (e)");
                }
            }

            return(elementMatcher);
        }
 public SimpleHtmlElementLocator(string name = null, ElementMatcher <HtmlElement> matcher = null
                                 )
     : base(name)
 {
     this.Matcher = matcher;
 }
 public TagElementLocator(string name = null, string tag = null, bool recursive = false, String contextKey = null, ChildHtmlElementLocator childLocator = null, ElementMatcher <HtmlElement> matcher = null)
     : base(name, contextKey)
 {
     this.Tag          = tag;
     this.Recursive    = recursive;
     this.ChildLocator = childLocator;
     this.Matcher      = matcher;
 }
 public IdElementLocator(string name = null, string id = null, String contextKey = null, ElementMatcher <HtmlElement> matcher = null)
     : base(name, contextKey)
 {
     this.Id      = id;
     this.Matcher = matcher;
 }
 public ListHtmlElementDataExtractor(ElementMatcher <HtmlElement> matcher = null, ElementTarget target = ElementTarget.SELF, HtmlElementDataExtractor <V> extractor = null)
 {
     Matcher   = matcher;
     Target    = target;
     Extractor = extractor;
 }
Exemplo n.º 11
0
 public bool IsCoveredBy(ElementMatcher elementMatcher)
 {
     return(elementMatcher.Matches(Element.Way));
 }
 public SimpleChildHtmlElementLocator(string name = null, ElementMatcher<HtmlElement> matcher = null, ChildHtmlElementLocator filter = null)
     : base()
 {
     this.Matcher = matcher;
     this.Filter = filter;
 }
Exemplo n.º 13
0
 public bool IsCoveredBy(ElementMatcher elementMatcher)
 {
     return(elementMatcher == this);
 }
Exemplo n.º 14
0
 public SimpleChildHtmlElementLocator(string name = null, ElementMatcher <HtmlElement> matcher = null, ChildHtmlElementLocator filter = null)
     : base()
 {
     this.Matcher = matcher;
     this.Filter  = filter;
 }