@ -134,11 +134,12 @@ func (r renderer) Add(a, b int) int { return a + b }
func ( a * api ) tplHandler ( ) ( gemini . Handler , error ) {
func ( a * api ) tplHandler ( ) ( gemini . Handler , error ) {
blogURL := func ( path string , abs bool ) string {
blogURL := func ( base * url . URL , path string , abs bool ) string {
// filepath.Join strips trailing slash, but we want to keep it
// filepath.Join strips trailing slash, but we want to keep it
trailingSlash := strings . HasSuffix ( path , "/" )
trailingSlash := strings . HasSuffix ( path , "/" )
path = filepath . Join ( "/" , a . params . PublicURL . Path , path )
path = filepath . Join ( "/" , base . Path , path )
if trailingSlash && path != "/" {
if trailingSlash && path != "/" {
path += "/"
path += "/"
@ -148,27 +149,29 @@ func (a *api) tplHandler() (gemini.Handler, error) {
return path
return path
}
}
u := * a . params . PublicURL
u := * base
u . Path = path
u . Path = path
return u . String ( )
return u . String ( )
}
}
preprocessFuncs := post . PreprocessFunctions {
preprocessFuncs := post . PreprocessFunctions {
BlogURL : func ( path string ) string {
BlogURL : func ( path string ) string {
return blogURL ( path , false )
return blogURL ( a . params . PublicURL , path , false )
} ,
BlogHTTPURL : func ( path string ) string {
return blogURL ( a . params . HTTPPublicURL , path , true )
} ,
} ,
AssetURL : func ( id string ) string {
AssetURL : func ( id string ) string {
path := filepath . Join ( "assets" , id )
path := filepath . Join ( "assets" , id )
return blogURL ( path , false )
return blogURL ( a . params . PublicURL , path , false )
} ,
} ,
PostURL : func ( id string ) string {
PostURL : func ( id string ) string {
path := filepath . Join ( "posts" , id ) + ".gmi"
path := filepath . Join ( "posts" , id ) + ".gmi"
return blogURL ( path , false )
return blogURL ( a . params . PublicURL , path , false )
} ,
} ,
StaticURL : func ( path string ) string {
StaticURL : func ( path string ) string {
httpPublicURL := * a . params . HTTPPublicURL
path = filepath . Join ( "static" , path )
httpPublicURL . Path = filepath . Join ( httpPublicURL . Path , "/static" , path )
return blogURL ( a . params . HTTPPublicURL , path , true )
return httpPublicURL . String ( )
} ,
} ,
Image : func ( args ... string ) ( string , error ) {
Image : func ( args ... string ) ( string , error ) {
@ -181,7 +184,8 @@ func (a *api) tplHandler() (gemini.Handler, error) {
descr = args [ 1 ]
descr = args [ 1 ]
}
}
path := blogURL ( filepath . Join ( "assets" , id ) , false )
path := filepath . Join ( "assets" , id )
path = blogURL ( a . params . PublicURL , path , false )
return fmt . Sprintf ( "\n=> %s %s" , path , descr ) , nil
return fmt . Sprintf ( "\n=> %s %s" , path , descr ) , nil
} ,
} ,
@ -193,11 +197,11 @@ func (a *api) tplHandler() (gemini.Handler, error) {
allTpls . Funcs ( template . FuncMap {
allTpls . Funcs ( template . FuncMap {
"BlogURLAbs" : func ( path string ) string {
"BlogURLAbs" : func ( path string ) string {
return blogURL ( path , true )
return blogURL ( a . params . PublicURL , path , true )
} ,
} ,
"PostURLAbs" : func ( id string ) string {
"PostURLAbs" : func ( id string ) string {
path := filepath . Join ( "posts" , id ) + ".gmi"
path := filepath . Join ( "posts" , id ) + ".gmi"
return blogURL ( path , true )
return blogURL ( a . params . PublicURL , path , true )
} ,
} ,
} )
} )