Put
(p *parser)
| 160 | |
| 161 | // Put |
| 162 | func parseCmd(p *parser) (c *Command) { |
| 163 | v := p.tok.value |
| 164 | c = &Command{} |
| 165 | c.s = v |
| 166 | switch v { |
| 167 | case "h": |
| 168 | parseArg(p) |
| 169 | c.fn = func(f Editor) { |
| 170 | q0, q1 := f.Dot() |
| 171 | p.Emit.Dot = append(p.Emit.Dot, Dot{q0, q1}) |
| 172 | } |
| 173 | return |
| 174 | case "=": |
| 175 | if p.Options == nil || p.Options.Sender == nil { |
| 176 | return |
| 177 | } |
| 178 | c.fn = func(f Editor) { |
| 179 | q0, q1 := f.Dot() |
| 180 | str := fmt.Sprintf("%s:#%d,#%d", p.Options.Origin, q0+1, q1) |
| 181 | p.Options.Sender.Send(Print(str)) |
| 182 | } |
| 183 | return |
| 184 | case "p": |
| 185 | if p.Options == nil || p.Options.Sender == nil { |
| 186 | return |
| 187 | } |
| 188 | c.fn = func(f Editor) { |
| 189 | q0, q1 := p.Dot(f) |
| 190 | str := fmt.Sprintf("%s", f.Bytes()[q0:q1]) |
| 191 | p.Options.Sender.Send(Print(str)) |
| 192 | } |
| 193 | return |
| 194 | case "a": |
| 195 | c.fn = Append{Data: []byte(parseArg(p))}.Apply |
| 196 | return |
| 197 | case "i": |
| 198 | c.fn = Insert{Data: []byte(parseArg(p))}.Apply |
| 199 | return |
| 200 | case "c": |
| 201 | c.fn = Change{To: []byte(parseArg(p))}.Apply |
| 202 | return |
| 203 | case "d": |
| 204 | c.fn = Delete{}.Apply |
| 205 | return |
| 206 | case "e": |
| 207 | case "k": |
| 208 | case "r": |
| 209 | c.fn = ReadFile{Name: parseArg(p)}.Apply |
| 210 | return |
| 211 | case "s": |
| 212 | |
| 213 | matchn := int64(1) |
| 214 | sre := parseArg(p) |
| 215 | if p.tok.kind == kindCount { |
| 216 | matchn = p.mustatoi(sre) |
| 217 | sre = parseArg(p) |
| 218 | } |
| 219 | replamp := compileReplaceAmp(parseArg(p)) |
no test coverage detected