go-twig/parse_extends.go
semihalev ec37652bc1 Split parser functions into separate files and add from tag tests
- Move parsing functions for tags into dedicated files
- Add comprehensive tests for the from tag
- Fix the implementation of parseFrom to correctly handle imports
- Improve test coverage for macros and imports

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-11 16:52:42 +03:00

28 lines
702 B
Go

package twig
import "fmt"
func (p *Parser) parseExtends(parser *Parser) (Node, error) {
// Get the line number of the extends token
extendsLine := parser.tokens[parser.tokenIndex-2].Line
// Get the parent template expression
parentExpr, err := parser.parseExpression()
if err != nil {
return nil, err
}
// Expect the block end token
if parser.tokenIndex >= len(parser.tokens) || parser.tokens[parser.tokenIndex].Type != TOKEN_BLOCK_END {
return nil, fmt.Errorf("expected block end token after extends at line %d", extendsLine)
}
parser.tokenIndex++
// Create the extends node
extendsNode := &ExtendsNode{
parent: parentExpr,
line: extendsLine,
}
return extendsNode, nil
}