Permalink
Cannot retrieve contributors at this time
Fetching contributors…
| // Copyright 2013 Canonical Ltd. | |
| // Licensed under the LGPLv3, see LICENCE file for details. | |
| package names | |
| import ( | |
| "regexp" | |
| ) | |
| const ApplicationTagKind = "application" | |
| const ( | |
| ApplicationSnippet = "(?:[a-z][a-z0-9]*(?:-[a-z0-9]*[a-z][a-z0-9]*)*)" | |
| NumberSnippet = "(?:0|[1-9][0-9]*)" | |
| ) | |
| var validApplication = regexp.MustCompile("^" + ApplicationSnippet + "$") | |
| // IsValidApplication returns whether name is a valid application name. | |
| func IsValidApplication(name string) bool { | |
| return validApplication.MatchString(name) | |
| } | |
| type ApplicationTag struct { | |
| Name string | |
| } | |
| func (t ApplicationTag) String() string { return t.Kind() + "-" + t.Id() } | |
| func (t ApplicationTag) Kind() string { return ApplicationTagKind } | |
| func (t ApplicationTag) Id() string { return t.Name } | |
| // NewApplicationTag returns the tag for the application with the given name. | |
| func NewApplicationTag(applicationName string) ApplicationTag { | |
| return ApplicationTag{Name: applicationName} | |
| } | |
| // ParseApplicationTag parses a application tag string. | |
| func ParseApplicationTag(applicationTag string) (ApplicationTag, error) { | |
| tag, err := ParseTag(applicationTag) | |
| if err != nil { | |
| return ApplicationTag{}, err | |
| } | |
| st, ok := tag.(ApplicationTag) | |
| if !ok { | |
| return ApplicationTag{}, invalidTagError(applicationTag, ApplicationTagKind) | |
| } | |
| return st, nil | |
| } |