blob: 4521031767632cb906f79bc7d679f9ffaddcdb92 [file] [log] [blame]
// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:convert';
import 'dart:io';
int _tputGetInteger(String capName) {
var result = Process.runSync('tput', ['$capName'], stdoutEncoding:UTF8);
if (result.exitCode != 0) {
return 0;
}
return int.parse(result.stdout);
}
String _tputGetSequence(String capName) {
var result = Process.runSync('tput', ['$capName'], stdoutEncoding:UTF8);
if (result.exitCode != 0) {
return '';
}
return result.stdout;
}
class TermInfo {
TermInfo() {
resize();
}
int get lines => _lines;
int get cols => _cols;
int _lines;
int _cols;
void resize() {
_lines = _tputGetInteger('lines');
_cols = _tputGetInteger('cols');
}
// Back one character.
final String cursorBack = _tputGetSequence('cub1');
// Forward one character.
final String cursorForward = _tputGetSequence('cuf1');
// Up one character.
final String cursorUp = _tputGetSequence('cuu1');
// Down one character.
final String cursorDown = _tputGetSequence('cud1');
// Clear to end of line.
final String clrEOL = _tputGetSequence('el');
// Clear screen and home cursor.
final String clear = _tputGetSequence('clear');
}