hugo

Fork of github.com/gohugoio/hugo with reverse pagination support

git clone git://git.shimmy1996.com/hugo.git

code-toggle.html (3633B)

    1 {{- /*
    2 Renders syntax-highlighted configuration data in JSON, TOML, and YAML formats.
    3 
    4 @param {string} config
    5   Section of site.Data.docs.config to render.
    6   Example: markup.highlight
    7   Default: ""
    8 @param {bool} copy
    9   Display a copy button.
   10   Default: true
   11 @param {string} file
   12   File name to display above the rendered code.
   13   Default: ""
   14 @param {bool} fm
   15   Does Inner represent front matter?
   16   Default: false
   17 @param {string} Inner
   18   Content between opening and closing shortcode tags.
   19   Default: ""
   20 @param {bool} skipHeader
   21   Omit top level key(s) when rendering a section of site.Data.docs.config.
   22   Default: false
   23 @returns {template.HTML}
   24 */ -}}
   25 
   26 {{- /* Initialize. */ -}}
   27 {{- $config := "" -}}
   28 {{- $copy := true -}}
   29 {{- $file := "" -}}
   30 {{- $fm := false -}}
   31 {{- $skipHeader := false -}}
   32 
   33 {{- /* Get parameters, defend against string booleans. */ -}}
   34 {{- if .Params -}}
   35   {{- $config = .Get "config" -}}
   36   {{- $file = .Get "file" -}}
   37   {{- if (isset .Params "copy") -}}
   38     {{- if in (slice true "true") (.Get "copy") -}}
   39       {{- $copy = true -}}
   40     {{- else -}}
   41       {{- $copy = false -}}
   42     {{- end -}}
   43   {{- end -}}
   44   {{- if (isset .Params "fm") -}}
   45     {{- if in (slice true "true") (.Get "fm") -}}
   46       {{- $fm = true -}}
   47     {{- else -}}
   48       {{- $fm = false -}}
   49     {{- end -}}
   50   {{- end -}}
   51   {{- if (isset .Params "skipHeader") -}}
   52     {{- if in (slice true "true") (.Get "skipHeader") -}}
   53       {{- $skipHeader = true -}}
   54     {{- else -}}
   55       {{- $skipHeader = false -}}
   56     {{- end -}}
   57   {{- end -}}
   58 {{- end -}}
   59 
   60 {{- /* Define constants. */ -}}
   61 {{- $delimiters := dict "toml" "+++" "yaml" "---" -}}
   62 {{- $langs := slice "yaml" "toml" "json" -}}
   63 {{- $placeHolder := "#-hugo-placeholder-#" -}}
   64 
   65 {{- /* Render. */ -}}
   66 {{- $code := "" -}}
   67 {{- with $config -}}
   68   {{- $file = $file | default "config" -}}
   69   {{- $sections := (split . ".") -}}
   70   {{- $configSection := index $.Site.Data.docs.config $sections -}}
   71   {{- $code = dict $sections $configSection -}}
   72   {{- if $skipHeader -}}
   73     {{- $code = $configSection -}}
   74   {{- end -}}
   75 {{- else -}}
   76   {{- $code = $.Inner -}}
   77 {{- end }}
   78 <div class="code relative" {{ with $file }}id="{{ . | urlize }}"{{ end }}>
   79   <div class="code-nav flex flex-nowrap items-stretch">
   80     {{- with $file }}
   81       <div class="san-serif f6 dib lh-solid pl2 pv2 mr2">
   82         {{- . -}}{{- if not $fm -}}.{{- end -}}
   83       </div>
   84     {{- end -}}
   85     {{- range $langs }}
   86       <button data-toggle-tab="{{ . }}" class="tab-button {{ cond (eq . "yaml") "active" "" }} ba san-serif f6 dib lh-solid ph2 pv2">
   87         {{ . }}
   88       </button>
   89       &nbsp;
   90     {{- end }}
   91   </div>
   92   <div class="tab-content">
   93     {{- range $langs }}
   94       <div data-pane="{{ . }}" class="code-copy-content nt3 tab-pane {{ cond (eq . "yaml") "active" "" }}">
   95         {{- $hCode := $code | transform.Remarshal . -}}
   96         {{- if and $fm (in (slice "toml" "yaml") .) -}}
   97           {{- $hCode = printf "%s\n%s\n%s" $placeHolder $hCode $placeHolder -}}
   98         {{- end -}}
   99         {{- $hCode = $hCode | replaceRE `\n+` "\n" }}
  100         {{ highlight $hCode . "" | replaceRE $placeHolder (index $delimiters .) | safeHTML }}
  101       </div>
  102       {{- if $copy }}
  103         <button class="needs-js copy copy-toggle bg-accent-color-dark f6 absolute top-0 right-0 lh-solid hover-bg-primary-color-dark bn white ph3 pv2" title="Copy this code to your clipboard." data-clipboard-action="copy" aria-label="copy button"></button>
  104         {{- /* Functionality located within filesaver.js The copy here is located in the css with .copy class so it can be replaced with JS on success */ -}}
  105       {{- end -}}
  106     {{- end }}
  107   </div>
  108 </div>