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