mirror of
https://github.com/semihalev/twig.git
synced 2026-03-14 13:55:46 +01:00
- 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>
28 lines
702 B
Go
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
|
|
}
|