Sto tentando di implementare una barra di avanzamento per un'applicazione della riga di comando, ad es.J trasforma il ritorno a capo in newline
[##### ] 50% complete
So che posso solo tornare indietro all'inizio della riga e sovrascrivere, ma sembra così grave. Preferisco usare il ritorno a capo per posizionare il cursore sulla prima colonna e quindi su sovrascrivere.
Il problema è che il motore J non sembra rendere il carattere di ritorno a capo, mentre invece restituisce un ritorno a capo + ritorno a capo.
Ecco che cosa ho provato:
echo 'hi',(10{a.),'world'
(dove 10{a.
è ASCII 10, vale a dire il ritorno a capo) che stampa
hi
world
echo 'hi',(13{a.),'world'
(nuova riga) che stampa
hi
world
shell 'printf "%s\r%s" hi world'
che stampa
hi
world
shell 'printf "%s\n%s" hi world'
che stampa
hi
world
Infine, ho provato tutto quanto sopra in JHS anziché JConsole, con risultati identici.
Da questo, tre cose sono evidenti:
- Il J estremità anteriori ruotare il ritorno del carrello in un ritorno + newline.
- Il front-end J elabora anche i ritorni a capo generati esternamente (ad esempio da printf) in newlines.
- J fa riconosce una nuova riga da solo come mostrato nell'ultimo esempio.
Qualsiasi aiuto?
Si può provare codici di escape ANSI, anche se è un colpo lungo. Prova '(ESC) [80D' invece del ritorno a capo (dove' (ESC) 'è il codice carattere 27), o' (ESC) [A' dopo una nuova riga. – Sneftel
Non riesco a trovare una fonte per questo, ma afaik 'CR',' LF' e 'CRLF' producono tutti la stessa interruzione di riga in jconsole. Hai provato la libreria ncurses? – Eelvex
In base a '~ addons/docs/help/user/previous601.htm' sembra che ANSI fosse deprecato per UTF-8 a partire da J601.Ci proveremo comunque. – hoosierEE