mirror of
https://github.com/caddyserver/caddy.git
synced 2025-12-08 06:09:53 +00:00
caddyfile: Implement variadics for import args placeholders (#5249)
* implement variadic placeholders
imported snippets reflect actual lines in file
* add import directive line number for imported snippets
add tests for parsing
* add realfile field to help debug import cycle detection.
* use file field to reflect import chain
* Switch syntax, deprecate old syntax, refactoring
- Moved the import args handling to a separate file
- Using {args[0:1]} syntax now
- Deprecate {args.*} syntax
- Use a replacer map for better control over the parsing
- Add plenty of warnings when invalid placeholders are detected
- Renaming variables, cleanup comments for readability
- More tests to cover edgecases I could think of
- Minor cleanup to snippet tracking in tokens, drop a redundant boolean field in tokens
---------
Co-authored-by: Francis Lavoie <lavofr@gmail.com>
This commit is contained in:
parent
bf54892a73
commit
8bc05e598d
5 changed files with 313 additions and 18 deletions
|
|
@ -36,14 +36,31 @@ type (
|
|||
// Token represents a single parsable unit.
|
||||
Token struct {
|
||||
File string
|
||||
origFile string
|
||||
Line int
|
||||
Text string
|
||||
wasQuoted rune // enclosing quote character, if any
|
||||
inSnippet bool
|
||||
snippetName string
|
||||
}
|
||||
)
|
||||
|
||||
// originalFile gets original filename before import modification.
|
||||
func (t Token) originalFile() string {
|
||||
if t.origFile != "" {
|
||||
return t.origFile
|
||||
}
|
||||
return t.File
|
||||
}
|
||||
|
||||
// updateFile updates the token's source filename for error display
|
||||
// and remembers the original filename. Used during "import" processing.
|
||||
func (t *Token) updateFile(file string) {
|
||||
if t.origFile == "" {
|
||||
t.origFile = t.File
|
||||
}
|
||||
t.File = file
|
||||
}
|
||||
|
||||
// load prepares the lexer to scan an input for tokens.
|
||||
// It discards any leading byte order mark.
|
||||
func (l *lexer) load(input io.Reader) error {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue