Skip to content

Commit

Permalink
fix: proper lead on hint
Browse files Browse the repository at this point in the history
  • Loading branch information
3cp committed Apr 3, 2019
1 parent 13c1a9e commit f9fa5fa
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 5 deletions.
4 changes: 2 additions & 2 deletions lib/prompts/multiselect.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const color = require('ansi-colors');
const Prompt = require('./prompt');
const { cursor } = require('sisteransi');
const { clear, figures, style } = require('./util');
const { clear, figures, style, lead } = require('./util');

/**
* MultiselectPrompt Base Element
Expand Down Expand Up @@ -169,7 +169,7 @@ class MultiselectPrompt extends Prompt {

let choice = (v.selected ? color.green(figures.bullet) : color.dim(figures.bullet)) + ' ' + title;
if (v.hint) {
choice += `\n ${color.dim(v.hint)}`;
choice += `\n${color.dim(lead(v.hint, 2))}`;
}
return choice;
})
Expand Down
4 changes: 2 additions & 2 deletions lib/prompts/select.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const color = require('ansi-colors');
const Prompt = require('./prompt');
const { style, clear, figures } = require('./util');
const { style, clear, figures, lead } = require('./util');
const { cursor } = require('sisteransi');

/**
Expand Down Expand Up @@ -141,7 +141,7 @@ class SelectPrompt extends Prompt {
}
let choice = `${prefix} ${title}`;
if (v.hint) {
choice += `\n ${color.dim(v.hint)}`;
choice += `\n${color.dim(lead(v.hint, 2))}`;
}
return choice;
})
Expand Down
3 changes: 2 additions & 1 deletion lib/prompts/util/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ module.exports = {
clear: require('./clear'),
style: require('./style'),
strip: require('./strip'),
figures: require('./figures')
figures: require('./figures'),
lead: require('./lead')
};
36 changes: 36 additions & 0 deletions lib/prompts/util/lead.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const strip = require('./strip');
module.exports = (str, lead = 0, perLine = process.stdout.columns) => {
str = strip(str);
const cap = perLine - lead;
lead = ' '.repeat(lead);
if (cap < 5) {
// too short
return lead + str;
}

let pos = 0;
const len = str.length;

function line() {
if (pos === len) return;
let output = lead;
let count = 0;
let char;
while (pos < len && (char = str.charAt(pos)) !== '\n') {
output += char;
pos += 1;
count += 1;
if (count === cap) break;
}
if (count === 0) return;
return output;
}

let l;
const lines = [];
while ((l = line()) !== undefined) {
lines.push(l);
}

return lines.join('\n');
};

0 comments on commit f9fa5fa

Please sign in to comment.