mirror of
				https://github.com/taigrr/wtf
				synced 2025-01-18 04:03:14 -08:00 
			
		
		
		
	Use a map to return the failed position value and error message
This commit is contained in:
		
							parent
							
								
									774c465f57
								
							
						
					
					
						commit
						0104f97805
					
				@ -12,6 +12,35 @@ const (
 | 
				
			|||||||
	positionPath = "position"
 | 
						positionPath = "position"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -------------------- Position Validation -------------------- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type positionValidation struct {
 | 
				
			||||||
 | 
						err  error
 | 
				
			||||||
 | 
						name string
 | 
				
			||||||
 | 
						val  int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (posVal *positionValidation) hasError() bool {
 | 
				
			||||||
 | 
						return posVal.err != nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// String returns the Stringer representation of the positionValidation
 | 
				
			||||||
 | 
					func (posVal *positionValidation) String() string {
 | 
				
			||||||
 | 
						return fmt.Sprintf("Invalid value for %s:\t%d", posVal.name, posVal.val)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func newPositionValidation(name string, val int, err error) *positionValidation {
 | 
				
			||||||
 | 
						posVal := &positionValidation{
 | 
				
			||||||
 | 
							err:  err,
 | 
				
			||||||
 | 
							name: name,
 | 
				
			||||||
 | 
							val:  val,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return posVal
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* -------------------- Position -------------------- */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Position represents the onscreen location of a widget
 | 
					// Position represents the onscreen location of a widget
 | 
				
			||||||
type Position struct {
 | 
					type Position struct {
 | 
				
			||||||
	Height int
 | 
						Height int
 | 
				
			||||||
@ -22,28 +51,30 @@ type Position struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewPositionFromYAML creates and returns a new instance of Position
 | 
					// NewPositionFromYAML creates and returns a new instance of Position
 | 
				
			||||||
func NewPositionFromYAML(moduleName string, moduleConfig *config.Config) Position {
 | 
					func NewPositionFromYAML(moduleName string, moduleConfig *config.Config) Position {
 | 
				
			||||||
	errs := make(map[string]error)
 | 
						var val int
 | 
				
			||||||
 | 
						var err error
 | 
				
			||||||
 | 
						validations := make(map[string]*positionValidation)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Parse the positional data from the config data
 | 
						// Parse the positional data from the config data
 | 
				
			||||||
	top, err := moduleConfig.Int(positionPath + ".top")
 | 
						val, err = moduleConfig.Int(positionPath + ".top")
 | 
				
			||||||
	errs["top"] = err
 | 
						validations["top"] = newPositionValidation("top", val, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	left, err := moduleConfig.Int(positionPath + ".left")
 | 
						val, err = moduleConfig.Int(positionPath + ".left")
 | 
				
			||||||
	errs["left"] = err
 | 
						validations["left"] = newPositionValidation("left", val, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	width, err := moduleConfig.Int(positionPath + ".width")
 | 
						val, err = moduleConfig.Int(positionPath + ".width")
 | 
				
			||||||
	errs["width"] = err
 | 
						validations["width"] = newPositionValidation("width", val, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	height, err := moduleConfig.Int(positionPath + ".height")
 | 
						val, err = moduleConfig.Int(positionPath + ".height")
 | 
				
			||||||
	errs["height"] = err
 | 
						validations["height"] = newPositionValidation("height", val, err)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	validatePositions(moduleName, errs)
 | 
						validatePositions(moduleName, validations)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pos := Position{
 | 
						pos := Position{
 | 
				
			||||||
		Top:    top,
 | 
							Top:    validations["top"].val,
 | 
				
			||||||
		Left:   left,
 | 
							Left:   validations["left"].val,
 | 
				
			||||||
		Width:  width,
 | 
							Width:  validations["width"].val,
 | 
				
			||||||
		Height: height,
 | 
							Height: validations["height"].val,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return pos
 | 
						return pos
 | 
				
			||||||
@ -71,18 +102,18 @@ func NewPositionFromYAML(moduleName string, moduleConfig *config.Config) Positio
 | 
				
			|||||||
//    width: 2
 | 
					//    width: 2
 | 
				
			||||||
//    height: 1
 | 
					//    height: 1
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
func validatePositions(moduleName string, errs map[string]error) {
 | 
					func validatePositions(moduleName string, validations map[string]*positionValidation) {
 | 
				
			||||||
	var errStr string
 | 
						var errStr string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for pos, err := range errs {
 | 
						for _, posVal := range validations {
 | 
				
			||||||
		if err != nil {
 | 
							if posVal.hasError() {
 | 
				
			||||||
			errStr += fmt.Sprintf("  - Invalid value for %s\n", pos)
 | 
								errStr += fmt.Sprintf("  - %s.\t\033[0;31mError\033[0m %v\n", posVal, posVal.err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if errStr != "" {
 | 
						if errStr != "" {
 | 
				
			||||||
		fmt.Println()
 | 
							fmt.Println()
 | 
				
			||||||
		fmt.Printf("\033[0;31mErrors in %s configuration\033[0m\n", strings.Title(moduleName))
 | 
							fmt.Printf("\033[0;1mErrors in %s position configuration\033[0m\n", strings.Title(moduleName))
 | 
				
			||||||
		fmt.Println(errStr)
 | 
							fmt.Println(errStr)
 | 
				
			||||||
		fmt.Println("Please check your config.yml file.")
 | 
							fmt.Println("Please check your config.yml file.")
 | 
				
			||||||
		fmt.Println()
 | 
							fmt.Println()
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user