Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRegis Philibert <login@regisphilibert.com>2020-07-03 18:33:57 +0300
committerXhmikosR <xhmikosr@gmail.com>2020-11-19 21:54:42 +0300
commit3fcfd606f2c264f1d3434e99c140a05edec461c3 (patch)
treec9f342298c720c911d283b71b55df97354358f53 /site/layouts
parent6b071116f3b09b59a423ad999efbd67f8645bfa5 (diff)
Add Hugo Pipes logic for local and vendored scripts.
Diffstat (limited to 'site/layouts')
-rw-r--r--site/layouts/partials/func/get-js-assets.html74
-rw-r--r--site/layouts/partials/scripts.html18
2 files changed, 78 insertions, 14 deletions
diff --git a/site/layouts/partials/func/get-js-assets.html b/site/layouts/partials/func/get-js-assets.html
new file mode 100644
index 0000000000..a7a27292e7
--- /dev/null
+++ b/site/layouts/partials/func/get-js-assets.html
@@ -0,0 +1,74 @@
+{{/*
+ get-js-assets
+ Returns a list of processed Hugo Assets to be used in templates
+
+ @author @regisphilibert
+
+ @context Page (.)
+
+ @access public
+
+ @example - Go Template
+ {{- range partialCached "func/get-js-assets" . $variant -}}
+ <script src="{{ .RelPermalink }}"></script>
+ {{- end -}}
+*/}}
+
+{{/* We'll return a slice so templates can safely use `range` */}}
+{{ $jsAssets := slice }}
+
+{{/* Storing the reused mount warning message */}}
+{{ $missing_file_warning := "%s not found. Check your mounts settings." }}
+{{ $doc_version := site.Params.docs_version }}
+{{/* Doc Search */}}
+{{ if eq .Page.Layout "docs" -}}
+ {{ with resources.GetMatch "js/vendor/docsearch.min.js" }}
+ {{/* As this is a WIP, we don't customize the asset URL,
+ but we will after Hugo .74 and resources.Put (https://github.com/gohugoio/hugo/issues/7406):
+ {{ with resources.GetMatch "js/vendor/docsearch.min.js" }}
+ {{ $docsearch := . | resources.Put (printf /docs/%s/assets/js/vendor/docsearch.min.js" $doc_version) }}
+ {{ $jsAssets = $jsAssets | append $docsearch }}
+ */}}
+ {{ $jsAssets = $jsAssets | append . }}
+ {{ else }}
+ {{ warnf $missing_file_warning "docsearch.min.js" }}
+ {{ end }}
+{{- end }}
+
+{{/* --- Bundle */}}
+{{ $bundle := slice }}
+
+{{/* ----- Mounted from vendors */}}
+{{- $vendor_assets := slice -}}
+{{/* As we need to list the desired mounted files to:
+ 1. Check for missing mounts and throw an error
+ 2. Control order if need be
+ 3. Exclude docsearch (though there would be other ways) */}}
+{{ $vendor_filenames := slice "clipboard.min.js" "anchor.min.js" "bs-custom-file-input.min.js" }}
+{{ range $filename := $vendor_filenames }}
+ {{ with resources.GetMatch (print "js/vendor/" .) }}
+ {{ $vendor_assets = $vendor_assets | append . }}
+ {{ else }}
+ {{ warnf $missing_file_warning $filename }}
+ {{ end }}
+{{ end }}
+{{ with $vendor_assets }}
+ {{ $bundle = $bundle | append . }}
+{{ end }}
+
+{{/* ----- Local assets */}}
+{{ with resources.Match "js/*.js" }}
+ {{ $bundle = $bundle | append . }}
+{{ end }}
+
+{{/* Above code should have populated $bundle slice */}}
+{{ with $bundle }}
+ {{ $targetBundlePath := printf "/docs/%s/assets/js/docs.js" $doc_version }}
+ {{ $bundle_asset := $bundle | resources.Concat $targetBundlePath }}
+ {{ if eq hugo.Environment "production" }}
+ {{ $bundle_asset = $bundle_asset | resources.Minify }}
+ {{ end }}
+ {{ $jsAssets = $jsAssets | append $bundle_asset }}
+{{ end }}
+
+{{ return $jsAssets }}
diff --git a/site/layouts/partials/scripts.html b/site/layouts/partials/scripts.html
index be30d7a10d..f19a9b5825 100644
--- a/site/layouts/partials/scripts.html
+++ b/site/layouts/partials/scripts.html
@@ -4,17 +4,7 @@
<script src="/docs/{{ .Site.Params.docs_version }}/dist/js/bootstrap.bundle.js"></script>
{{- end }}
-{{ if eq .Page.Layout "docs" -}}
-<script src="/docs/{{ .Site.Params.docs_version }}/assets/js/vendor/docsearch.min.js"></script>
-{{- end }}
-
-{{- $vendor := resources.Match "js/vendor/*.js" -}}
-{{- $js := resources.Match "js/*.js" -}}
-{{- $targetDocsJSPath := printf "/docs/%s/assets/js/docs.js" .Site.Params.docs_version -}}
-{{- $docsJs := append $js $vendor | resources.Concat $targetDocsJSPath -}}
-
-{{- if eq hugo.Environment "production" -}}
- {{- $docsJs = $docsJs | resources.Minify -}}
-{{- end }}
-
-<script src="{{ $docsJs.Permalink | relURL }}"></script>
+{{- $variant := cond (eq .Page.Layout "docs") "docs" "default" -}}
+{{- range partialCached "func/get-js-assets" . $variant -}}
+ <script src="{{ .RelPermalink }}"></script>
+{{- end -}}