You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.2 KiB
48 lines
1.2 KiB
'use strict' |
|
var consoleControl = require('console-control-strings') |
|
var renderTemplate = require('./render-template.js') |
|
var validate = require('aproba') |
|
|
|
var Plumbing = module.exports = function (theme, template, width) { |
|
if (!width) width = 80 |
|
validate('OAN', [theme, template, width]) |
|
this.showing = false |
|
this.theme = theme |
|
this.width = width |
|
this.template = template |
|
} |
|
Plumbing.prototype = {} |
|
|
|
Plumbing.prototype.setTheme = function (theme) { |
|
validate('O', [theme]) |
|
this.theme = theme |
|
} |
|
|
|
Plumbing.prototype.setTemplate = function (template) { |
|
validate('A', [template]) |
|
this.template = template |
|
} |
|
|
|
Plumbing.prototype.setWidth = function (width) { |
|
validate('N', [width]) |
|
this.width = width |
|
} |
|
|
|
Plumbing.prototype.hide = function () { |
|
return consoleControl.gotoSOL() + consoleControl.eraseLine() |
|
} |
|
|
|
Plumbing.prototype.hideCursor = consoleControl.hideCursor |
|
|
|
Plumbing.prototype.showCursor = consoleControl.showCursor |
|
|
|
Plumbing.prototype.show = function (status) { |
|
var values = Object.create(this.theme) |
|
for (var key in status) { |
|
values[key] = status[key] |
|
} |
|
|
|
return renderTemplate(this.width, this.template, values).trim() + |
|
consoleControl.color('reset') + |
|
consoleControl.eraseLine() + consoleControl.gotoSOL() |
|
}
|
|
|