Skip to content

Commit 3f9cd76

Browse files
authored
Merge pull request package-url#497 from ppkarwasz/feat/lowercase
feat: Clarify case-folding behavior Signed-off-by: Philippe Ombredanne <pombredanne@aboutcode.org>
2 parents e56202e + 724a50d commit 3f9cd76

1 file changed

Lines changed: 14 additions & 3 deletions

File tree

PURL-SPECIFICATION.rst

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,10 @@ A ``purl`` string is an ASCII URL string composed of seven components.
116116

117117
Except as expressly stated otherwise in this section, each component:
118118

119-
- MAY be composed of any of the characters defined in the "Permitted
120-
characters" section
121-
- MUST be encoded as defined in the "Character encoding" section
119+
- MAY be composed of any of the characters defined in the "`Permitted characters`_" section
120+
- MUST be encoded as defined in the "`Character encoding`_" section
121+
122+
The "lowercase" rules are defined in the "`Case folding`_" section.
122123

123124
The rules for each component are:
124125

@@ -287,6 +288,16 @@ Character encoding
287288
- With the exception of the percent-encoding mechanism, the rules regarding
288289
percent-encoding are defined by this specification alone.
289290

291+
Case folding
292+
~~~~~~~~~~~~
293+
294+
References to "lowercase" in this specification refer to the **culture-invariant**
295+
full case mapping defined in
296+
`Section 3.13.2 of the Unicode Standard <https://www.unicode.org/versions/Unicode16.0.0/core-spec/chapter-3/#G34078>`_.
297+
298+
When applied to the ASCII character set, this operation converts uppercase
299+
Latin letters (``A to Z``) to their corresponding lowercase forms (``a to z``).
300+
All other ASCII characters remain unchanged.
290301

291302
How to build ``purl`` string from its components
292303
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0 commit comments

Comments
 (0)