File tree Expand file tree Collapse file tree 5 files changed +72
-2
lines changed Expand file tree Collapse file tree 5 files changed +72
-2
lines changed Original file line number Diff line number Diff line change 2
2
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5
- refs/heads/try: c976b7c623e242ab2400d3c641cb082c814690fe
5
+ refs/heads/try: a57c15bf88cfa8a684947af5d28c8154ef2f6456
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
Original file line number Diff line number Diff line change @@ -30,4 +30,6 @@ mod unindent_pass;
30
30
mod trim_pass;
31
31
mod astsrv;
32
32
mod demo;
33
- mod sort_pass;
33
+ mod sort_pass;
34
+ mod sort_item_name_pass;
35
+ mod sort_item_type_pass;
Original file line number Diff line number Diff line change @@ -106,6 +106,8 @@ fn run(source_file: str) {
106
106
desc_to_brief_pass:: mk_pass ( ) ,
107
107
trim_pass:: mk_pass ( ) ,
108
108
unindent_pass:: mk_pass ( ) ,
109
+ sort_item_name_pass:: mk_pass ( ) ,
110
+ sort_item_type_pass:: mk_pass ( ) ,
109
111
markdown_pass:: mk_pass { |f| f ( std:: io:: stdout ( ) ) }
110
112
] ) ;
111
113
}
Original file line number Diff line number Diff line change
1
+ #[ doc = "Sorts items by name" ] ;
2
+
3
+ export mk_pass;
4
+
5
+ fn mk_pass ( ) -> pass {
6
+ sort_pass:: mk_pass { |item1, item2|
7
+ str:: le ( item1. name ( ) , item2. name ( ) )
8
+ }
9
+ }
10
+
11
+ #[ test]
12
+ fn test ( ) {
13
+ let source = "mod z { } fn y() { }" ;
14
+ let srv = astsrv:: mk_srv_from_str ( source) ;
15
+ let doc = extract:: from_srv ( srv, "" ) ;
16
+ let doc = mk_pass ( ) ( srv, doc) ;
17
+ assert doc. topmod . items [ 0 ] . name ( ) == "y" ;
18
+ assert doc. topmod . items [ 1 ] . name ( ) == "z" ;
19
+ }
Original file line number Diff line number Diff line change
1
+ #[ doc = "Sorts items by type" ] ;
2
+
3
+ export mk_pass;
4
+
5
+ fn mk_pass ( ) -> pass {
6
+ sort_pass:: mk_pass { |item1, item2|
7
+ fn score ( item: doc:: itemtag) -> int {
8
+ alt item {
9
+ doc : : consttag ( _) { 0 }
10
+ doc:: tytag ( _) { 1 }
11
+ doc:: enumtag ( _) { 2 }
12
+ doc:: restag ( _) { 3 }
13
+ doc:: ifacetag ( _) { 4 }
14
+ doc:: impltag ( _) { 5 }
15
+ doc:: fntag ( _) { 6 }
16
+ doc:: modtag ( _) { 7 }
17
+ _ { fail }
18
+ }
19
+ }
20
+
21
+ score ( item1) <= score ( item2)
22
+ }
23
+ }
24
+
25
+ #[ test]
26
+ fn test ( ) {
27
+ let source =
28
+ "mod imod { } \
29
+ const iconst: int = 0; \
30
+ fn ifn() { } \
31
+ enum ienum { ivar } \
32
+ resource ires(a: bool) { } \
33
+ iface iiface { fn a(); } \
34
+ impl iimpl for int { fn a() { } } \
35
+ type itype = int;";
36
+ let srv = astsrv:: mk_srv_from_str ( source) ;
37
+ let doc = extract:: from_srv ( srv, "" ) ;
38
+ let doc = mk_pass ( ) ( srv, doc) ;
39
+ assert doc. topmod . items [ 0 ] . name ( ) == "iconst" ;
40
+ assert doc. topmod . items [ 1 ] . name ( ) == "itype" ;
41
+ assert doc. topmod . items [ 2 ] . name ( ) == "ienum" ;
42
+ assert doc. topmod . items [ 3 ] . name ( ) == "ires" ;
43
+ assert doc. topmod . items [ 4 ] . name ( ) == "iiface" ;
44
+ assert doc. topmod . items [ 5 ] . name ( ) == "iimpl" ;
45
+ assert doc. topmod . items [ 6 ] . name ( ) == "ifn" ;
46
+ assert doc. topmod . items [ 7 ] . name ( ) == "imod" ;
47
+ }
You can’t perform that action at this time.
0 commit comments