コード例 #1
0
 private AttributeSelector(ISelectorContext context, AttributeElements element, Specificity specificity)
 {
     this.context = context;
     this.element = element;
     this.specificity = specificity;
     isValid = new Regex("^\\[([a-zA-Z]+[0-9]*)+([~|^$*]?=+[\"']?([a-zA-Z]+[0-9]*)+[\"']?)*\\]");
     spliter = new Regex(@"\w+|[~|^$*]|=");
 }
コード例 #2
0
        /// <summary>
        /// Create a new command instance
        /// </summary>
        /// <param name="elementId">The command Id</param>
        /// <param name="elementClass">The command class</param>
        /// <param name="container">The parent container</param>
        /// <returns></returns>
        public Command CreateCommand(int elementId, int elementClass, CgmFile container)
        {
            var classCode = (ClassCode)elementClass;

            switch (classCode)
            {
            case ClassCode.DelimiterElement:
                return(DelimiterElements.CreateCommand(elementId, elementClass, container));

            case ClassCode.MetafileDescriptorElements:
                return(MetaFileDescriptorElements.CreateCommand(elementId, elementClass, container));

            case ClassCode.PictureDescriptorElements:
                return(PictureDescriptorElements.CreateCommand(elementId, elementClass, container));

            case ClassCode.ControlElements:
                return(ControlElements.CreateCommand(elementId, elementClass, container));

            case ClassCode.GraphicalPrimitiveElements:
                return(GraphicalPrimitiveElements.CreateCommand(elementId, elementClass, container));

            case ClassCode.AttributeElements:
                return(AttributeElements.CreateCommand(elementId, elementClass, container));

            case ClassCode.EscapeElement:
                return(new Escape(container));

            case ClassCode.ExternalElements:
                return(ExternalElements.CreateCommand(elementId, elementClass, container));

            case ClassCode.SegmentControlandSegmentAttributeElements:
                return(SegmentControlElements.CreateCommand(elementId, elementClass, container));

            case ClassCode.ApplicationStructureDescriptorElements:
                return(ApplicationStructureDescriptorElements.CreateCommand(elementId, elementClass, container));

            default:
                Command.Assert(10 <= elementClass && elementClass <= 15, "unsupported element class " + elementClass);
                return(new UnknownCommand(elementId, elementClass, container));
            }
        }
コード例 #3
0
        private AttributeElements PrepareElement(string selector, Match match)
        {
            AttributeElements elm = new AttributeElements();

            elm.SelectorText = selector.Substring(match.Value.Length);

            FillAttributeElements(SplitSelector(match.Value), elm);

            return elm;
        }
コード例 #4
0
        internal override bool Prepare(string selector)
        {
            Match match = isValid.Match(selector);
            element = null;
            this.specificity = new Specificity();

            if (match.Success)
            {
                element = PrepareElement(selector, match);
            }

            return match.Success;
        }
コード例 #5
0
        private void FillAttributeElements(List<string> elements, AttributeElements element)
        {
            if (elements.Count > 0)
            {
                element.AttributeName = elements[0];
            }

            if (elements.Count > 1)
            {
                element.HasValue = true;
                element.Filter = ChooseFilter(elements[1]);
            }

            if (elements.Count > 2)
            {
                element.Value = elements[elements.Count - 1];
            }
        }