mirror of https://github.com/istio/istio.io.git
155 lines
5.8 KiB
HTML
155 lines
5.8 KiB
HTML
{{- /* Inserts a text block into the HTML. See https://preliminary.istio.io/about/contribute/creating-and-editing-pages/#embedding-preformatted-blocks for details */ -}}
|
|
{{- $syntax := .Get "syntax" | default (.Get 0) -}}
|
|
{{- $file := .Get "file" -}}
|
|
{{- $url := .Get "url" -}}
|
|
{{- $output_is := .Get "outputis" | default (.Get 1) -}}
|
|
{{- $download_as := .Get "downloadas" -}}
|
|
{{- $snippet := .Get "snippet" -}}
|
|
{{- $repo := .Get "repo" -}}
|
|
|
|
{{- if not $repo }}
|
|
{{- $repo = "istio" }}
|
|
{{- end -}}
|
|
|
|
{{- $expand_links := "true" -}}
|
|
|
|
{{- if .Get "expandlinks" -}}
|
|
{{- $expand_links = .Get "expandlinks" }}
|
|
{{- end -}}
|
|
|
|
{{- if not (or $syntax $snippet) -}}
|
|
{{- errorf "Text block does not specify a syntax (%s)" .Position -}}
|
|
{{- $syntax = "plain" -}}
|
|
{{- end -}}
|
|
|
|
{{- $text := "" -}}
|
|
{{- $inner := trim .Inner " \n" -}}
|
|
|
|
{{- if $url -}}
|
|
{{- if $inner -}}
|
|
{{- errorf "Can't combine inner content with a url attribute (%s)" .Position -}}
|
|
{{- end -}}
|
|
{{- if not $download_as -}}
|
|
{{- if $snippet }}
|
|
{{ $download_as = $snippet }}
|
|
{{- else -}}
|
|
{{- $tmp := split $url "/" | last 1 -}}
|
|
{{- $download_as = index $tmp 0 -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- else -}}
|
|
{{- if $file -}}
|
|
{{- $text = readFile $file -}}
|
|
{{- if or $url $inner -}}
|
|
{{- errorf "Can't combine url or inner content with a file attribute (%s)" .Position -}}
|
|
{{- end -}}
|
|
{{- if not $download_as -}}
|
|
{{- if $snippet }}
|
|
{{ $download_as = $snippet }}
|
|
{{- else -}}
|
|
{{- $tmp := split $file "/" | last 1 -}}
|
|
{{- $download_as = index $tmp 0 -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- else -}}
|
|
{{- if $snippet -}}
|
|
{{- errorf "Snippets only work for imported text blocks (%s)" .Position -}}
|
|
{{- end -}}
|
|
{{- $text = chomp (partial "strip_indent.html" (dict "content" .Inner "pos" .Position)) -}}
|
|
{{- end -}}
|
|
|
|
{{- if (hasPrefix $text " ") -}}
|
|
{{- errorf "Text blocks need to not be indented, or indented by a multiple of 4 spaces (%s)" .Position -}}
|
|
{{- end -}}
|
|
|
|
{{- if $snippet -}}
|
|
{{- $pattern := printf "(?msU).*\\$snippet %s +syntax=\"(.+)\" +outputis=\"(.+)\" *$\\n(.*)(?-s)\\n^.*\\$endsnippet *$(?s-U).*" $snippet -}}
|
|
{{- $match := findRE $pattern $text -}}
|
|
{{- if eq (len $match) 0 -}}
|
|
|
|
{{- $pattern := printf "(?msU).*\\$snippet %s +syntax=\"(.+)\" *$\\n(.*)(?-s)\\n^.*\\$endsnippet *$(?s-U).*" $snippet -}}
|
|
{{- $match = findRE $pattern $text -}}
|
|
{{- if eq (len $match) 0 -}}
|
|
|
|
{{- $pattern := printf "(?msU).*\\$snippet %s *$\\n(.*)(?-s)\\n^.*\\$endsnippet *$(?s-U).*" $snippet -}}
|
|
{{- $match = findRE $pattern $text -}}
|
|
{{- if eq (len $match) 0 -}}
|
|
{{- errorf "Could not find snippet %s (%s)" $snippet .Position -}}
|
|
{{- else -}}
|
|
{{- $text = replaceRE $pattern "$1" $text -}}
|
|
{{- end -}}
|
|
{{- else -}}
|
|
{{- if not $syntax -}}
|
|
{{- $syntax = replaceRE $pattern "$1" $text -}}
|
|
{{- end -}}
|
|
|
|
{{- $text = replaceRE $pattern "$2" $text -}}
|
|
{{- end -}}
|
|
{{- else -}}
|
|
{{- if not $syntax -}}
|
|
{{- $syntax = replaceRE $pattern "$1" $text -}}
|
|
{{- end -}}
|
|
|
|
{{- if not $output_is -}}
|
|
{{- $output_is = replaceRE $pattern "$2" $text -}}
|
|
{{- end -}}
|
|
|
|
{{- $text = replaceRE $pattern "$3" $text -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- if eq $syntax "bash" -}}
|
|
{{- if not (hasPrefix $text "$") -}}
|
|
{{- errorf "Text block specifies a bash syntax, but the first line of the block does not start with $ (%s)" .Position -}}
|
|
{{- end -}}
|
|
{{- else -}}
|
|
{{- if $output_is -}}
|
|
{{- errorf "Only text blocks with a bash syntax can use outputis (%s)" .Position -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{- $attrs := printf "data-expandlinks='%s' " $expand_links -}}
|
|
{{- if $download_as -}}
|
|
{{- $attrs = printf "%sdata-downloadas='%s' " $attrs $download_as -}}
|
|
{{- end -}}
|
|
{{- if $url -}}
|
|
{{- $attrs = printf "%sdata-src='%s' " $attrs $url -}}
|
|
{{- if $snippet -}}
|
|
{{- $attrs = printf "%sdata-snippet='%s' " $attrs $snippet -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- if $output_is -}}
|
|
{{- $attrs = printf "%sdata-outputis='%s' " $attrs $output_is -}}
|
|
{{- end -}}
|
|
{{- if $expand_links -}}
|
|
{{- $attrs = printf "%sdata-repo='%s' " $attrs $repo -}}
|
|
{{- end -}}
|
|
|
|
{{- $anchor := "" }}
|
|
{{- if $url -}}
|
|
{{- /* expose the URL to the link checker */ -}}
|
|
{{- $anchor = printf "<a data-skipendnotes='true' style='display:none' href='%s'>Zip</a>" $url -}}
|
|
{{- else -}}
|
|
{{- if eq $expand_links "true" -}}
|
|
{{- /* include a dummy link to the special embedded @@ references so the links are statically checked as we build the site */ -}}
|
|
{{- $branch := .Site.Data.args.source_branch_name -}}
|
|
{{- $links := findRE "@([\\w/\\.\\-]*?)@" $text -}}
|
|
{{- range $link := $links -}}
|
|
{{- $target := trim $link "@" -}}
|
|
{{- if gt (len $target) 0 -}}
|
|
{{- $anchor = printf "<a data-skipendnotes='true' style='display:none' href='https://raw.githubusercontent.com/istio/%s/%s/%s'>Zip</a>%s" $repo $branch $target $anchor -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- end -}}
|
|
|
|
{{ $result := ""}}
|
|
{{- if $anchor -}}
|
|
{{- $result = printf "<div>%s<pre><code class='language-%s' %s>%s</code></pre></div>" $anchor $syntax $attrs (htmlEscape $text) -}}
|
|
{{- else -}}
|
|
{{- $result = printf "<pre><code class='language-%s' %s>%s</code></pre>" $syntax $attrs (htmlEscape $text) -}}
|
|
{{- end -}}
|
|
|
|
{{- $result | safeHTML -}}
|