...

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

Documentation: github.com/Azure/go-ansiterm

     1  package ansiterm
     2  
     3  func (ap *AnsiParser) collectParam() error {
     4  	currChar := ap.context.currentChar
     5  	ap.logf("collectParam %#x", currChar)
     6  	ap.context.paramBuffer = append(ap.context.paramBuffer, currChar)
     7  	return nil
     8  }
     9  
    10  func (ap *AnsiParser) collectInter() error {
    11  	currChar := ap.context.currentChar
    12  	ap.logf("collectInter %#x", currChar)
    13  	ap.context.paramBuffer = append(ap.context.interBuffer, currChar)
    14  	return nil
    15  }
    16  
    17  func (ap *AnsiParser) escDispatch() error {
    18  	cmd, _ := parseCmd(*ap.context)
    19  	intermeds := ap.context.interBuffer
    20  	ap.logf("escDispatch currentChar: %#x", ap.context.currentChar)
    21  	ap.logf("escDispatch: %v(%v)", cmd, intermeds)
    22  
    23  	switch cmd {
    24  	case "D": // IND
    25  		return ap.eventHandler.IND()
    26  	case "E": // NEL, equivalent to CRLF
    27  		err := ap.eventHandler.Execute(ANSI_CARRIAGE_RETURN)
    28  		if err == nil {
    29  			err = ap.eventHandler.Execute(ANSI_LINE_FEED)
    30  		}
    31  		return err
    32  	case "M": // RI
    33  		return ap.eventHandler.RI()
    34  	}
    35  
    36  	return nil
    37  }
    38  
    39  func (ap *AnsiParser) csiDispatch() error {
    40  	cmd, _ := parseCmd(*ap.context)
    41  	params, _ := parseParams(ap.context.paramBuffer)
    42  	ap.logf("Parsed params: %v with length: %d", params, len(params))
    43  
    44  	ap.logf("csiDispatch: %v(%v)", cmd, params)
    45  
    46  	switch cmd {
    47  	case "@":
    48  		return ap.eventHandler.ICH(getInt(params, 1))
    49  	case "A":
    50  		return ap.eventHandler.CUU(getInt(params, 1))
    51  	case "B":
    52  		return ap.eventHandler.CUD(getInt(params, 1))
    53  	case "C":
    54  		return ap.eventHandler.CUF(getInt(params, 1))
    55  	case "D":
    56  		return ap.eventHandler.CUB(getInt(params, 1))
    57  	case "E":
    58  		return ap.eventHandler.CNL(getInt(params, 1))
    59  	case "F":
    60  		return ap.eventHandler.CPL(getInt(params, 1))
    61  	case "G":
    62  		return ap.eventHandler.CHA(getInt(params, 1))
    63  	case "H":
    64  		ints := getInts(params, 2, 1)
    65  		x, y := ints[0], ints[1]
    66  		return ap.eventHandler.CUP(x, y)
    67  	case "J":
    68  		param := getEraseParam(params)
    69  		return ap.eventHandler.ED(param)
    70  	case "K":
    71  		param := getEraseParam(params)
    72  		return ap.eventHandler.EL(param)
    73  	case "L":
    74  		return ap.eventHandler.IL(getInt(params, 1))
    75  	case "M":
    76  		return ap.eventHandler.DL(getInt(params, 1))
    77  	case "P":
    78  		return ap.eventHandler.DCH(getInt(params, 1))
    79  	case "S":
    80  		return ap.eventHandler.SU(getInt(params, 1))
    81  	case "T":
    82  		return ap.eventHandler.SD(getInt(params, 1))
    83  	case "c":
    84  		return ap.eventHandler.DA(params)
    85  	case "d":
    86  		return ap.eventHandler.VPA(getInt(params, 1))
    87  	case "f":
    88  		ints := getInts(params, 2, 1)
    89  		x, y := ints[0], ints[1]
    90  		return ap.eventHandler.HVP(x, y)
    91  	case "h":
    92  		return ap.hDispatch(params)
    93  	case "l":
    94  		return ap.lDispatch(params)
    95  	case "m":
    96  		return ap.eventHandler.SGR(getInts(params, 1, 0))
    97  	case "r":
    98  		ints := getInts(params, 2, 1)
    99  		top, bottom := ints[0], ints[1]
   100  		return ap.eventHandler.DECSTBM(top, bottom)
   101  	default:
   102  		ap.logf("ERROR: Unsupported CSI command: '%s', with full context:  %v", cmd, ap.context)
   103  		return nil
   104  	}
   105  
   106  }
   107  
   108  func (ap *AnsiParser) print() error {
   109  	return ap.eventHandler.Print(ap.context.currentChar)
   110  }
   111  
   112  func (ap *AnsiParser) clear() error {
   113  	ap.context = &ansiContext{}
   114  	return nil
   115  }
   116  
   117  func (ap *AnsiParser) execute() error {
   118  	return ap.eventHandler.Execute(ap.context.currentChar)
   119  }
   120  

View as plain text