MCPcopy Index your code
hub / github.com/Shopify/go-lua / readString

Method readString

scanner.go:348–390  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

346}
347
348func (s *scanner) readString() token {
349 delimiter := s.current
350 for s.saveAndAdvance(); s.current != delimiter; {
351 switch s.current {
352 case endOfStream:
353 s.scanError("unfinished string", tkEOS)
354 case '\n', '\r':
355 s.scanError("unfinished string", tkString)
356 case '\\':
357 s.advance()
358 c := s.current
359 switch esc, ok := escapes[c]; {
360 case ok:
361 s.advanceAndSave(esc)
362 case isNewLine(c):
363 s.incrementLineNumber()
364 s.save('\n')
365 case c == endOfStream: // do nothing
366 case c == 'x':
367 s.save(s.readHexEscape())
368 case c == 'z':
369 for s.advance(); unicode.IsSpace(s.current); {
370 if isNewLine(s.current) {
371 s.incrementLineNumber()
372 } else {
373 s.advance()
374 }
375 }
376 default:
377 if !isDecimal(c) {
378 s.escapeError([]rune{c}, "invalid escape sequence")
379 }
380 s.save(s.readDecimalEscape())
381 }
382 default:
383 s.saveAndAdvance()
384 }
385 }
386 s.saveAndAdvance()
387 str := s.buffer.String()
388 s.buffer.Reset()
389 return token{t: tkString, s: str[1 : len(str)-1]}
390}
391
392func isReserved(s string) bool {
393 for _, reserved := range tokens[:reservedCount] {

Callers 1

scanMethod · 0.95

Calls 12

saveAndAdvanceMethod · 0.95
scanErrorMethod · 0.95
advanceMethod · 0.95
advanceAndSaveMethod · 0.95
incrementLineNumberMethod · 0.95
saveMethod · 0.95
readHexEscapeMethod · 0.95
escapeErrorMethod · 0.95
readDecimalEscapeMethod · 0.95
isNewLineFunction · 0.85
isDecimalFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected