static List <Pullenti.Ner.ReferentToken> _createRefs(List <DateExToken.DateExItemToken> its) { List <Pullenti.Ner.ReferentToken> res = new List <Pullenti.Ner.ReferentToken>(); Pullenti.Ner.Date.DateReferent own = null; for (int i = 0; i < its.Count; i++) { DateExToken.DateExItemToken it = its[i]; Pullenti.Ner.Date.DateReferent d = new Pullenti.Ner.Date.DateReferent(); if (it.IsValueRelate) { d.IsRelative = true; } if (own != null) { d.Higher = own; } if (it.Typ == DateExToken.DateExItemTokenType.Day) { d.Day = it.Value; } else if (it.Typ == DateExToken.DateExItemTokenType.DayOfWeek) { d.DayOfWeek = it.Value; } else if (it.Typ == DateExToken.DateExItemTokenType.Hour) { d.Hour = it.Value; if (((i + 1) < its.Count) && its[i + 1].Typ == DateExToken.DateExItemTokenType.Minute && !its[i + 1].IsValueRelate) { d.Minute = its[i + 1].Value; i++; } } else if (it.Typ == DateExToken.DateExItemTokenType.Minute) { d.Minute = it.Value; } else if (it.Typ == DateExToken.DateExItemTokenType.Month) { d.Month = it.Value; } else if (it.Typ == DateExToken.DateExItemTokenType.Quartal) { d.Quartal = it.Value; } else if (it.Typ == DateExToken.DateExItemTokenType.Week) { d.Week = it.Value; } else if (it.Typ == DateExToken.DateExItemTokenType.Year) { d.Year = it.Value; } else { continue; } res.Add(new Pullenti.Ner.ReferentToken(d, it.BeginToken, it.EndToken)); own = d; it.Src = d; } if (res.Count > 0) { res[0].Tag = own; } return(res); }
static List <DateExToken.DateExItemToken> _createDateEx(Pullenti.Ner.Date.DateReferent dr) { List <DateExToken.DateExItemToken> res = new List <DateExToken.DateExItemToken>(); for (; dr != null; dr = dr.Higher) { int n; foreach (Pullenti.Ner.Slot s in dr.Slots) { DateExToken.DateExItemToken it = new DateExToken.DateExItemToken(null, null) { Typ = DateExToken.DateExItemTokenType.Undefined }; if (dr.GetStringValue(Pullenti.Ner.Date.DateReferent.ATTR_ISRELATIVE) == "true") { it.IsValueRelate = true; } if (s.TypeName == Pullenti.Ner.Date.DateReferent.ATTR_YEAR) { it.Typ = DateExToken.DateExItemTokenType.Year; if (int.TryParse(s.Value as string, out n)) { it.Value = n; } } else if (s.TypeName == Pullenti.Ner.Date.DateReferent.ATTR_QUARTAL) { it.Typ = DateExToken.DateExItemTokenType.Quartal; if (int.TryParse(s.Value as string, out n)) { it.Value = n; } } else if (s.TypeName == Pullenti.Ner.Date.DateReferent.ATTR_MONTH) { it.Typ = DateExToken.DateExItemTokenType.Month; if (int.TryParse(s.Value as string, out n)) { it.Value = n; } } else if (s.TypeName == Pullenti.Ner.Date.DateReferent.ATTR_WEEK) { it.Typ = DateExToken.DateExItemTokenType.Week; if (int.TryParse(s.Value as string, out n)) { it.Value = n; } } else if (s.TypeName == Pullenti.Ner.Date.DateReferent.ATTR_DAYOFWEEK) { it.Typ = DateExToken.DateExItemTokenType.DayOfWeek; if (int.TryParse(s.Value as string, out n)) { it.Value = n; } } else if (s.TypeName == Pullenti.Ner.Date.DateReferent.ATTR_DAY) { it.Typ = DateExToken.DateExItemTokenType.Day; if (int.TryParse(s.Value as string, out n)) { it.Value = n; } } else if (s.TypeName == Pullenti.Ner.Date.DateReferent.ATTR_HOUR) { it.Typ = DateExToken.DateExItemTokenType.Hour; if (int.TryParse(s.Value as string, out n)) { it.Value = n; } } else if (s.TypeName == Pullenti.Ner.Date.DateReferent.ATTR_MINUTE) { it.Typ = DateExToken.DateExItemTokenType.Minute; if (int.TryParse(s.Value as string, out n)) { it.Value = n; } } if (it.Typ != DateExToken.DateExItemTokenType.Undefined) { res.Insert(0, it); } } } res.Sort(); return(res); }