[Gambas-user] removing xterm escape codes from terminal text
bsteers4 at gmail.com
Wed Jun 8 14:19:23 CEST 2022
On Wed, 8 Jun 2022 at 05:06, Brian G <brian at westwoodsvcs.com> wrote:
> I think there is, I will check it in the morning
> Brian G
> Tuesday, 07 June 2022, 01:20PM -07:00 from Bruce Steers bsteers4 at gmail.com
> Has anyone made a routine to strip xterm escape codes from a terminal text?
> I'm looking at having to have a close study of the
> TerminalFilter_VT100.class and try to account for all possible code
> combinations to strip them.
> I thought before i spent hours doing it i'd ask if anyone already has and
> could share the code.
> Or if there is already a way either an existing function somewhere or
> possibly in gb.form.terminal or some other class a function that could do
> I'm looking at TerminalFilter_VT100.class and the function OutputTo()
> looks like it could do it , it seems to do all the right processing but for
> other reasons. maybe by printing to a stream i could get plain text but i
> do not know how to do that :(
> Any thoughts/suggestions?
> Many thanks
> All the best
I have managed this so far but it seems bulky.
I added it to TerminalView.class ,
Bulky because it makes a whole new hidden form/terminalview and uses it's
OutputTo() to print text to it then uses TerminalView.Text,
trouble is OutputTo() needs a terminalview object in it's arguments.
Could be easier to just use the normal TerminalView.Text and process all
the text not one line at a time as it's output. :-/
Or maybe I should copy the OutputTo() and Escape() methods and edit them to
not print text to a TerminalView stream but return it instead.
but the following works at least, this is the output (263 = actual output,
264 = CleanText() output)
RootShell.Process_Read.263: "\x1B]0;root at bonus-G33M-DS2R:
~\x07root at bonus-G33M-DS2R:~# *|com-ready|*"
RootShell.Process_Read.264: "root at bonus-G33M-DS2R:~# *|com-ready|*"
RootShell.Process_Read.263: " \x1B[0m\x1B[01;36mbin\x1B[0m
RootShell.Process_Read.264: " bin lib32 root"
*Public Sub CleanText(Text As String) As String Dim w As Window, tv As
TerminalView, p As Process w = New Form w.Width = Screen.Width w.Height
= 100 w.Arrangement = Arrange.Fill tv = New TerminalView(w) tv.ReadOnly
= True 'w.Show Wait p = tv.Shell("bash")While p.State <> Process.Running
Wait Wend $hFilter.OutputTo(tv, tv._GetCurrentScreen(), p, Text)Dim sText
As String = tv.TextTry p.CloseTry tv.KillReturn sTextEnd*
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the User