Skip to content

Commit bd63c39

Browse files
committed
rustc: Move some attribute accessors from rustdoc to rustc
1 parent 4f2ad6b commit bd63c39

File tree

2 files changed

+55
-52
lines changed

2 files changed

+55
-52
lines changed

src/comp/front/attr.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ export get_meta_item_name;
2020
export get_meta_item_value_str;
2121
export get_meta_item_value_str_by_name;
2222
export get_meta_item_list;
23+
export meta_item_value_from_list;
24+
export meta_item_list_from_list;
25+
export name_value_str_pair;
2326
export mk_name_value_item_str;
2427
export mk_name_value_item;
2528
export mk_list_item;
@@ -217,6 +220,53 @@ fn native_abi(attrs: [ast::attribute]) -> either::t<str, ast::native_abi> {
217220
};
218221
}
219222

223+
fn meta_item_from_list(
224+
items: [@ast::meta_item],
225+
name: str
226+
) -> option<@ast::meta_item> {
227+
let items = attr::find_meta_items_by_name(items, name);
228+
vec::last(items)
229+
}
230+
231+
fn meta_item_value_from_list(
232+
items: [@ast::meta_item],
233+
name: str
234+
) -> option<str> {
235+
alt meta_item_from_list(items, name) {
236+
some(item) {
237+
alt attr::get_meta_item_value_str(item) {
238+
some(value) { some(value) }
239+
none. { none }
240+
}
241+
}
242+
none. { none }
243+
}
244+
}
245+
246+
fn meta_item_list_from_list(
247+
items: [@ast::meta_item],
248+
name: str
249+
) -> option<[@ast::meta_item]> {
250+
alt meta_item_from_list(items, name) {
251+
some(item) {
252+
attr::get_meta_item_list(item)
253+
}
254+
none. { none }
255+
}
256+
}
257+
258+
fn name_value_str_pair(
259+
item: @ast::meta_item
260+
) -> option<(str, str)> {
261+
alt attr::get_meta_item_value_str(item) {
262+
some(value) {
263+
let name = attr::get_meta_item_name(item);
264+
some((name, value))
265+
}
266+
none. { none }
267+
}
268+
}
269+
220270
fn span<T: copy>(item: T) -> ast::spanned<T> {
221271
ret {node: item, span: ast_util::dummy_sp()};
222272
}

src/rustdoc/attr_parser.rs

Lines changed: 5 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -71,64 +71,17 @@ fn parse_fn(
7171
};
7272
}
7373

74-
fn meta_item_from_list(
75-
items: [@ast::meta_item],
76-
name: str
77-
) -> option<@ast::meta_item> {
78-
let items = attr::find_meta_items_by_name(items, name);
79-
vec::last(items)
80-
}
81-
82-
fn meta_item_value_from_list(
83-
items: [@ast::meta_item],
84-
name: str
85-
) -> option<str> {
86-
alt meta_item_from_list(items, name) {
87-
some(item) {
88-
alt attr::get_meta_item_value_str(item) {
89-
some(value) { some(value) }
90-
none. { none }
91-
}
92-
}
93-
none. { none }
94-
}
95-
}
96-
97-
fn meta_item_list_from_list(
98-
items: [@ast::meta_item],
99-
name: str
100-
) -> option<[@ast::meta_item]> {
101-
alt meta_item_from_list(items, name) {
102-
some(item) {
103-
attr::get_meta_item_list(item)
104-
}
105-
none. { none }
106-
}
107-
}
108-
109-
fn name_value_str_pair(
110-
item: @ast::meta_item
111-
) -> option<(str, str)> {
112-
alt attr::get_meta_item_value_str(item) {
113-
some(value) {
114-
let name = attr::get_meta_item_name(item);
115-
some((name, value))
116-
}
117-
none. { none }
118-
}
119-
}
120-
12174
fn parse_fn_(
12275
items: [@ast::meta_item]
12376
) -> fn_attrs {
124-
let brief = meta_item_value_from_list(items, "brief");
125-
let desc = meta_item_value_from_list(items, "desc");
126-
let return = meta_item_value_from_list(items, "return");
77+
let brief = attr::meta_item_value_from_list(items, "brief");
78+
let desc = attr::meta_item_value_from_list(items, "desc");
79+
let return = attr::meta_item_value_from_list(items, "return");
12780

128-
let args = alt meta_item_list_from_list(items, "args") {
81+
let args = alt attr::meta_item_list_from_list(items, "args") {
12982
some(items) {
13083
vec::filter_map(items) {|item|
131-
option::map(name_value_str_pair(item)) { |pair|
84+
option::map(attr::name_value_str_pair(item)) { |pair|
13285
{
13386
name: util::fst(pair),
13487
desc: util::snd(pair)

0 commit comments

Comments
 (0)