public static SenseSequence GetSenseSequence(this IEnumerable <IEnumerable <JArray> > source) { var result = new SenseSequence(); source.SelectMany(inner => inner.ApplyConversions(conversions).Senses).ToList().ForEach(sense => result.Add(sense.Value)); return(result); }
private static void AddParenthesizedSenseSequence(SenseSequence sequence, JArray array) { var result = array.ParseNextAs <IEnumerable <JArray> >().GetParenthesizedSenseSequence(); //var result = JsonConvert.DeserializeObject<IEnumerable<JArray>>(array[1].ToString()).GetParenthesizedSenseSequence(); result.ToSenses().ToList().ForEach(sequence.Add); }
/// <summary> /// Parses the input definition into a collection of <see cref="Dto.Sense"/>s. /// </summary> public void Parse(Definition definition) { if (definition == null) { return; } foreach (var sourceSseqs in _def.SenseSequences) { var senseSequence = new SenseSequence(); foreach (var sourceSseq in sourceSseqs) { // sourceSseq comes in pairs: a string that defines the object ("sense", "sen", "pseq", etc.) , followed by the actual object if (sourceSseq.Length == 2) { if (sourceSseq[0].Name == Response.SseqEnum.Bs) { var sourceSense = sourceSseq[1].Sense; // a binding substitute (bs) should always contain a nested sense object if (sourceSense?.SubSense != null) { var sense = ParseGeneralSenseProperties <Sense>(sourceSense.SubSense); sense.SenseNumber = sourceSense.SubSense.SenseNumber; ParseSpecificSenseProperties(sourceSense.SubSense, sense); sense.IsBindingSubstitute = true; senseSequence.Senses.Add(sense); } } if (sourceSseq[0].Name == Response.SseqEnum.Sense) { var sourceSense = sourceSseq[1].Sense; if (sourceSense != null) { var sense = ParseGeneralSenseProperties <Sense>(sourceSense); sense.SenseNumber = sourceSense.SenseNumber; ParseSpecificSenseProperties(sourceSense, sense); if (sourceSense.CrossReferences.Any()) { sense.CrossReferences = CrossReferenceHelper.Parse(sourceSense.CrossReferences).ToList(); } senseSequence.Senses.Add(sense); } } else if (sourceSseq[0].Name == Response.SseqEnum.Sen) { var sourceSense = sourceSseq[1].Sense; if (sourceSense != null) { var sense = ParseGeneralSenseProperties <Sense>(sourceSense); sense.SenseNumber = sourceSense.SenseNumber; sense.IsTruncatedSense = true; if (sourceSense.CrossReferences.Any()) { sense.CrossReferences = CrossReferenceHelper.Parse(sourceSense.CrossReferences).ToList(); } senseSequence.Senses.Add(sense); } } else if (sourceSseq[0].Name == Response.SseqEnum.Pseq && sourceSseq[1].SenseSequences != null) { var pseq = new SenseSequenceSense() { IsParenthesizedSenseSequence = true, Senses = new List <SenseSequenceSense>() }; foreach (var sourceSequence in sourceSseq[1].SenseSequences) { if (sourceSequence[0].Name == Response.SseqEnum.Bs) { var sourceSense = sourceSequence[1].Sense; // a binding substitute (bs) should always contain a nested sense object if (sourceSense?.SubSense != null) { var sense = ParseGeneralSenseProperties <Sense>(sourceSense.SubSense); sense.SenseNumber = sourceSense.SubSense.SenseNumber; ParseSpecificSenseProperties(sourceSense.SubSense, sense); sense.IsBindingSubstitute = true; pseq.Senses.Add(sense); } } if (sourceSequence[0].Name == Response.SseqEnum.Sense) { var sourceSense = sourceSequence[1].Sense; if (sourceSense != null) { var sense = ParseGeneralSenseProperties <Sense>(sourceSense); sense.SenseNumber = sourceSense.SenseNumber; ParseSpecificSenseProperties(sourceSense, sense); pseq.Senses.Add(sense); } } } senseSequence.Senses.Add(pseq); } } // else? //sourceSseq.Length != 2, should not occur } definition.SenseSequence.Add(senseSequence); } }
private static void AddSense(SenseSequence sequence, JArray array) { sequence.Add(array.ParseNextAs <Sense>()); }
private static void AddBindingSubstitute(SenseSequence sequence, JArray array) { sequence.Add(array.ParseNextAs <BindingSubstitute>().Sense); }