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()); }
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); }
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); }