...

Source file src/github.com/Azure/go-ansiterm/escape_state.go

Documentation: github.com/Azure/go-ansiterm

     1  package ansiterm
     2  
     3  type escapeState struct {
     4  	baseState
     5  }
     6  
     7  func (escState escapeState) Handle(b byte) (s state, e error) {
     8  	escState.parser.logf("escapeState::Handle %#x", b)
     9  	nextState, err := escState.baseState.Handle(b)
    10  	if nextState != nil || err != nil {
    11  		return nextState, err
    12  	}
    13  
    14  	switch {
    15  	case b == ANSI_ESCAPE_SECONDARY:
    16  		return escState.parser.csiEntry, nil
    17  	case b == ANSI_OSC_STRING_ENTRY:
    18  		return escState.parser.oscString, nil
    19  	case sliceContains(executors, b):
    20  		return escState, escState.parser.execute()
    21  	case sliceContains(escapeToGroundBytes, b):
    22  		return escState.parser.ground, nil
    23  	case sliceContains(intermeds, b):
    24  		return escState.parser.escapeIntermediate, nil
    25  	}
    26  
    27  	return escState, nil
    28  }
    29  
    30  func (escState escapeState) Transition(s state) error {
    31  	escState.parser.logf("Escape::Transition %s --> %s", escState.Name(), s.Name())
    32  	escState.baseState.Transition(s)
    33  
    34  	switch s {
    35  	case escState.parser.ground:
    36  		return escState.parser.escDispatch()
    37  	case escState.parser.escapeIntermediate:
    38  		return escState.parser.collectInter()
    39  	}
    40  
    41  	return nil
    42  }
    43  
    44  func (escState escapeState) Enter() error {
    45  	escState.parser.clear()
    46  	return nil
    47  }
    48  

View as plain text