/// <summary> /// Пересечение двух диапазонов. /// </summary> public NumberRange Intersect ( NumberRange other ) { return(new NumberRange ( Stop, other.Start )); }
/// <summary> /// Объединение двух диапазонов. /// </summary> public NumberRange Union ( NumberRange other ) { return(new NumberRange ( NumberText.Min(Start, other.Start), NumberText.Max(Stop, other.Stop) )); }
/// <summary> /// Добавление диапазона в набор. /// </summary> /// <param name="range"></param> /// <returns></returns> public NumberRangeCollection Add ( NumberRange range ) { if (ReferenceEquals(range, null)) { throw new ArgumentNullException("range"); } _items.Add(range); return(this); }
private NumberRangeCollection ( NumberRangesParser.ProgramContext program ) : this() { foreach (NumberRangesParser.ItemContext itemContext in program.item()) { NumberRange range = new NumberRange(itemContext); _items.Add(range); } }
/// <summary> /// Разбор текстового представления диапазона. /// </summary> /// <param name="text"></param> /// <returns></returns> public static NumberRange Parse ( string text ) { if (string.IsNullOrEmpty(text)) { throw new ArgumentNullException("text"); } text = text.Trim(); if (string.IsNullOrEmpty(text)) { throw new ArgumentNullException("text"); } NumberRange result; if (text.Contains("-")) { string[] parts = text.Split('-'); if (parts.Length != 2) { throw new FormatException("text"); } parts[0] = parts[0].Trim(); parts[1] = parts[1].Trim(); if (string.IsNullOrEmpty(parts[0]) || string.IsNullOrEmpty(parts[1])) { throw new FormatException("text"); } result = new NumberRange ( parts[0], parts[1] ); } else { result = new NumberRange(text); } return(result); }