diff options
Diffstat (limited to 'internal/plan/index.go')
| -rw-r--r-- | internal/plan/index.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/internal/plan/index.go b/internal/plan/index.go index abe073f..0409295 100644 --- a/internal/plan/index.go +++ b/internal/plan/index.go @@ -6,8 +6,22 @@ import ( "fmt" "strconv" "strings" + "time" ) +// CheckTemplate reports the first reason s's placeholders could never +// expand - an unknown placeholder, {mtime} or {now} without a format, an +// unknown format code, {0}, {10} and up, an unclosed "{" - or nil. Capture +// counts are not checked here; that needs the rule's name tests. +func CheckTemplate(s string) error { + if _, err := MaxIndex(s); err != nil { + return err + } + facts := Facts{Name: "a.b", Captures: make([]string, 10), ModTime: time.Unix(0, 0), Now: time.Unix(0, 0)} + _, err := Expand(s, facts) + return err +} + // MaxIndex returns the highest {N} used in s, 0 when none. It reports the // same errors Expand does for a malformed placeholder: an unclosed // placeholder, or {0} (capture groups are numbered from 1). It shares |
