Skip to content

Commit 06c6cfd

Browse files
committed
---
yaml --- r: 13758 b: refs/heads/try c: fc64aef h: refs/heads/master v: v3
1 parent 46095be commit 06c6cfd

File tree

4 files changed

+133
-1
lines changed

4 files changed

+133
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5-
refs/heads/try: cb44fa2a2176bb81e3d7fa9e99503805d08eebf2
5+
refs/heads/try: fc64aefe0aebe547322e86b3e5daa4564d038e63
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/try/src/rustdoc/rustdoc.rc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ mod tystr_pass;
2424
mod prune_undoc_pass;
2525
mod prune_unexported_pass;
2626
mod desc_to_brief_pass;
27+
mod trim_pass;
2728
mod astsrv;

branches/try/src/rustdoc/rustdoc.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ fn run(source_file: str) {
101101
// FIXME: This pass should be optional
102102
prune_undoc_pass::mk_pass(),
103103
desc_to_brief_pass::mk_pass(),
104+
trim_pass::mk_pass(),
104105
gen::mk_pass {|| std::io:: stdout()}
105106
]);
106107
}

branches/try/src/rustdoc/trim_pass.rs

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
#[doc = "
2+
3+
Pulls a brief description out of a long description.
4+
5+
If the first paragraph of a long description is short enough then it
6+
is interpreted as the brief description.
7+
8+
"];
9+
10+
export mk_pass;
11+
12+
fn mk_pass() -> pass {
13+
run
14+
}
15+
16+
fn run(
17+
_srv: astsrv::srv,
18+
doc: doc::cratedoc
19+
) -> doc::cratedoc {
20+
let fold = fold::fold({
21+
fold_mod: fold_mod,
22+
fold_const: fold_const,
23+
fold_fn: fold_fn
24+
with *fold::default_seq_fold(())
25+
});
26+
fold.fold_crate(fold, doc)
27+
}
28+
29+
fn trimopt(s: option<str>) -> option<str> {
30+
option::map(s, {|s| str::trim(s) })
31+
}
32+
33+
fn fold_mod(fold: fold::fold<()>, doc: doc::moddoc) -> doc::moddoc {
34+
let doc = fold::default_seq_fold_mod(fold, doc);
35+
36+
~{
37+
brief: trimopt(doc.brief),
38+
desc: trimopt(doc.desc)
39+
with *doc
40+
}
41+
}
42+
43+
#[test]
44+
fn should_trim_mod() {
45+
let source = "#[doc(brief = \"\nbrief\n\", \
46+
desc = \"\ndesc\n\")] \
47+
mod m { }";
48+
let srv = astsrv::mk_srv_from_str(source);
49+
let doc = extract::from_srv(srv, "");
50+
let doc = attr_pass::mk_pass()(srv, doc);
51+
let doc = run(srv, doc);
52+
assert doc.topmod.mods[0].brief == some("brief");
53+
assert doc.topmod.mods[0].desc == some("desc");
54+
}
55+
56+
fn fold_const(fold: fold::fold<()>, doc: doc::constdoc) -> doc::constdoc {
57+
let doc = fold::default_seq_fold_const(fold, doc);
58+
59+
~{
60+
brief: trimopt(doc.brief),
61+
desc: trimopt(doc.desc)
62+
with *doc
63+
}
64+
}
65+
66+
#[test]
67+
fn should_trim_const() {
68+
let source = "#[doc(brief = \"\nbrief\n\", \
69+
desc = \"\ndesc\n\")] \
70+
const a: bool = true;";
71+
let srv = astsrv::mk_srv_from_str(source);
72+
let doc = extract::from_srv(srv, "");
73+
let doc = attr_pass::mk_pass()(srv, doc);
74+
let doc = run(srv, doc);
75+
assert doc.topmod.consts[0].brief == some("brief");
76+
assert doc.topmod.consts[0].desc == some("desc");
77+
}
78+
79+
fn fold_fn(fold: fold::fold<()>, doc: doc::fndoc) -> doc::fndoc {
80+
let doc = fold::default_seq_fold_fn(fold, doc);
81+
82+
~{
83+
brief: trimopt(doc.brief),
84+
desc: trimopt(doc.desc),
85+
args: vec::map(doc.args) {|doc|
86+
~{
87+
desc: trimopt(doc.desc)
88+
with *doc
89+
}
90+
},
91+
return: {
92+
desc: trimopt(doc.return.desc)
93+
with doc.return
94+
}
95+
with *doc
96+
}
97+
}
98+
99+
#[test]
100+
fn should_trim_fn() {
101+
let source = "#[doc(brief = \"\nbrief\n\", \
102+
desc = \"\ndesc\n\")] \
103+
fn a() { }";
104+
let srv = astsrv::mk_srv_from_str(source);
105+
let doc = extract::from_srv(srv, "");
106+
let doc = attr_pass::mk_pass()(srv, doc);
107+
let doc = run(srv, doc);
108+
assert doc.topmod.fns[0].brief == some("brief");
109+
assert doc.topmod.fns[0].desc == some("desc");
110+
}
111+
112+
#[test]
113+
fn should_trim_args() {
114+
let source = "#[doc(args(a = \"\na\n\"))] fn a(a: int) { }";
115+
let srv = astsrv::mk_srv_from_str(source);
116+
let doc = extract::from_srv(srv, "");
117+
let doc = attr_pass::mk_pass()(srv, doc);
118+
let doc = run(srv, doc);
119+
assert doc.topmod.fns[0].args[0].desc == some("a");
120+
}
121+
122+
#[test]
123+
fn should_trim_ret() {
124+
let source = "#[doc(return = \"\na\n\")] fn a() -> int { }";
125+
let srv = astsrv::mk_srv_from_str(source);
126+
let doc = extract::from_srv(srv, "");
127+
let doc = attr_pass::mk_pass()(srv, doc);
128+
let doc = run(srv, doc);
129+
assert doc.topmod.fns[0].return.desc == some("a");
130+
}

0 commit comments

Comments
 (0)