示例#1
0
        /// <summary>
        /// Detect whether the current character matches CSS Resolving Context
        /// </summary>
        /// <param name="c">The character to match</param>
        public Boolean Match(char c)
        {
            if (noFilter)
            {
                return(true);
            }
            NameDetector currentDetector = null;
            Boolean      hasDetector     = false; //Indicates whether or not there's available property name dectector

            for (int i = detectors.Length - 1; i >= 0; i--)
            {
                var tmpDetector = detectors[i];
                if (!tmpDetector.Enabled)
                {
                    continue;
                }

                var result = detectors[i].Match(c);
                if (result != MatchResult.Continue)
                {
                    tmpDetector.Enabled = false;
                    if (result == MatchResult.Success)
                    {
                        currentDetector = detectors[i];
                    }
                }
                else if (!hasDetector)
                {
                    hasDetector = true;
                }
            }
            successDetector = currentDetector;
            return(currentDetector != null || hasDetector);    //$$$
        }
        public void AddFilters(params string[] keys)
        {
            if (keys.Length < 1) throw new ArgumentNullException();
            detectors = new NameDetector[keys.Length];

            for (int i = 0; i < keys.Length; i++)
            {
                detectors[i] = new NameDetector(keys[i]);
            }
            noFilter = false;
        }
示例#3
0
        public void AddFilters(params string[] keys)
        {
            if (keys.Length < 1)
            {
                throw new ArgumentNullException();
            }
            detectors = new NameDetector[keys.Length];

            for (int i = 0; i < keys.Length; i++)
            {
                detectors[i] = new NameDetector(keys[i]);
            }
            noFilter = false;
        }
        /// <summary>
        /// Reset context variables
        /// </summary>
        public void Reset()
        {
            this.Styles.Clear();
            this.styleName.Clear();
            this.properties.Clear();
            this.propertyName.Clear();
            this.propertyText.Clear();
            this.PreviousState = null;
            this.successDetector = null;

            IgnoreSpace = true;
            IgnoreProperty = false;
            IsComment = false;

            position = 0;
            propertyTextPosition = 0;
            styleLineNumber = 1;
            lineNumber = 1;
        }
        /// <summary>
        /// Detect whether the current character matches CSS Resolving Context
        /// </summary>
        /// <param name="c">The character to match</param>
        public Boolean Match(char c)
        {
            if (noFilter) return true;
            NameDetector currentDetector = null;
            Boolean hasDetector = false;  //Indicates whether or not there's available property name dectector

            for (int i = detectors.Length - 1; i >= 0; i--)
            {
                var tmpDetector = detectors[i];
                if (!tmpDetector.Enabled) continue;

                var result = detectors[i].Match(c);
                if (result != MatchResult.Continue)
                {
                    tmpDetector.Enabled = false;
                    if (result == MatchResult.Success) currentDetector = detectors[i];
                }
                else if (!hasDetector) hasDetector = true;
            }
            successDetector = currentDetector;
            return currentDetector != null || hasDetector;    //$$$
        }