No description
Find a file
2023-02-01 21:49:46 +09:00
src change Nim version 2023-02-01 19:10:43 +09:00
tests change Nim version 2023-02-01 19:10:43 +09:00
.gitignore nimble init 2023-01-31 21:32:36 +09:00
cliSeqSelector.nimble change Nim version 2023-02-01 19:10:43 +09:00
LICENSE Initial commit 2023-01-31 21:25:38 +09:00
README.md update README 2023-02-01 20:26:25 +09:00

cliSeqSelector

Nim library seq selector in CLI

Usage

Select from string list

import cliSeqSelector
let
  list = @["item1", "item2", "item3", "item4", "item5"]
  res = list.select("message")
$ ./yourAppName
message
> item1

press Down or 'j' then

$ ./yourAppName
message
> item2

press Right or 'l' or 'G' then

$ ./yourAppName
message
> item5

press Up or 'k' then

$ ./yourAppName
message
> item4

press Enter then

res.val == "item4"
res.idx == 3

Select from enum

type
  sample = enum
    item1
    item2
    item3
    item4
    item5
let res = sample.select("message")

display contents is same as string list.

res == sample.itemx

proc definitions

proc select*(list: seq[string], idx = 0): tuple[val: string, idx: int]
proc select*(list: seq[string], message: string, idx = 0): tuple[val: string, idx: int]
proc select*[T: enum](enm: typedesc[T]): T
proc select*[T: enum](enm: typedesc[T], val: T): T
proc select*[T: enum](enm: typedesc[T], message: string): T
proc select*[T: enum](enm: typedesc[T], message: string, val: T): T