X-Git-Url: https://njoseph.me/gitweb/nimcoon.git/blobdiff_plain/cc78bba9322df569771980d7b4b06c96b595b43e..9ed70b9e0ee8ebf8e0b1fc1bbe1b77178d1f008c:/src/lib.nim diff --git a/src/lib.nim b/src/lib.nim index 33b15d9..17761f3 100644 --- a/src/lib.nim +++ b/src/lib.nim @@ -145,6 +145,32 @@ proc handleUserInput(searchResult: SearchResult, options: Table[string, bool], p play(player, options, searchResult.url, searchResult.title) +proc isValidOptions*(options: Options): bool = + # Check for invalid combinations of options + var invalidCombinations = [("musicOnly", "fullScreen"), ("download", "fullScreen")] + result = true + for combination in invalidCombinations: + if options[combination[0]] and options[combination[1]]: + stderr.writeLine fmt"Incompatible options provided: {combination[0]} and {combination[1]}" + result = false + + +proc updateOptions(options: Options, newOptions: string): Options = + result = options + + for option in newOptions: + case option + of 'm': result["musicOnly"] = true + of 'f': result["fullScreen"] = true + of 'd': result["download"] = true + else: + echo "Invalid option provided!" + quit(2) + + if(not isValidOptions(result)): + quit(2) + + proc present*(searchResults: SearchResults, options: Table[string, bool], selectionRange: SelectionRange, player: string) = ##[ Continuously present options till the user quits the application @@ -173,8 +199,14 @@ proc present*(searchResults: SearchResults, options: Table[string, bool], select of "q": quit(0) else: - let searchResult = searchResults[selectionRange.begin .. selectionRange.until][parseInt(userInput)] - handleUserInput(searchResult, options, player) + if " " in userInput: + let selection = parseInt(userInput.split(" ")[0]) + let updatedOptions = updateOptions(options, userInput.split(" ")[1]) + let searchResult = searchResults[selectionRange.begin .. selectionRange.until][selection] + handleUserInput(searchResult, updatedOptions, player) + else: + let searchResult = searchResults[selectionRange.begin .. selectionRange.until][parseInt(userInput)] + handleUserInput(searchResult, options, player) if options["feelingLucky"]: quit(0) else: