@@ -23,6 +23,7 @@ use std::collections::HashMap;
23
23
use std:: fs;
24
24
use std:: fs:: File ;
25
25
use std:: io:: prelude:: * ;
26
+ use std:: iter:: FromIterator ;
26
27
use std:: path:: { Path , PathBuf } ;
27
28
28
29
use rand:: seq:: SliceRandom ;
@@ -61,6 +62,13 @@ struct UsersContext {
61
62
data : Vec < Vec < User > > ,
62
63
}
63
64
65
+ fn get_title ( page_name : & str ) -> String {
66
+ let mut v: Vec < char > = page_name. replace ( "-" , " " ) . chars ( ) . collect ( ) ;
67
+ v[ 0 ] = v[ 0 ] . to_uppercase ( ) . nth ( 0 ) . unwrap ( ) ;
68
+ let page_name = String :: from_iter ( v) ;
69
+ format ! ( "{} - Rust programming language" , page_name) . to_string ( )
70
+ }
71
+
64
72
#[ get( "/" ) ]
65
73
fn index ( ) -> Template {
66
74
#[ derive( Serialize ) ]
@@ -73,7 +81,7 @@ fn index() -> Template {
73
81
}
74
82
75
83
let page = "index" . to_string ( ) ;
76
- let title = format ! ( "Rust - {}" , page ) . to_string ( ) ;
84
+ let title = "Rust programming language" . to_string ( ) ;
77
85
78
86
let context = Context {
79
87
page : page. clone ( ) ,
@@ -94,7 +102,7 @@ fn files(file: PathBuf) -> Option<NamedFile> {
94
102
#[ get( "/<category>" ) ]
95
103
fn category ( category : Category ) -> Template {
96
104
let page = category. index ( ) ;
97
- let title = format ! ( "Rust - {}" , page ) . to_string ( ) ;
105
+ let title = get_title ( & category . name ( ) ) ;
98
106
let context = Context {
99
107
page : category. name ( ) . to_string ( ) ,
100
108
title,
@@ -107,7 +115,7 @@ fn category(category: Category) -> Template {
107
115
#[ get( "/governance" ) ]
108
116
fn governance ( ) -> Template {
109
117
let page = "governance/index" . to_string ( ) ;
110
- let title = format ! ( "Rust - {}" , page ) . to_string ( ) ;
118
+ let title = "Governance - Rust programming language" . to_string ( ) ;
111
119
let context = GroupContext {
112
120
page : page. clone ( ) ,
113
121
title,
@@ -134,8 +142,8 @@ fn load_governance_data() -> HashMap<String, Vec<Group>> {
134
142
#[ get( "/governance/<t>/<subject>" , rank = 2 ) ]
135
143
fn team ( t : String , subject : String ) -> Template {
136
144
let page = "governance/group" . to_string ( ) ;
137
- let title = format ! ( "Rust - {}" , page) . to_string ( ) ;
138
145
let t = get_type_from_string ( & t) . expect ( "couldn't figure out group type from path string" ) ;
146
+ let title = get_title ( & format ! ( "{} team" , subject) ) ;
139
147
let context = GroupContext {
140
148
page : page. clone ( ) ,
141
149
title,
@@ -178,7 +186,7 @@ fn load_group_data(t: GroupType, group: &str) -> HashMap<String, Vec<Group>> {
178
186
#[ get( "/production/users" ) ]
179
187
fn production ( ) -> Template {
180
188
let page = "production/users" . to_string ( ) ;
181
- let title = format ! ( "Rust - {}" , page ) . to_string ( ) ;
189
+ let title = "Users - Rust programming language" . to_string ( ) ;
182
190
let context = UsersContext {
183
191
page : page. clone ( ) ,
184
192
title,
@@ -199,7 +207,7 @@ fn load_users_data() -> Vec<Vec<User>> {
199
207
#[ get( "/<category>/<subject>" , rank = 4 ) ]
200
208
fn subject ( category : Category , subject : String ) -> Template {
201
209
let page = format ! ( "{}/{}" , category. name( ) , subject. as_str( ) ) . to_string ( ) ;
202
- let title = format ! ( "Rust - {}" , page ) . to_string ( ) ;
210
+ let title = get_title ( & subject ) ;
203
211
let context = Context {
204
212
page : subject,
205
213
title,
@@ -212,7 +220,7 @@ fn subject(category: Category, subject: String) -> Template {
212
220
#[ catch( 404 ) ]
213
221
fn not_found ( ) -> Template {
214
222
let page = "404" ;
215
- let title = format ! ( "Rust - {} " , page) . to_string ( ) ;
223
+ let title = format ! ( "{} - Rust programming language " , page) . to_string ( ) ;
216
224
let context = Context {
217
225
page : "404" . to_string ( ) ,
218
226
title,
0 commit comments