{{- /* 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 "Zip" $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 "Zip%s" $repo $branch $target $anchor -}} {{- end -}} {{- end -}} {{- end -}} {{- end -}} {{ $result := ""}} {{- if $anchor -}} {{- $result = printf "
%s
%s
" $anchor $syntax $attrs (htmlEscape $text) -}} {{- else -}} {{- $result = printf "
%s
" $syntax $attrs (htmlEscape $text) -}} {{- end -}} {{- $result | safeHTML -}}