betwin

🤞 Get middle values between 2 single digits or single alphabets

Usage no npm install needed!

<script type="module">
  import betwin from 'https://cdn.skypack.dev/betwin';
</script>

README

betwin

npm GitHub dependencies circleci Coverage Status

🤞 Get middle values between 2 single digits or single alphabets

Installation

npm i betwin

🎵 Usage

if first value is bigger than last value, return elements in descending order.

both type and run time are tested

deeply typed

import betwin from 'betwin'

// digit
betwin(0, 9) // [1, 2, 3, 4, 5, 6, 7, 8] : Digit[]
betwin(6, 3) // [5, 4] : Digit[]

// string digit
betwin('0', '9') // ['1', '2', '3', '4', '5', '6', '7', '8'] : StringDigit[]
betwin('6', '3') // ['5', '4'] : StringDigit[]

// lower case
betwin('p', 'v') // ['q', 'r', 's', 't', 'u'] : LowerCaseChar[]
betwin('e', 'a') // ['d', 'c', 'b'] : LowerCaseChar[]

// upper case
betwin('P', 'V') // ['Q', 'R', 'S', 'T', 'U'] : UpperCaseChar[]
betwin('E', 'A') // ['D', 'C', 'B'] : UpperCaseChar[]

// same data type but out of bound
// return <type>[] | undefined
betwin(11, 22) // undefined : number[] | undefined
betwin('11', '22') // undefined : string[] | undefined
betwin('PP', 'VV') // undefined : string[] | undefined
betwin(-4.1, 7.2) // undefined : number[] | undefined

// different data types
// type error: Argument of type '*' is not assignable to parameter of type '"first and last must be the same type"'.
// return undefined
betwin('1', 1) // undefined : undefined
betwin('b', 'E') // undefined : undefined
betwin('abc', -7) // undefined : undefined

see test for more examples

🔨 Utility

most likely you wont need this because same type returns <type>[] | undefined

but if you do need finer control on type, you can also import some predefined types:

import { UpperCaseChar, LowerCaseChar, Digit, StringDigit } from 'betwin'

where

type StringDigit = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'

type Digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

type LowerCaseChar =
    | 'a'
    | 'b'
    | 'c'
    | 'd'
    | 'e'
    | 'f'
    | 'g'
    | 'h'
    | 'i'
    | 'j'
    | 'k'
    | 'l'
    | 'm'
    | 'n'
    | 'o'
    | 'p'
    | 'q'
    | 'r'
    | 's'
    | 't'
    | 'u'
    | 'v'
    | 'w'
    | 'x'
    | 'y'
    | 'z'

type UpperCaseChar =
    | 'A'
    | 'B'
    | 'C'
    | 'D'
    | 'E'
    | 'F'
    | 'G'
    | 'H'
    | 'I'
    | 'J'
    | 'K'
    | 'L'
    | 'M'
    | 'N'
    | 'O'
    | 'P'
    | 'Q'
    | 'R'
    | 'S'
    | 'T'
    | 'U'
    | 'V'
    | 'W'
    | 'X'
    | 'Y'
    | 'Z'