Skip to content

Commit

Permalink
fix(prompt): key symbols in prompt info are hardcoded (#274)
Browse files Browse the repository at this point in the history
  • Loading branch information
c4spar committed Aug 22, 2021
1 parent 57e7434 commit a6138b2
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 16 deletions.
17 changes: 10 additions & 7 deletions prompt/_generic_list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
GenericInputPromptSettings,
} from "./_generic_input.ts";
import { blue, bold, dim, stripColor } from "./deps.ts";
import { Figures } from "./figures.ts";
import { Figures, getFiguresByKeys } from "./figures.ts";
import { distance } from "../_utils/distance.ts";

/** Select key options. */
Expand Down Expand Up @@ -160,17 +160,20 @@ export abstract class GenericList<T, V, S extends GenericListSettings<T, V>>
}
const selected: number = this.listIndex + 1;
const actions: Array<[string, Array<string>]> = [
["Next", [Figures.ARROW_DOWN]],
["Previous", [Figures.ARROW_UP]],
["Next Page", [Figures.PAGE_DOWN]],
["Previous Page", [Figures.PAGE_UP]],
["Submit", [Figures.ENTER]],
["Next", getFiguresByKeys(this.settings.keys?.next ?? [])],
["Previous", getFiguresByKeys(this.settings.keys?.previous ?? [])],
["Next Page", getFiguresByKeys(this.settings.keys?.nextPage ?? [])],
[
"Previous Page",
getFiguresByKeys(this.settings.keys?.previousPage ?? []),
],
["Submit", getFiguresByKeys(this.settings.keys?.submit ?? [])],
];

return "\n" + this.settings.indent + blue(Figures.INFO) +
bold(` ${selected}/${this.options.length} `) +
actions
.map((cur) => `${cur[0]}: ${bold(cur[1].join(" "))}`)
.map((cur) => `${cur[0]}: ${bold(cur[1].join(", "))}`)
.join(", ");
}

Expand Down
21 changes: 12 additions & 9 deletions prompt/_generic_suggestions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
GenericInputPromptSettings,
} from "./_generic_input.ts";
import { blue, bold, dim, stripColor, underline } from "./deps.ts";
import { Figures } from "./figures.ts";
import { Figures, getFiguresByKeys } from "./figures.ts";
import { distance } from "../_utils/distance.ts";

interface LocalStorage {
Expand Down Expand Up @@ -183,23 +183,26 @@ export abstract class GenericSuggestions<
if (this.settings.suggestions?.length) {
if (this.settings.list) {
actions.push(
["Next", [Figures.ARROW_DOWN]],
["Previous", [Figures.ARROW_UP]],
["Next Page", [Figures.PAGE_DOWN]],
["Previous Page", [Figures.PAGE_UP]],
["Next", getFiguresByKeys(this.settings.keys?.next ?? [])],
["Previous", getFiguresByKeys(this.settings.keys?.previous ?? [])],
["Next Page", getFiguresByKeys(this.settings.keys?.nextPage ?? [])],
[
"Previous Page",
getFiguresByKeys(this.settings.keys?.previousPage ?? []),
],
);
} else {
actions.push(
["Next", [Figures.ARROW_UP]],
["Previous", [Figures.ARROW_DOWN]],
["Next", getFiguresByKeys(this.settings.keys?.next ?? [])],
["Previous", getFiguresByKeys(this.settings.keys?.previous ?? [])],
);
}
actions.push(
["Complete", [Figures.TAB_RIGHT, dim(" or"), Figures.ARROW_RIGHT]],
["Complete", getFiguresByKeys(this.settings.keys?.complete ?? [])],
);
}
actions.push(
["Submit", [Figures.ENTER]],
["Submit", getFiguresByKeys(this.settings.keys?.submit ?? [])],
);

let info = this.settings.indent;
Expand Down
21 changes: 21 additions & 0 deletions prompt/figures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,24 @@ const win = {

/** Prompt icons. */
export const Figures = Deno.build.os === "windows" ? win : main;

const keyMap: Record<string, keyof typeof Figures> = {
up: "ARROW_UP",
down: "ARROW_DOWN",
pageup: "PAGE_UP",
pagedown: "PAGE_DOWN",
tab: "TAB_RIGHT",
enter: "ENTER",
return: "ENTER",
};

export function getFiguresByKeys(keys: Array<string>): Array<string> {
const figures: Array<string> = [];
for (const key of keys) {
const figure = Figures[keyMap[key]] ?? key;
if (!figures.includes(figure)) {
figures.push(figure);
}
}
return figures;
}

0 comments on commit a6138b2

Please sign in to comment.