상속: Element
예제 #1
0
        public override Verb CreateVerb(string[] tokens)
        {
            Color(position, tokens[1].Length, Whitespaces);
            var fromSource = tokens[2];

            Color(fromSource.Length, Numbers);
            Color(1, Structures);
            var toSource = tokens[3];

            Color(toSource.Length, Numbers);

            var from = fromSource.ToInt();
            var to   = toSource.ToInt();

            var parser = new PatternParser
            {
                IgnoreReplacement = true
            };

            if (parser.Scan(source, position + length - 1))
            {
                var newPattern = (Pattern)parser.Result.Value;
                Element          = new RangeElement(from, to, newPattern);
                overridePosition = parser.Result.Position;
                return(new NullOp());
            }
            return(null);
        }
예제 #2
0
        ///// <summary> Validates the link. </summary>
        //private IEnumerable<ValidationInfo> Validate(HtmlElement htmlElement)
        //{
        //    List<ValidationInfo> errors = new List<ValidationInfo>();

        //    if (htmlElement.Editable)
        //    {
        //        // Required
        //        if (htmlElement.Required && string.IsNullOrWhiteSpace(htmlElement.Value))
        //        {
        //            ValidationInfo validationInfo = Mapper.Map<ValidationInfo>(htmlElement);
        //            validationInfo.ErrorType = ValidationErrorType.Required;
        //            errors.Add(validationInfo);
        //        }

        //        // Max Length
        //        if (htmlElement.MaxLength != null)
        //        {
        //            int length = 0;
        //            if (!string.IsNullOrEmpty(htmlElement.Value))
        //            {
        //                HtmlEngine engine = new HtmlEngine();
        //                HtmlAgilityPack.HtmlDocument doc = engine.LoadDoc(htmlElement.Value);

        //                if (doc != null)
        //                {
        //                    string text = engine.ExtractVisibleText(doc);

        //                    // Trim (same behaviour as in the editor)
        //                    text = text.Trim();

        //                    // Count breaks as 1 character
        //                    text = text.Replace("\r\n", " ");

        //                    length = text.Length;
        //                }
        //            }

        //            if (length > htmlElement.MaxLength.Value)
        //            {
        //                ValidationInfo validationInfo = Mapper.Map<ValidationInfo>(htmlElement);
        //                validationInfo.ErrorType = ValidationErrorType.MaxLength;
        //                errors.Add(validationInfo);
        //            }
        //        }
        //    }

        //    return errors;
        //}

        /// <summary> Validates the ranges. </summary>
        private IEnumerable <ValidationInfo> Validate(RangeElement range)
        {
            List <ValidationInfo> errors = new List <ValidationInfo>();

            if (range.Required && range.Items.IsNullOrEmpty())
            {
                errors.Add(new ValidationInfo
                {
                    HtmlName  = range.Name,
                    ErrorType = ValidationErrorType.Required,
                    Label     = range.Label
                });
            }

            if (!range.Items.IsNullOrEmpty())
            {
                foreach (RangeElement.RangeElementItem item in range.Items)
                {
                    if (string.IsNullOrWhiteSpace(item.Label))
                    {
                        errors.Add(new ValidationInfo
                        {
                            HtmlName  = range.Name,
                            ErrorType = ValidationErrorType.MissingRangelabel,
                            Label     = range.Label
                        });
                    }

                    if (range.Items.Any(x => x.MinimumValue == item.MinimumValue && x.MaximumValue == item.MaximumValue && x.Id != item.Id))
                    {
                        errors.Add(new ValidationInfo
                        {
                            HtmlName  = range.Name,
                            ErrorType = ValidationErrorType.DuplicateRanges,
                            Label     = string.IsNullOrWhiteSpace(item.Label) ? item.Label : range.Label
                        });
                    }
                }
            }

            return(errors);
        }
예제 #3
0
        public void Should_adjust_the_range_to_the_proper_order()
        {
            var expected = new RangeElement("A", "F");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #4
0
        public void Should_return_the_third_range()
        {
            var expected = new RangeElement("M", "N");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #5
0
 public override void VisitRangeElement(RangeElement element)
 {
     Console.Write("(");
     VisitElement(element.RANGEVARIABLE);
     Console.Write("->");
     VisitElement(element.STARTINGRANGE);
     Console.Write("to");
     VisitElement(element.ENDINGRANGE);
     Console.Write(")");
 }
예제 #6
0
        public void Should_include_the_wide_range()
        {
            var expected = new RangeElement("B", "P");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #7
0
        public void Should_return_the_third_range()
        {
            var expected = new RangeElement("M", "N");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #8
0
        public void Should_return_the_individual_ranges()
        {
            var expected = new RangeElement("A", "Z");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #9
0
        public void Should_include_the_wide_range()
        {
            var expected = new RangeElement("B", "P");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #10
0
        public void Should_properly_include_the_space_in_the_second_range()
        {
            var expected = new RangeElement("P", "TE J");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #11
0
        public void Should_not_contain_a_second_group()
        {
            var expected = new RangeElement("L", "M");

            Elements.Contains(expected).ShouldBeFalse();
        }
예제 #12
0
        public void Should_return_the_individual_ranges()
        {
            var expected = new RangeElement("A", "Z");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #13
0
        public void Should_optimize_out_the_redundant_ranges()
        {
            var expected = new RangeElement("A", "K");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #14
0
        public void Should_not_include_the_range()
        {
            var expected = new RangeElement("BA", "BA");

            Elements.Contains(expected).ShouldBeFalse();
        }
예제 #15
0
        public void Should_include_the_second_range()
        {
            var expected = new RangeElement("O", "S");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #16
0
        public void Should_include_the_first_range()
        {
            var expected = new RangeElement("A", "G");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #17
0
        public void Should_include_the_second_range()
        {
            var expected = new RangeElement("O", "S");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #18
0
        public void Should_include_the_appropriate_range()
        {
            var expected = new RangeElement("100", "110");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #19
0
        public void Should_include_the_appropriate_range()
        {
            var expected = new RangeElement("100", "110");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #20
0
        public void Should_not_contain_a_second_group()
        {
            var expected = new RangeElement("C", "G");

            Elements.Contains(expected).ShouldBeFalse();
        }
예제 #21
0
        public void Should_properly_include_the_space_in_the_second_range()
        {
            var expected = new RangeElement("P", "TE J");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #22
0
        public void Should_return_the_first_range()
        {
            var expected = new RangeElement("A", "G");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #23
0
        public void Should_not_include_the_narrow_range()
        {
            var expected = new RangeElement("G", "M");

            Elements.Contains(expected).ShouldBeFalse();
        }
예제 #24
0
        public void Should_return_the_second_range()
        {
            var expected = new RangeElement("C", "G");

            Elements.Contains(expected).ShouldBeFalse();
        }
예제 #25
0
        public void Should_optimize_out_the_redundant_ranges()
        {
            var expected = new RangeElement("A", "K");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #26
0
 static void Main(String[] args)
 {
     Console.WriteLine("\nTesting the ParallelForStatementElement class");
     Console.WriteLine("\n==========================================\n");
     RangeElement elem = new RangeElement();
     VariableElement var_elem = new VariableElement();
     var_elem.setText("a");
     elem.RANGEVARIABLE = var_elem;
     IntegerElement int_elem = new IntegerElement();
     int_elem.setText("1");
     elem.STARTINGRANGE = int_elem;
     IntegerElement int_elem2 = new IntegerElement();
     int_elem2.setText("10");
     elem.ENDINGRANGE = int_elem2;
     ParallelForElement for_elem = new ParallelForElement();
     for_elem.RANGE = elem;
     ScalarVariableDeclaration scalar_elem = new ScalarVariableDeclaration();
     scalar_elem.setType("int");
     scalar_elem.setVar(var_elem);
     for_elem.ADDCODE = scalar_elem;
     for_elem.syncfunction();
     VariableElement elem2 = new VariableElement();
     elem2.setText("b");
     for_elem.ADDCODE = elem2;
     for_elem.syncfunction();
     RangeElement Relem = new RangeElement();
     Relem = for_elem.RANGE;
     Console.Write("Range is " + Relem.STARTINGRANGE.getText() + " to " + Relem.ENDINGRANGE.getText() + "\n");
     List<List<Element>> elem_list = new List<List<Element>>();
     elem_list = for_elem.PARALLELCODE;
     for(int i=0; i<elem_list.Count;i++)
     {
         List<Element> code = new List<Element>();
         code = elem_list[i];
         for (int j = 0; j<code.Count; j++)
         {
             Console.Write("The parallelfor statement code list "+ (i+1) +" has "+ code[j].ToString() + "\n");
         }
     }
 }
예제 #27
0
        public void Should_return_the_second_range()
        {
            var expected = new RangeElement("H", "K");

            Elements.Contains(expected).ShouldBeTrue();
        }
예제 #28
0
파일: Visitor.cs 프로젝트: shranjan/pinac
 public abstract void VisitRangeElement(RangeElement element);
예제 #29
0
 static void Main(String[] args)
 {
     Console.WriteLine("\nTesting the ForStatementElement class");
     Console.WriteLine("\n==========================================\n");
     RangeElement elem = new RangeElement();
     VariableElement var_elem = new VariableElement();
     var_elem.setText("a");
     elem.RANGEVARIABLE = var_elem;
     IntegerElement int_elem = new IntegerElement();
     int_elem.setText("1");
     elem.STARTINGRANGE = int_elem;
     IntegerElement int_elem2 = new IntegerElement();
     int_elem2.setText("10");
     elem.ENDINGRANGE = int_elem2;
     ForStatementElement for_elem = new ForStatementElement();
     for_elem.RANGE = elem;
     ScalarVariableDeclaration scalar_elem = new ScalarVariableDeclaration();
     scalar_elem.setType("int");
     scalar_elem.setVar(var_elem);
     for_elem.ADDCODE = scalar_elem;
     RangeElement Relem = new RangeElement();
     Relem = for_elem.RANGE;
     Console.Write("Range is "+Relem.STARTINGRANGE.getText()+" to "+ Relem.ENDINGRANGE.getText()+"\n");
     List<Element> elem_list = new List<Element>();
     elem_list = for_elem.CODELIST;
     for(int i=0; i<elem_list.Count;i++)
     {
         Console.Write("The for statement list has " + elem_list[i].ToString()+"\n");
     }
 }
예제 #30
0
        public void Should_adjust_the_range_to_the_proper_order()
        {
            var expected = new RangeElement("A", "F");

            Elements.Contains(expected).ShouldBeTrue();
        }