types/model: add FilepathNoBuild (#3680)

Also, add test for DisplayLongest.

Also, plumb fill param to ParseName in MustParseName
This commit is contained in:
Blake Mizerany
2024-04-16 18:35:43 -07:00
committed by GitHub
parent fb9580df85
commit 9df6c85c3a
2 changed files with 42 additions and 15 deletions

View File

@@ -185,8 +185,8 @@ func parseMask(s string) Name {
return r
}
func MustParseName(s, defaults string) Name {
r := ParseName(s, "")
func MustParseName(s, fill string) Name {
r := ParseName(s, fill)
if !r.IsValid() {
panic("invalid Name: " + s)
}
@@ -643,6 +643,15 @@ func (r Name) Filepath() string {
return filepath.Join(r.parts[:]...)
}
// FilepathNoBuild returns a complete, canonicalized, relative file path using
// the parts of a complete Name, but without the build part.
func (r Name) FilepathNoBuild() string {
for i := range PartBuild {
r.parts[i] = strings.ToLower(r.parts[i])
}
return filepath.Join(r.parts[:PartBuild]...)
}
// isValidPart reports if s contains all valid characters for the given
// part kind.
func isValidPart(kind PartKind, s string) bool {