mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Bump cadvisor dependencies to latest head.
This commit is contained in:
		
							
								
								
									
										137
									
								
								vendor/github.com/Azure/go-ansiterm/parser.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								vendor/github.com/Azure/go-ansiterm/parser.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,137 @@
 | 
			
		||||
package ansiterm
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io/ioutil"
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"github.com/Sirupsen/logrus"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var logger *logrus.Logger
 | 
			
		||||
 | 
			
		||||
type AnsiParser struct {
 | 
			
		||||
	currState          State
 | 
			
		||||
	eventHandler       AnsiEventHandler
 | 
			
		||||
	context            *AnsiContext
 | 
			
		||||
	CsiEntry           State
 | 
			
		||||
	CsiParam           State
 | 
			
		||||
	DcsEntry           State
 | 
			
		||||
	Escape             State
 | 
			
		||||
	EscapeIntermediate State
 | 
			
		||||
	Error              State
 | 
			
		||||
	Ground             State
 | 
			
		||||
	OscString          State
 | 
			
		||||
	stateMap           []State
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func CreateParser(initialState string, evtHandler AnsiEventHandler) *AnsiParser {
 | 
			
		||||
	logFile := ioutil.Discard
 | 
			
		||||
 | 
			
		||||
	if isDebugEnv := os.Getenv(LogEnv); isDebugEnv == "1" {
 | 
			
		||||
		logFile, _ = os.Create("ansiParser.log")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	logger = &logrus.Logger{
 | 
			
		||||
		Out:       logFile,
 | 
			
		||||
		Formatter: new(logrus.TextFormatter),
 | 
			
		||||
		Level:     logrus.InfoLevel,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	parser := &AnsiParser{
 | 
			
		||||
		eventHandler: evtHandler,
 | 
			
		||||
		context:      &AnsiContext{},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	parser.CsiEntry = CsiEntryState{BaseState{name: "CsiEntry", parser: parser}}
 | 
			
		||||
	parser.CsiParam = CsiParamState{BaseState{name: "CsiParam", parser: parser}}
 | 
			
		||||
	parser.DcsEntry = DcsEntryState{BaseState{name: "DcsEntry", parser: parser}}
 | 
			
		||||
	parser.Escape = EscapeState{BaseState{name: "Escape", parser: parser}}
 | 
			
		||||
	parser.EscapeIntermediate = EscapeIntermediateState{BaseState{name: "EscapeIntermediate", parser: parser}}
 | 
			
		||||
	parser.Error = ErrorState{BaseState{name: "Error", parser: parser}}
 | 
			
		||||
	parser.Ground = GroundState{BaseState{name: "Ground", parser: parser}}
 | 
			
		||||
	parser.OscString = OscStringState{BaseState{name: "OscString", parser: parser}}
 | 
			
		||||
 | 
			
		||||
	parser.stateMap = []State{
 | 
			
		||||
		parser.CsiEntry,
 | 
			
		||||
		parser.CsiParam,
 | 
			
		||||
		parser.DcsEntry,
 | 
			
		||||
		parser.Escape,
 | 
			
		||||
		parser.EscapeIntermediate,
 | 
			
		||||
		parser.Error,
 | 
			
		||||
		parser.Ground,
 | 
			
		||||
		parser.OscString,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	parser.currState = getState(initialState, parser.stateMap)
 | 
			
		||||
 | 
			
		||||
	logger.Infof("CreateParser: parser %p", parser)
 | 
			
		||||
	return parser
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getState(name string, states []State) State {
 | 
			
		||||
	for _, el := range states {
 | 
			
		||||
		if el.Name() == name {
 | 
			
		||||
			return el
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ap *AnsiParser) Parse(bytes []byte) (int, error) {
 | 
			
		||||
	for i, b := range bytes {
 | 
			
		||||
		if err := ap.handle(b); err != nil {
 | 
			
		||||
			return i, err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return len(bytes), ap.eventHandler.Flush()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ap *AnsiParser) handle(b byte) error {
 | 
			
		||||
	ap.context.currentChar = b
 | 
			
		||||
	newState, err := ap.currState.Handle(b)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if newState == nil {
 | 
			
		||||
		logger.Warning("newState is nil")
 | 
			
		||||
		return errors.New(fmt.Sprintf("New state of 'nil' is invalid."))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if newState != ap.currState {
 | 
			
		||||
		if err := ap.changeState(newState); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (ap *AnsiParser) changeState(newState State) error {
 | 
			
		||||
	logger.Infof("ChangeState %s --> %s", ap.currState.Name(), newState.Name())
 | 
			
		||||
 | 
			
		||||
	// Exit old state
 | 
			
		||||
	if err := ap.currState.Exit(); err != nil {
 | 
			
		||||
		logger.Infof("Exit state '%s' failed with : '%v'", ap.currState.Name(), err)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Perform transition action
 | 
			
		||||
	if err := ap.currState.Transition(newState); err != nil {
 | 
			
		||||
		logger.Infof("Transition from '%s' to '%s' failed with: '%v'", ap.currState.Name(), newState.Name, err)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Enter new state
 | 
			
		||||
	if err := newState.Enter(); err != nil {
 | 
			
		||||
		logger.Infof("Enter state '%s' failed with: '%v'", newState.Name(), err)
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	ap.currState = newState
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user