/// <summary> /// Adds multiple choices. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="choices">The choices to add.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> AddChoices <T>(this SelectionPrompt <T> obj, IEnumerable <T> choices) { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } obj.Choices.AddRange(choices); return(obj); }
/// <summary> /// Sets the title. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="title">The title markup text.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> Title <T>(this SelectionPrompt <T> obj, string?title) { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } obj.Title = title; return(obj); }
/// <summary> /// Sets the function to create a display string for a given choice. /// </summary> /// <typeparam name="T">The prompt type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="displaySelector">The function to get a display string for a given choice.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> UseConverter <T>(this SelectionPrompt <T> obj, Func <T, string>?displaySelector) { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } obj.Converter = displaySelector; return(obj); }
/// <summary> /// Adds a choice. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="choice">The choice to add.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> AddChoice <T>(this SelectionPrompt <T> obj, T choice) { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } obj.Choices.Add(choice); return(obj); }
/// <summary> /// Sets the text that will be displayed if there are more choices to show. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="text">The text to display.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> MoreChoicesText <T>(this SelectionPrompt <T> obj, string?text) { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } obj.MoreChoicesText = text; return(obj); }
/// <summary> /// Sets the highlight style of the selected choice. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="highlightStyle">The highlight style of the selected choice.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> HighlightStyle <T>(this SelectionPrompt <T> obj, Style highlightStyle) { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } obj.HighlightStyle = highlightStyle; return(obj); }
/// <summary> /// Sets the selection mode. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="mode">The selection mode.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> Mode <T>(this SelectionPrompt <T> obj, SelectionMode mode) where T : notnull { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } obj.Mode = mode; return(obj); }
/// <summary> /// Sets how many choices that are displayed to the user. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="pageSize">The number of choices that are displayed to the user.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> PageSize <T>(this SelectionPrompt <T> obj, int pageSize) { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } if (pageSize <= 2) { throw new ArgumentException("Page size must be greater or equal to 3.", nameof(pageSize)); } obj.PageSize = pageSize; return(obj); }
/// <summary> /// Adds multiple choices. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="choices">The choices to add.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> AddChoices <T>(this SelectionPrompt <T> obj, IEnumerable <T> choices) where T : notnull { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } foreach (var choice in choices) { obj.AddChoice(choice); } return(obj); }
/// <summary> /// Adds multiple grouped choices. /// </summary> /// <typeparam name="T">The prompt result type.</typeparam> /// <param name="obj">The prompt.</param> /// <param name="group">The group.</param> /// <param name="choices">The choices to add.</param> /// <returns>The same instance so that multiple calls can be chained.</returns> public static SelectionPrompt <T> AddChoiceGroup <T>(this SelectionPrompt <T> obj, T group, IEnumerable <T> choices) where T : notnull { if (obj is null) { throw new ArgumentNullException(nameof(obj)); } var root = obj.AddChoice(group); foreach (var choice in choices) { root.AddChild(choice); } return(obj); }