Exemplo n.º 1
0
        protected internal static Field[] ParseFields(XmlElement template, ParsingContext context)
        {
            XmlNodeList childNodes = template.ChildNodes;
            var         fields     = new List <Field>();

            for (int i = 0; i < childNodes.Count; i++)
            {
                XmlNode item = childNodes.Item(i);

                if (IsElement(item))
                {
                    if ("typeRef".Equals(item.LocalName) || "length".Equals(item.LocalName))
                    {
                        continue;
                    }
                    var          element     = (XmlElement)item;
                    IFieldParser fieldParser = context.GetFieldParser(element);
                    if (fieldParser == null)
                    {
                        context.ErrorHandler.OnError(null, DynError.ParseError, "No parser registered for {0}",
                                                     element.LocalName);
                    }
                    if (fieldParser != null)
                    {
                        fields.Add(fieldParser.Parse(element, context));
                    }
                }
            }

            return(fields.ToArray());
        }
Exemplo n.º 2
0
        protected Metar GetMetar(string field)
        {
            var context = new ParserContext();

            _fieldParser.Parse(context, field);

            return(context.GetResult());
        }
        public void TestFullyDefinedOperators()
        {
            XmlElement decimalDef =
                Document(
                    "<decimal name='composed'><mantissa><delta dictionary='template' key='variable' value='100'/></mantissa><exponent><copy dictionary='template' key='static' value='-2'/></exponent></decimal>");

            Assert.IsTrue(_parser.CanParse(decimalDef, _context));
            var decimalt = (ComposedScalar)_parser.Parse(decimalDef, _context);

            AssertComposedScalarField(decimalt, FastType.Decimal, "composed", Operator.Copy,
                                      new IntegerValue(-2), Operator.Delta, new IntegerValue(100));

            Scalar exponent = decimalt.Fields[0];
            Scalar mantissa = decimalt.Fields[1];

            Assert.AreEqual("template", exponent.Dictionary);
            Assert.AreEqual(new QName("static"), exponent.Key);

            Assert.AreEqual("template", exponent.Dictionary);
            Assert.AreEqual(new QName("variable"), mantissa.Key);
        }
Exemplo n.º 4
0
        private new int ParseFields(ref Stream dataStream, out IList <MIMER.RFC822.Field> fields)
        {
            var result  = ReadHeaders(ref dataStream);
            var headers = new string(result.Data);

            m_Source.Append(headers);

            headers = m_UnfoldPattern.RegularExpression.Replace(headers, " ");
            fields  = new List <RFC822.Field>();

            m_FieldParser.Parse(ref fields, ref headers);
            return(result.FulfilledCritera);
        }