Domanda

Sto cercando di stampare una tabella che è più piacevole per l'occhio rispetto alla rappresentazione del testo di esso. fondamentalmente voglio convertire qualcosa di simile:

+-----+--------+
| age | weight |
+-----+--------+
| 10  | 100    |
| 80  | 500    |
+-----+--------+

a qualcosa di simile:

┌─────┬────────┐
| age | weight |
├─────┼────────┤
│ 10  │   100  │
│ 80  │  500   │
└─────┴────────┘

qui è lo screenshot di quello che vedo nel terminale:

nel look del terminale come questo

Nota gli spazi tra le righe. Il mio problema è che non si connettono correttamente, mentre altri strumenti Unix che utilizzano ANSI stampa look raffinato nel terminale. Ad esempio, l'albero, se corro tree -A nel mio terminale `ottengo questo:

albero nel terminale

Si noti come le linee verticali sono collegati tra loro. E 'buffo perché quando Copio e incollo l'uscita di un albero nel mio editor di testo ed eseguire il mio script ottengo qualcosa di simile:

albero nel mio codice

Ovviamente mi manca qualcosa sulla stampa caratteri ANSI nel terminale e non riusciva a trovare nulla da googling. Qualcuno può far luce su questo argomento?

È stato utile?

Soluzione

Credo che dovrei rispondere alla mia domanda. Dopo una piccola ricerca e l'aiuto di un amico e capo, Linus, ho scoperto che ho bisogno di forzare il terminale di andare in modalità grafica, poi stampare i caratteri speciali e poi tornare alla modalità testo. il codice ASCII per passare alla modalità grafica è 14 e 15 si ritorna alla modalità testo. ecco il codice in Ruby:

printf("%c\n", 14)
printf("%c ", 0x6A) # ┘
printf("%c ", 0x6B) # ┐
printf("%c ", 0x6C) # ┌
printf("%c ", 0x6D) # └
printf("%c ", 0x6E) # ┼ 
printf("%c ", 0x71) # ─
printf("%c ", 0x74) # ├
printf("%c ", 0x75) # ┤
printf("%c ", 0x76) # ┴
printf("%c ", 0x77) # ┬
printf("%c\n", 0x78) # │


a = sprintf("%c", 0x6C) + # ┌
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c\n", 0x6B) +  # ┐
sprintf("%c", 0x78) + # │
#print("      ")
"      " + 
sprintf("%c\n", 0x78) + # │
sprintf("%c", 0x6D) + # └
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x71) + # ─
sprintf("%c", 0x6A)  # ┘

puts a

printf("%c\n", 15)

Altri suggerimenti

È davvero dovrebbe indagare ncurses e le sue varianti. Ci sono una serie di diversi attacchi la lingua, anche se è stato originariamente scritto per C. Esso fornisce una suite abbastanza consistente di librerie per la produzione di Tuis (interfacce utente di testo) con finestre, menu, bordi in scatola ecc Hit fino wikipedia per cominciare a trovare alcuni altri riferimenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top