Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var FilenameCaseRule = rule.Rule{ Name: filenameCaseRuleName, Schema: rule.NewSchema(schemaJSON), Run: func(ctx rule.RuleContext, options []any) rule.RuleListeners { if ctx.SourceFile == nil { return nil } fileName := ctx.SourceFile.FileName() if fileName == "" { return nil } pathSegments := getPathSegments(fileName, ctx.ProcessCurrentDirectory()) basename := pathSegments[len(pathSegments)-1] if basename == "<input>" || basename == "<text>" { return nil } opts := parseOptions(options) reportRange := core.NewTextRange(0, 0) if len(opts.invalidIgnores) > 0 { if ctx.DisableManager.IsRuleDisabled(filenameCaseRuleName, reportRange.Pos()) { return nil } for _, bad := range opts.invalidIgnores { ctx.ReportRange(reportRange, rule.RuleMessage{ Id: "invalidIgnorePattern", Description: fmt.Sprintf( "Invalid regular expression in `ignore` option: `%s`: %s", bad.pattern, bad.err.Error(), ), }) } return nil } for _, segment := range pathSegments { for _, re := range opts.ignores { if re.TestOrTimeout(segment) { return nil } } } cases := opts.selectedCases() if opts.checkDirectories { for _, directory := range pathSegments[:len(pathSegments)-1] { if strings.HasPrefix(directory, "$") { continue } leading, words := splitFilename(directory) valid, invalidWord, invalidCandidates := validateFilename(words, cases) if valid { continue } if ctx.DisableManager.IsRuleDisabled(filenameCaseRuleName, reportRange.Pos()) { return nil } renamed := fixFilename(words, cases, invalidWord, invalidCandidates, leading, "") ctx.ReportRange(reportRange, rule.RuleMessage{ Id: messageIDDirectoryCase, Description: "Directory name `" + directory + "` is not in " + englishishCaseNames(cases) + ". Rename it to " + englishishBacktickJoin(renamed) + ".", }) return nil } } if isIgnoredByDefault(basename) { return nil } ext := nodeExtname(basename) filename := basename[:len(basename)-len(ext)] middle := "" if opts.multipleFileExtensions { if i := strings.IndexByte(filename, '.'); i >= 0 { middle = filename[i:] filename = filename[:i] } } leading, words := splitFilename(filename) valid, invalidWord, invalidCandidates := validateFilename(words, cases) if strings.HasPrefix(filename, "$") { valid = true } lowerExt := ecmascript.StringToLowerCase(ext) if valid { if ext != lowerExt { if ctx.DisableManager.IsRuleDisabled(filenameCaseRuleName, reportRange.Pos()) { return nil } ctx.ReportRange(reportRange, rule.RuleMessage{ Id: messageIDFilenameExtension, Description: "File extension `" + ext + "` is not in lowercase. Rename it to `" + filename + middle + lowerExt + "`.", }) } return nil } if ctx.DisableManager.IsRuleDisabled(filenameCaseRuleName, reportRange.Pos()) { return nil } renamed := fixFilename(words, cases, invalidWord, invalidCandidates, leading, middle+lowerExt) ctx.ReportRange(reportRange, rule.RuleMessage{ Id: messageIDFilenameCase, Description: "Filename is not in " + englishishCaseNames(cases) + ". Rename it to " + englishishBacktickJoin(renamed) + ".", }) return nil }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.