1package ansiterm 2 3type csiParamState struct { 4 baseState 5} 6 7func (csiState csiParamState) Handle(b byte) (s state, e error) { 8 csiState.parser.logf("CsiParam::Handle %#x", b) 9 10 nextState, err := csiState.baseState.Handle(b) 11 if nextState != nil || err != nil { 12 return nextState, err 13 } 14 15 switch { 16 case sliceContains(alphabetics, b): 17 return csiState.parser.ground, nil 18 case sliceContains(csiCollectables, b): 19 csiState.parser.collectParam() 20 return csiState, nil 21 case sliceContains(executors, b): 22 return csiState, csiState.parser.execute() 23 } 24 25 return csiState, nil 26} 27 28func (csiState csiParamState) Transition(s state) error { 29 csiState.parser.logf("CsiParam::Transition %s --> %s", csiState.Name(), s.Name()) 30 csiState.baseState.Transition(s) 31 32 switch s { 33 case csiState.parser.ground: 34 return csiState.parser.csiDispatch() 35 } 36 37 return nil 38} 39