Драгоценный камень HighLine использует эту функцию, чтобы найти размеры терминала:
# A Windows savvy method to fetch the console columns, and rows.
def terminal_size
stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE)
bufx, bufy, curx, cury, wattr, left, top, right, bottom, maxx, maxy =
GetConsoleScreenBufferInfo(stdout_handle)
return right - left + 1, bottom - top + 1
end
Этот метод должен работать и в Windows, если вы используете Linux (или что-то подобное) только тогда, вы можете использовать stty size
, чтобы легче находить размеры, используя что-то вроде:
def terminal_size
`stty size`.split.map { |x| x.to_i }.reverse
end