28 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
{{- $siteSourceUrl := site.Params.siteSourceUrl -}}
 | 
						|
{{- $submoduleLinks := site.Data.submodules -}}
 | 
						|
{{- $hostData := site.Data.hosts -}}
 | 
						|
{{- $scratch := .scratch -}}
 | 
						|
{{- $lines := .lines -}}
 | 
						|
{{- $scratch.Set "bestLength" -1 -}}
 | 
						|
{{- $scratch.Set "bestUrl" (printf "%s/code/%s" $siteSourceUrl .path) -}}
 | 
						|
{{- $scratch.Set "bestPath" "" -}}
 | 
						|
{{- $filePath := .path -}}
 | 
						|
{{- range $path, $url := $submoduleLinks -}}
 | 
						|
    {{- $bestLength := $scratch.Get "bestLength" -}}
 | 
						|
    {{- if and (le $bestLength (len $path)) (hasPrefix $filePath $path) -}}
 | 
						|
        {{- $scratch.Set "bestLength" (len $path) -}}
 | 
						|
        {{- $scratch.Set "bestPath" $path -}}
 | 
						|
        {{- $scratch.Set "bestUrl" (printf "%s%s" $url (strings.TrimPrefix $path $filePath)) -}}
 | 
						|
    {{- end -}}
 | 
						|
{{- end -}}
 | 
						|
{{- if .lines -}}
 | 
						|
{{- /* If the user provided a line range, see if we can tack it on to the end of the link. */ -}}
 | 
						|
    {{- range $host, $data := $hostData -}}
 | 
						|
        {{- if hasPrefix ($scratch.Get "bestUrl") $host -}}
 | 
						|
            {{- with $data.linesSuffix -}}
 | 
						|
                {{- $scratch.Add "bestUrl" (printf . (index $lines 0) (index $lines 1)) -}}
 | 
						|
            {{- end -}}
 | 
						|
        {{- end -}}
 | 
						|
    {{- end -}}
 | 
						|
{{- end -}}
 |