MCPcopy Create free account
hub / github.com/as/edit / parseCmd

Function parseCmd

parse.go:162–394  ·  view source on GitHub ↗

Put

(p *parser)

Source from the content-addressed store, hash-verified

160
161// Put
162func 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))

Callers 1

runMethod · 0.85

Calls 15

parseArgFunction · 0.85
PrintTypeAlias · 0.85
compileReplaceAmpFunction · 0.85
parseSimpleAddrFunction · 0.85
SendMethod · 0.80
BytesMethod · 0.80
mustatoiMethod · 0.80
fatalMethod · 0.80
nextFnMethod · 0.80
CloseMethod · 0.80
SelectMethod · 0.80
DotMethod · 0.65

Tested by

no test coverage detected