Skip to content

Commit 4946066

Browse files
committed
types: Improve the version specific SSOT docs
The module docs in each version specific module (e.g. `types::v17`) are supposed to be the single source of truth for devs trying to work out which methods are supported and how. Make an effort to better present the information. Note that a bunch docs for methods marked as TODO may be incorrect re version vs version + model. This doesn't matter right now since they will be checked when implemented and also TODO implies no guarantees (in my mind anyway). Note also issue #144. `verify` does not check the Returns column against the `Method` constructor type. Close: #109
1 parent 45a1847 commit 4946066

File tree

13 files changed

+2071
-1951
lines changed

13 files changed

+2071
-1951
lines changed

types/src/v17/mod.rs

Lines changed: 156 additions & 147 deletions
Large diffs are not rendered by default.

types/src/v18/mod.rs

Lines changed: 158 additions & 149 deletions
Large diffs are not rendered by default.

types/src/v19/mod.rs

Lines changed: 160 additions & 151 deletions
Large diffs are not rendered by default.

types/src/v20/mod.rs

Lines changed: 161 additions & 152 deletions
Large diffs are not rendered by default.

types/src/v21/mod.rs

Lines changed: 167 additions & 158 deletions
Large diffs are not rendered by default.

types/src/v22/mod.rs

Lines changed: 172 additions & 163 deletions
Large diffs are not rendered by default.

types/src/v23/mod.rs

Lines changed: 171 additions & 162 deletions
Large diffs are not rendered by default.

types/src/v24/mod.rs

Lines changed: 175 additions & 166 deletions
Large diffs are not rendered by default.

types/src/v25/mod.rs

Lines changed: 176 additions & 167 deletions
Large diffs are not rendered by default.

types/src/v26/mod.rs

Lines changed: 184 additions & 175 deletions
Large diffs are not rendered by default.

types/src/v27/mod.rs

Lines changed: 184 additions & 175 deletions
Large diffs are not rendered by default.

types/src/v28/mod.rs

Lines changed: 186 additions & 177 deletions
Large diffs are not rendered by default.

verify/src/versioned.rs

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,31 @@ pub fn methods_and_status(version: Version) -> Result<Vec<Method>> {
3434
.with_context(|| format!("Failed to grep rustdocs in {}", path.display()))?;
3535
let reader = io::BufReader::new(file);
3636

37-
// let re = Regex::new(r"\/\/\! \| ([a-z]+) \| ([.*?]) \|").unwrap();
38-
let re = Regex::new(r"\/\/\! \| ([a-z]+) .* \| ([a-z ()]+?) \|").unwrap();
37+
let re = Regex::new(r"\/\/\! \| ([a-z]+) .* \| ([a-z +]+?) \|.*\|").unwrap();
3938

4039
let mut methods = Vec::new();
4140

4241
for line in reader.lines() {
4342
let line = line?;
4443

44+
let override_status = if line.contains("UNTESTED") {
45+
Some(Status::Untested)
46+
} else if line.contains("TODO") {
47+
Some(Status::Todo)
48+
} else {
49+
None
50+
};
51+
4552
if let Some(caps) = re.captures(&line) {
46-
let name = caps.get(1).unwrap().as_str();
47-
let status = caps.get(2).unwrap().as_str();
48-
let status = status.trim().parse::<Status>()?;
49-
methods.push(Method { name: name.to_string(), status });
53+
let method_name = caps.get(1).unwrap().as_str();
54+
let returns_column = caps.get(2).unwrap().as_str();
55+
56+
let status = match override_status {
57+
Some(status) => status,
58+
None => returns_column.trim().parse::<Status>()?,
59+
};
60+
61+
methods.push(Method { name: method_name.to_string(), status });
5062
}
5163
}
5264
Ok(methods)
@@ -122,10 +134,10 @@ impl FromStr for Status {
122134

123135
fn from_str(s: &str) -> Result<Self, Self::Err> {
124136
match s {
125-
"done" => Ok(Status::Done),
137+
"version" => Ok(Status::Done),
138+
"version + model" => Ok(Status::Done),
126139
"omitted" => Ok(Status::Omitted),
127-
"done (untested)" => Ok(Status::Untested),
128-
"todo" => Ok(Status::Todo),
140+
"returns nothing" | "returns numeric" | "returns boolean" | "returns string"=> Ok(Status::Done),
129141
other => Err(anyhow::Error::msg(format!("unknown status: '{}'", other))),
130142
}
131143
}

0 commit comments

Comments
 (0)