Skip to content

Commit 61a628d

Browse files
authored
Merge pull request #612 from package-url/593-set-character-lines-to-78
Update /docs .md files to 78-column width max #593 Also change "MUST" to "must" and similar for Ecma standard terminology Formatting changes only
2 parents d396ad2 + cdde6d4 commit 61a628d

File tree

11 files changed

+193
-87
lines changed

11 files changed

+193
-87
lines changed

docs/how-to-build.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ To build a `purl` string from its components:
1111

1212
- Start a `purl` string with the "pkg:" `scheme` as a lowercase ASCII string
1313

14-
- Append the `type` string to the `purl` as an unencoded lowercase ASCII string
14+
- Append the `type` string to the `purl` as an unencoded lowercase ASCII
15+
string
1516

1617
- Append '/' to the `purl`
1718

docs/known-qualifiers.md

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,35 @@
22

33
Note: Do not abuse `qualifiers`: it can be tempting to use many qualifier
44
keys but their usage should be limited to the bare minimum for proper package
5-
identification to ensure that a `purl` stays compact and readable in most cases.
5+
identification to ensure that a `purl` stays compact and readable in most
6+
cases.
67

78
Additional, separate external attributes stored outside of a `purl` are the
89
preferred mechanism to convey extra long and optional information such as a
910
download URL, VCS URL or checksums in an API, database or web form.
1011

11-
With this warning, the known `key` and `value` defined here are valid for use in
12-
all package types:
12+
With this warning, the known `key` and `value` defined here are valid for use
13+
in all package types:
1314

1415
- `vers` allows the specification of a version range.
15-
The value MUST adhere to the `Version Range Specification`.
16+
The value must adhere to the `Version Range Specification`.
1617
This qualifier is mutually exclusive with the `version` component.
1718
For example:
1819

1920
pkg:pypi/django?vers=vers:pypi%2F%3E%3D1.11.0%7C%21%3D1.11.1%7C%3C2.0.0
2021

2122
- `repository_url` is an extra URL for an alternative, non-default package
22-
repository or registry. When a package does not come from the default public
23-
package repository for its `type` a `purl` may be qualified with this extra
24-
URL. The default repository or registry of a `type` is documented in the
25-
"Registered `purl` types" section.
23+
repository or registry. When a package does not come from the default
24+
public package repository for its `type` a `purl` may be qualified with
25+
this extra URL. The default repository or registry of a `type` is
26+
documented in the "Registered `purl` types" section.
2627

2728
- `download_url` is an extra URL for a direct package web download URL to
2829
optionally qualify a `purl`.
2930

3031
- `vcs_url` is an extra URL for a package version control system URL to
31-
optionally qualify a `purl`. The syntax for this URL should be as defined in
32-
Python pip or the SPDX specification. See
32+
optionally qualify a `purl`. The syntax for this URL should be as defined
33+
in Python pip or the SPDX specification. See
3334
https://github.com/spdx/spdx-spec/blob/cfa1b9d08903/chapters/3-package-information.md#37-package-download-location
3435

3536
- `file_name` is an extra file name of a package archive.

docs/purl-spec-toc.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@ A `purl` or package URL is an attempt to standardize existing approaches to
77
reliably identify and locate software packages.
88

99
A `purl` is a URL string used to identify and locate a software package in a
10-
mostly universal and uniform way across programming languages, package managers,
11-
packaging conventions, tools, APIs and databases.
10+
mostly universal and uniform way across programming languages, package
11+
managers, packaging conventions, tools, APIs and databases.
1212

1313
A `purl` is useful to reliably reference the same software package
1414
using a simple and expressive syntax and conventions based on familiar URLs.
1515

16-
1716
The Package-URL specification is organized in these documents:
1817

1918
- What is `purl` aka. package URL? -- https://github.com/package-url/purl-spec/blob/docs/standard/summary.md

docs/standard/about.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
# About this Specification
22

3-
The document at [https://tc54.org/ecmaXXX/](https://tc54.org/ecmaXXX/) is the most accurate and up-to-date Package-URL specification.
3+
The document at [https://tc54.org/ecmaXXX/](https://tc54.org/ecmaXXX/) is the
4+
most accurate and up-to-date Package-URL specification.
45

5-
This document is available as [a single page](https://ecma-tc54.github.io/ECMA-xxx-PURL/) and as [multiple pages](https://ecma-tc54.github.io/ECMA-xxx-PURL/multipage/).
6+
This document is available as [a single page](https://ecma-tc54.github.io/ECMA-xxx-PURL/)
7+
and as [multiple pages](https://ecma-tc54.github.io/ECMA-xxx-PURL/multipage/).
68

79
# Contributing to this Specification
810

9-
This specification is developed on GitHub with the help of the Package-URL community. There are a number of ways to contribute to the development of this specification:
11+
This specification is developed on GitHub with the help of the Package-URL
12+
community. There are a number of ways to contribute to the development of
13+
this specification:
1014

1115
* GitHub Repository: [https://github.com/Ecma-TC54/ECMA-xxx-PURL](https://github.com/Ecma-TC54/ECMA-xxx-PURL)
12-
* Issues: [All Issues](https://github.com/Ecma-TC54/ECMA-xxx-PURL/issues), [File a New Issue](https://github.com/Ecma-TC54/ECMA-xxx-PURL/issues/new)
13-
* Pull Requests: [All Pull Requests](https://github.com/Ecma-TC54/ECMA-xxx-PURL/pulls), [Create a New Pull Request](https://github.com/Ecma-TC54/ECMA-xxx-PURL/pulls/new)
16+
* Issues: [All Issues](https://github.com/Ecma-TC54/ECMA-xxx-PURL/issues),
17+
[File a New Issue](https://github.com/Ecma-TC54/ECMA-xxx-PURL/issues/new)
18+
* Pull Requests: [All Pull Requests](https://github.com/Ecma-TC54/ECMA-xxx-PURL/pulls),
19+
[Create a New Pull Request](https://github.com/Ecma-TC54/ECMA-xxx-PURL/pulls/new)
1420
* Editors:
1521
* [John Horan](mailto:jmhoran@aboutcode.org)
1622
* [Michael Herzog](mailto:mjherzog@aboutcode.org)
@@ -19,5 +25,5 @@ This specification is developed on GitHub with the help of the Package-URL commu
1925
* Community:
2026
* Chat: [Slack Channel](https://cyclonedx.slack.com/archives/C06KTE3BWEB)
2127

22-
Refer to the [colophon](https://ecma-tc54.github.io/ECMA-xxx-PURL/#sec-colophon) for more information on how this document was created.
23-
28+
Refer to the [colophon](https://ecma-tc54.github.io/ECMA-xxx-PURL/#sec-colophon)
29+
for more information on how this document was created.

docs/standard/components.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ A PURL string is an ASCII URL string composed of seven components.
44

55
Except as expressly stated otherwise in this section, each component:
66

7-
- May be composed of any of the characters defined in the "Permitted characters" section
7+
- May be composed of any of the characters defined in the "Permitted
8+
characters" section
89
- Must be encoded as defined in the "Character encoding" section
910

1011
The "lowercase" rules are defined in the "Case folding" section.
@@ -31,7 +32,8 @@ The rules for each component are:
3132

3233
- **namespace**:
3334

34-
- The `namespace` is optional, unless required by the package's `type` definition.
35+
- The `namespace` is optional, unless required by the package's `type`
36+
definition.
3537
- If present, the `namespace` may contain one or more segments, separated
3638
by a single unencoded slash '/' character.
3739
- All leading and trailing slashes '/' are not significant and should be
@@ -65,8 +67,8 @@ The rules for each component are:
6567
- The `version` is prefixed by a '@' separator when not empty.
6668
- This '@' is not part of the `version`.
6769
- A `version` must be a percent-encoded string.
68-
- When percent-decoded, a `version` may contain any Unicode character unless
69-
the package's `type` definition provides otherwise.
70+
- When percent-decoded, a `version` may contain any Unicode character
71+
unless the package's `type` definition provides otherwise.
7072
- A `version` is a plain and opaque string.
7173

7274

@@ -101,8 +103,8 @@ The rules for each component are:
101103
- The `subpath` string is prefixed by a '#' separator when not empty
102104
- The '#' is not part of the `subpath`
103105
- The `subpath` contains zero or more segments, separated by slash '/'
104-
- Leading and trailing slashes '/' are not significant and should be stripped
105-
in the canonical form
106+
- Leading and trailing slashes '/' are not significant and should be
107+
stripped in the canonical form
106108
- Each `subpath` segment must be a percent-encoded string
107109
- When percent-decoded, a segment:
108110

docs/standard/conformance.md

Lines changed: 63 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,73 @@
22

33
## 2.1 Requirements Terminology
44

5-
In this standard, the words that are used to define the significance of each requirement are detailed below. These words are used in accordance with their definitions in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt), and their respective meanings are reproduced below:
6-
7-
* Must: This word, or the adjective “required” and the auxiliary verb "shall", means that the item is an absolute requirement of the standard.
8-
* Should: This word, or the adjective “recommended”, means that there might exist valid reasons in particular circumstances to ignore this item, but the full implications should be understood and the case carefully weighed before making an implementation decision.
9-
* May: This word, or the adjective “optional”, means that this item is truly optional.
10-
11-
The words "must not", "shall not", "should not", and "not recommended", are the negative forms of "must", "shall", "should", and "recommended", respectively. There is no negative form of "may".
5+
In this standard, the words that are used to define the significance of each
6+
requirement are detailed below. These words are used in accordance with their
7+
definitions in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt), and their
8+
respective meanings are reproduced below:
9+
10+
* Must: This word, or the adjective “required” and the auxiliary verb
11+
"shall", means that the item is an absolute requirement of the standard.
12+
* Should: This word, or the adjective “recommended”, means that there might
13+
exist valid reasons in particular circumstances to ignore this item, but
14+
the full implications should be understood and the case carefully weighed
15+
before making an implementation decision.
16+
* May: This word, or the adjective “optional”, means that this item is truly
17+
optional.
18+
19+
The words "must not", "shall not", "should not", and "not recommended", are
20+
the negative forms of "must", "shall", "should", and "recommended",
21+
respectively. There is no negative form of "may".
1222

1323
## 2.2 Implementation Conformance
1424

15-
A conforming implementation of Package-URL (PURL) must fully implement and support all elements defined within this specification, including the syntax, components, and semantic requirements for constructing and interpreting valid PURLs.
16-
17-
A conforming implementation of PURL must adhere to the syntax defined in this specification, ensuring that all PURLs are parsed, constructed, and validated according to the prescribed rules. The implementation must provide full support for ecosystem-agnostic behaviour, enabling PURLs to function consistently and reliably across diverse environments.
18-
19-
All required components of a PURL, such as the scheme, type, and name, must be present and validated according to the rules defined in this specification. Additionally, optional components, including qualifiers and subpaths, must be handled appropriately if provided, in full compliance with their specified behaviours.
20-
21-
Implementations must ensure that equivalent PURLs are consistently resolved to the same canonical representation. This includes strict adherence to normalisation and equivalence rules. Furthermore, implementations must process URI encoding and decoding for PURL components according to the standards outlined in RFC 3986.
22-
23-
Invalid PURLs that fail to conform to the specification must be identified and rejected by any conforming implementation. This guarantees the integrity and reliability of PURLs in all supported contexts.
24-
25-
A conforming implementation of PURL may extend its functionality by providing ecosystem-specific validation, processing, or metadata handling, as long as these extensions do not violate the core specification. Additionally, implementations may offer auxiliary tools or features, such as utilities for constructing or validating PURLs, provided they align with the standard's requirements.
26-
27-
A conforming implementation must not redefine or alter the core syntax, components, or semantics defined by this specification. Any prohibited extensions explicitly identified in the specification must not be implemented. Furthermore, behaviours that compromise the interoperability of PURLs across tools, platforms, or ecosystems are strictly disallowed.
28-
29-
A conforming implementation of Package-URL may choose to implement or not implement Normative Optional subclauses. If any Normative Optional behaviour is implemented, all of the behaviour in the containing Normative Optional clause must be implemented. A Normative Optional clause is denoted in this specification with the words "Normative Optional" in a coloured box, as shown below.
25+
A conforming implementation of Package-URL (PURL) must fully implement and
26+
support all elements defined within this specification, including the syntax,
27+
components, and semantic requirements for constructing and interpreting valid
28+
PURLs.
29+
30+
A conforming implementation of PURL must adhere to the syntax defined in this
31+
specification, ensuring that all PURLs are parsed, constructed, and validated
32+
according to the prescribed rules. The implementation must provide full
33+
support for ecosystem-agnostic behaviour, enabling PURLs to function
34+
consistently and reliably across diverse environments.
35+
36+
All required components of a PURL, such as the scheme, type, and name, must
37+
be present and validated according to the rules defined in this
38+
specification. Additionally, optional components, including qualifiers and
39+
subpaths, must be handled appropriately if provided, in full compliance with
40+
their specified behaviours.
41+
42+
Implementations must ensure that equivalent PURLs are consistently resolved
43+
to the same canonical representation. This includes strict adherence to
44+
normalisation and equivalence rules. Furthermore, implementations must
45+
process URI encoding and decoding for PURL components according to the
46+
standards outlined in RFC 3986.
47+
48+
Invalid PURLs that fail to conform to the specification must be identified
49+
and rejected by any conforming implementation. This guarantees the integrity
50+
and reliability of PURLs in all supported contexts.
51+
52+
A conforming implementation of PURL may extend its functionality by providing
53+
ecosystem-specific validation, processing, or metadata handling, as long as
54+
these extensions do not violate the core specification. Additionally,
55+
implementations may offer auxiliary tools or features, such as utilities for
56+
constructing or validating PURLs, provided they align with the standard's
57+
requirements.
58+
59+
A conforming implementation must not redefine or alter the core syntax,
60+
components, or semantics defined by this specification. Any prohibited
61+
extensions explicitly identified in the specification must not be
62+
implemented. Furthermore, behaviours that compromise the interoperability of
63+
PURLs across tools, platforms, or ecosystems are strictly disallowed.
64+
65+
A conforming implementation of Package-URL may choose to implement or not
66+
implement Normative Optional subclauses. If any Normative Optional behaviour
67+
is implemented, all of the behaviour in the containing Normative Optional
68+
clause must be implemented. A Normative Optional clause is denoted in this
69+
specification with the words "Normative Optional" in a coloured box, as shown
70+
below.
3071

3172
## 2.3 Example Normative Optional Clause Heading
3273

3374
Example clause contents.
34-

0 commit comments

Comments
 (0)