From 95daa793b83a21656fe6c13e6d5cf1c3999108c7 Mon Sep 17 00:00:00 2001 From: Yong Tang Date: Tue, 7 Feb 2017 17:43:28 -0800 Subject: [PATCH] Expose `DomainRegexp` from reference This fix is based on: https://github.com/docker/docker/pull/30746#discussion_r99650885 The goal is to reuse the `DomainRegexp` in docker to check for `:` pattern. Signed-off-by: Yong Tang --- reference/regexp.go | 10 +++++----- reference/regexp_test.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/reference/regexp.go b/reference/regexp.go index 405e995db..786034932 100644 --- a/reference/regexp.go +++ b/reference/regexp.go @@ -20,15 +20,15 @@ var ( optional(repeated(separatorRegexp, alphaNumericRegexp))) // domainComponentRegexp restricts the registry domain component of a - // repository name to start with a component as defined by domainRegexp + // repository name to start with a component as defined by DomainRegexp // and followed by an optional port. domainComponentRegexp = match(`(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])`) - // domainRegexp defines the structure of potential domain components + // DomainRegexp defines the structure of potential domain components // that may be part of image names. This is purposely a subset of what is // allowed by DNS to ensure backwards compatibility with Docker image // names. - domainRegexp = expression( + DomainRegexp = expression( domainComponentRegexp, optional(repeated(literal(`.`), domainComponentRegexp)), optional(literal(`:`), match(`[0-9]+`))) @@ -51,14 +51,14 @@ var ( // regexp has capturing groups for the domain and name part omitting // the separating forward slash from either. NameRegexp = expression( - optional(domainRegexp, literal(`/`)), + optional(DomainRegexp, literal(`/`)), nameComponentRegexp, optional(repeated(literal(`/`), nameComponentRegexp))) // anchoredNameRegexp is used to parse a name value, capturing the // domain and trailing components. anchoredNameRegexp = anchored( - optional(capture(domainRegexp), literal(`/`)), + optional(capture(DomainRegexp), literal(`/`)), capture(nameComponentRegexp, optional(repeated(literal(`/`), nameComponentRegexp)))) diff --git a/reference/regexp_test.go b/reference/regexp_test.go index c21263992..09bc81927 100644 --- a/reference/regexp_test.go +++ b/reference/regexp_test.go @@ -116,7 +116,7 @@ func TestDomainRegexp(t *testing.T) { match: true, }, } - r := regexp.MustCompile(`^` + domainRegexp.String() + `$`) + r := regexp.MustCompile(`^` + DomainRegexp.String() + `$`) for i := range hostcases { checkRegexp(t, r, hostcases[i]) }