Wie bekomme ich die Breite des Terminalfensters in Ruby?
Haben Sie jemals bemerkt, dass, wenn Sie rake -T Schienen in der Liste der rake Beschreibungen sind abgeschnitten von der Breite des terminal-Fensters. So sollte es sein, einen Weg, um es in Ruby und Verwenden Sie es.
Ich bin drucken manche Ascii-Kunst auf den Bildschirm und ich will nicht, dass es gebrochen werden. deshalb brauche ich, um herauszufinden, die Breite der Klemme zur Laufzeit einige, wie.
Irgendeine Idee, wie das zu tun?
InformationsquelleAutor der Frage Allen Bargi | 2010-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich festgestellt, dass auf Ubuntu, keine der anderen Methoden, die hier angegeben (
ENV['COLUMNS']
,tput columns
oder hirb) geben Sie das richtige Ergebnis, wenn das terminal geändert werden, während der Ruby-Anwendung ausgeführt wird. Dies ist nicht ein Problem für Skripten, aber es ist ein Problem für interaktive Konsolen, wie irb.Den ruby-gem terminfo ist die beste Lösung, die ich habe, so weit zu geben, die richtigen Maße, nach einer Größe, aber es erfordert die Installation eines zusätzlichen Edelstein, und ist unix-spezifisch.
Des Edelsteins Nutzung ist einfach:
TermInfo-intern verwendet TIOCGWINSZ ioctl für die Bildschirmgröße.
Alternativ, wie bereits erwähnt, durch user83510, highline - system_extensions auch funktioniert:
Da er intern, highline verwendet
stty size
auf Unix, und andere Implementierungen für ncurses und Windows.Listener für änderungen an den terminal-Größe (anstatt polling), können wir abfangen des SIGWINCH-signal:
Dies ist insbesondere bei Anwendungen nützlich, die Verwendung von Readline, wie irb:
InformationsquelleAutor der Antwort Ralf
Gibt es einen gemeinsamen unix-Befehl:
Dieser gibt die Breite des Terminals.
InformationsquelleAutor der Antwort Brian Gianforcaro
Link
InformationsquelleAutor der Antwort oconn
Wenn Sie möchten, dass Ihr code auf allen Plattformen funktionieren, hier ist, was ich verwenden: http://github.com/cldwalker/hirb/blob/master/lib/hirb/util.rb#L61-71
Schauen Sie sich auch die system_extensions Datei in highline
InformationsquelleAutor der Antwort cldwalker
Ruby tatsächlich kommt mit einem built-in-Klasse namens "Curses", die Sie können tun, alle möglichen Dinge mit dem terminal-Fenster.
Beispielsweise können Sie dies tun:
Weitere Infos: http://ruby-doc.org/stdlib-1.9.3/libdoc/curses/rdoc/Curses/Window.html
InformationsquelleAutor der Antwort Tom Chapin
Ich bin ein bisschen spät, aber in der Rechen Aufgaben, die ich tun, die folgenden: Rake.- Anwendung.terminal_width
InformationsquelleAutor der Antwort dei79
ENV['COLUMNS'] geben Sie die Anzahl der Spalten in der Klemme.
InformationsquelleAutor der Antwort Ethan Gunderson