...
1 package ansiterm
2
3 type escapeIntermediateState struct {
4 baseState
5 }
6
7 func (escState escapeIntermediateState) Handle(b byte) (s state, e error) {
8 escState.parser.logf("escapeIntermediateState::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 sliceContains(intermeds, b):
16 return escState, escState.parser.collectInter()
17 case sliceContains(executors, b):
18 return escState, escState.parser.execute()
19 case sliceContains(escapeIntermediateToGroundBytes, b):
20 return escState.parser.ground, nil
21 }
22
23 return escState, nil
24 }
25
26 func (escState escapeIntermediateState) Transition(s state) error {
27 escState.parser.logf("escapeIntermediateState::Transition %s --> %s", escState.Name(), s.Name())
28 escState.baseState.Transition(s)
29
30 switch s {
31 case escState.parser.ground:
32 return escState.parser.escDispatch()
33 }
34
35 return nil
36 }
37
View as plain text