Skip to content

Commit 40834a0

Browse files
committed
auto merge of #9413 : bytbox/rust/master, r=alexcrichton
2 parents 8c45423 + a5cf9fd commit 40834a0

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

src/libextra/semver.rs

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,25 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
//! Semver parsing and logic
12-
13-
#[allow(missing_doc)];
14-
11+
//! Semantic version parsing and comparison.
12+
//!
13+
//! Semantic versioning (see http://semver.org/) is a set of rules for
14+
//! assigning version numbers intended to convey meaning about what has
15+
//! changed, and how much. A version number has five parts:
16+
//!
17+
//! * Major number, updated for incompatible API changes
18+
//! * Minor number, updated for backwards-compatible API additions
19+
//! * Patch number, updated for backwards-compatible bugfixes
20+
//! * Pre-release information (optional), preceded by a hyphen (`-`)
21+
//! * Build metadata (optional), preceded by a plus sign (`+`)
22+
//!
23+
//! The three mandatory components are required to be decimal numbers. The
24+
//! pre-release information and build metadata are required to be a
25+
//! period-separated list of identifiers containing only alphanumeric
26+
//! characters and hyphens.
27+
//!
28+
//! An example version number with all five components is
29+
//! `0.8.1-rc.3.0+20130922.linux`.
1530
1631
use std::char;
1732
use std::cmp;
@@ -20,6 +35,8 @@ use std::io;
2035
use std::option::{Option, Some, None};
2136
use std::to_str::ToStr;
2237

38+
/// An identifier in the pre-release or build metadata. If the identifier can
39+
/// be parsed as a decimal value, it will be represented with `Numeric`.
2340
#[deriving(Clone, Eq)]
2441
pub enum Identifier {
2542
Numeric(uint),
@@ -49,12 +66,20 @@ impl ToStr for Identifier {
4966
}
5067

5168

69+
/// Represents a version number conforming to the semantic versioning scheme.
5270
#[deriving(Clone, Eq)]
5371
pub struct Version {
72+
/// The major version, to be incremented on incompatible changes.
5473
major: uint,
74+
/// The minor version, to be incremented when functionality is added in a
75+
/// backwards-compatible manner.
5576
minor: uint,
77+
/// The patch version, to be incremented when backwards-compatible bug
78+
/// fixes are made.
5679
patch: uint,
80+
/// The pre-release version identifier, if one exists.
5781
pre: ~[Identifier],
82+
/// The build metadata, ignored when determining version precedence.
5883
build: ~[Identifier],
5984
}
6085

@@ -202,6 +227,7 @@ fn parse_reader(rdr: @io::Reader) -> Version {
202227
}
203228

204229

230+
/// Parse a string into a semver object.
205231
pub fn parse(s: &str) -> Option<Version> {
206232
if !s.is_ascii() {
207233
return None;

0 commit comments

Comments
 (0)