MCPcopy Create free account
hub / github.com/CppCXY/EmmyLuaCodeStyle / GetTokenAtOffset

Method GetTokenAtOffset

LuaParser/src/Ast/LuaSyntaxTree.cpp:474–499  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

472}
473
474LuaSyntaxNode LuaSyntaxTree::GetTokenAtOffset(std::size_t offset) const {
475 if (_tokens.empty()) {
476 return LuaSyntaxNode();
477 }
478
479 auto tokenIt = std::partition_point(
480 _tokens.begin(), _tokens.end(),
481 [offset](const IncrementalToken &token) {
482 return token.Start <= offset;
483 });
484 std::size_t tokenIndex = 0;
485 if (tokenIt == _tokens.end()) {
486 tokenIndex = _tokens.size() - 1;
487 } else if (tokenIt == _tokens.begin()) {
488 tokenIndex = 0;
489 } else {
490 tokenIndex = tokenIt - _tokens.begin() - 1;
491 }
492
493 auto &token = _tokens[tokenIndex];
494 if (token.Start <= offset && (token.Start + token.Length) > offset) {
495 return LuaSyntaxNode(token.NodeIndex);
496 }
497
498 return LuaSyntaxNode();
499}
500
501std::string LuaSyntaxTree::GetDebugView() {
502 std::string debugView;

Callers 1

FormatLineMethod · 0.80

Calls 5

LuaSyntaxNodeClass · 0.85
emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected