@@ -3,6 +3,11 @@ var path = require("path");
33var escapeHTML = require ( "escape-html" ) ;
44var unescapeHTML = require ( "unescape-html" ) ;
55
6+ //helpers
7+ var ucfirst = function ( str ) {
8+ return str . charAt ( 0 ) . toUpperCase ( ) + str . slice ( 1 ) ;
9+ } ;
10+
611module . exports = function ( docMap , options , getCurrent , helpers , OtherHandlebars ) {
712 // create children lookup
813 var childrenMap = makeChildrenMap ( docMap ) ;
@@ -164,12 +169,53 @@ module.exports = function(docMap, options, getCurrent, helpers, OtherHandlebars)
164169 return docObject . package . repository . github || docObject . package . repository . url || docObject . package . repository ;
165170 }
166171 } ,
167- getDocumentTitle : function ( docObject ) {
172+ getDocumentTitle : function ( docObject ) {
168173 var title = docMapInfo . getTitle ( docObject ) || 'CanJS' ;
169174 if ( docObject . name === 'canjs' || ( title && title . toLowerCase ( ) === 'canjs' ) ) {
170175 return title ;
171176 }
172- return 'CanJS - ' + title ;
177+
178+ if ( docObject . type !== "page" ) {
179+ var group ;
180+ if ( docObject . type === "module" ) {
181+ group = docMap [ this . parent ] ;
182+ } else {
183+ var parentModule = docMap [ docObject . parent ] ;
184+ while ( parentModule && parentModule . type !== "module" ) {
185+ parentModule = docMap [ parentModule . parent ] ;
186+ }
187+ if ( parentModule ) {
188+ group = docMap [ parentModule . parent ] ;
189+ title += " | " + ( parentModule . title || parentModule . name ) ;
190+ }
191+ }
192+ if ( group ) {
193+ var groupParent = docMap [ group . parent ] ;
194+ if ( groupParent ) {
195+ if ( groupParent . type === "module" ) {
196+ title += " | " + ( groupParent . title || groupParent . name ) ;
197+ if ( docMap [ groupParent . parent ] . type === "group" ) {
198+ var groupGrandParent = docMap [ groupParent . parent ] ;
199+ var groupGrandParentParent = docMap [ groupGrandParent . parent ] ;
200+
201+ title += " | " + groupGrandParent . title + " | " + groupGrandParentParent . title ;
202+ }
203+ } else {
204+ title += " | " + group . title + " | " + groupParent . title ;
205+ }
206+ } else {
207+ title += " | " + group . title ;
208+ }
209+ }
210+ title += " | CanJS" ;
211+ } else {
212+ var parentPage = docMap [ docObject . parent ] ;
213+ while ( parentPage ) {
214+ title += " | " + ucfirst ( parentPage . title ) ;
215+ parentPage = docMap [ parentPage . parent ] ;
216+ }
217+ }
218+ return title ;
173219 } ,
174220 isGroup : function ( docObject ) {
175221 return docMapInfo . isGroup ( docObject ) ;
0 commit comments