On this page:
2.1 Name special elements
pcategory?
pname?
2.2 Name structs
pversion
pfull
pcomplete
2.3 Name conversion
2.3.1 PVersion conversion
pversion->string
port->pversion
string->pversion
2.3.2 PFull conversion
pfull->string
string->pfull
2.3.3 PComplete conversion
pcomplete->string
string->pcomplete
8.12

2 Name🔗ℹ

 (require pmsf/name) package: pmsf-name

2.1 Name special elements🔗ℹ

procedure

(pcategory? v)  boolean?

  v : any

Example:
> (pcategory? "app-misc")

#t

procedure

(pname? v)  boolean?

  v : any

Example:
> (pcategory? "editor-wrapper")

#t

2.2 Name structs🔗ℹ

"Name" structs mimic PMS variables derived from package/ebuild names, for reference see Defined Variables (Package Manager Specification, p. 11.1).

struct

(struct pversion (release alpha beta pre rc p revision)
    #:extra-constructor-name make-pversion
    #:transparent)
  release : string?
  alpha : (listof (or/c string? #true))
  beta : (listof (or/c string? #true))
  pre : (listof (or/c string? #true))
  rc : (listof (or/c string? #true))
  p : (listof (or/c string? #true))
  revision : exact-nonnegative-integer?
pversion represents PMS’s "PVR" (package version, and revision).

Example:
> (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9)

(pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9)

struct

(struct pfull (name version)
    #:extra-constructor-name make-pfull
    #:transparent)
  name : pname?
  version : (or/c #false pversion?)
pfull represents PMS’s "PF" (package name, version, and revision).

Example:
> (pfull "editor-wrapper"
         (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9))

(pfull

 "editor-wrapper"

 (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9))

struct

(struct pcomplete (category full)
    #:extra-constructor-name make-pcomplete
    #:transparent)
  category : pcategory?
  full : pfull?
pcomplete represents PMS’s "CATEGORY/PF" (package category, name, version, and revision).

Example:
> (pcomplete "app-misc"
             (pfull "editor-wrapper"
                    (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9)))

(pcomplete

 "app-misc"

 (pfull

  "editor-wrapper"

  (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9)))

2.3 Name conversion🔗ℹ

2.3.1 PVersion conversion🔗ℹ

procedure

(pversion->string input-pversion)  string?

  input-pversion : pversion?

Example:
> (pversion->string (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9))

"1.2.3_alpha4_beta5_pre6_rc7_p8-r9"

procedure

(port->pversion input-port)  pversion?

  input-port : input-port?

procedure

(string->pversion input-string)  pversion?

  input-string : string?

Example:
> (string->pversion "1.2.3_alpha4_beta5_pre6_rc7_p8-r9")

(pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9)

2.3.2 PFull conversion🔗ℹ

procedure

(pfull->string input-pfull)  string?

  input-pfull : pfull?

Example:
> (pfull->string
   (pfull "editor-wrapper"
          (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9)))

"editor-wrapper-1.2.3_alpha4_beta5_pre6_rc7_p8-r9"

procedure

(string->pfull input-string)  pfull?

  input-string : string?

Example:
> (string->pfull "editor-wrapper-1.2.3_alpha4_beta5_pre6_rc7_p8-r9")

(pfull

 "editor-wrapper"

 (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9))

2.3.3 PComplete conversion🔗ℹ

procedure

(pcomplete->string input-pcomplete)  string?

  input-pcomplete : pcomplete?

Example:
> (pcomplete->string
   (pcomplete "app-misc"
              (pfull "editor-wrapper"
                     (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9))))

"app-misc/editor-wrapper-1.2.3_alpha4_beta5_pre6_rc7_p8-r9"

procedure

(string->pcomplete input-string)  pcomplete?

  input-string : string?

Example:
> (string->pcomplete
   "app-misc/editor-wrapper-1.2.3_alpha4_beta5_pre6_rc7_p8-r9")

(pcomplete

 "app-misc"

 (pfull

  "editor-wrapper"

  (pversion "1.2.3" '("4") '("5") '("6") '("7") '("8") 9)))