{{- /* Usage: `gh type="foo" value="bar" text="foobar"`, where: * type: "issue", "pull", "pr", "pull request", "commit"/"hash", "user" - default: "issue" * value or val: Required - `type`s value, i.e. 1 * text: the link's text; default for PRs/Issues #number, @user for users Examples: * gh type=pr val=1 or gh val=1 -> #1 * gh type=issue val=2-> #2 * gh type=user value=XhmikosR -> @XhmikosR * gh type=commit (or hash) value="a3b09530fb31cfe6bd14d49965c19e8f89c1b023" -> a3b0953 * gh type=commit (or hash) value="a3b0953" -> a3b0953 Quotes are not always needed, but Hugo can choke on some characters like @, in which case wrap the parameter with quotes. */ -}} {{- $type := .Get "type" | default "pr" -}} {{- $is_pr := or (eq $type "pull") (eq $type "pr") (eq $type "pull request") -}} {{- $text := .Get "text" -}} {{- $value := or (.Get "value") (.Get "val") -}} {{- $commit := or (.Get "commit") (.Get "hash") -}} {{- if not $text -}} {{- if eq $type "user" -}} {{- $text = printf "@%s" $value -}} {{- $type = "" -}} {{- else if (or $is_pr (eq $type "issue")) -}} {{- $text = printf "#%s" $value -}} {{- if eq $type "issue" -}} {{- $type = "issues" -}} {{- else -}} {{- $type = "pull" -}} {{- end -}} {{- else if (and (or $commit (eq (len $value) 7) (eq (len $value) 40))) -}} {{- $text = printf "%s" (substr $value 0 7) -}} {{- $type = "commit" -}} {{- else -}} {{- errorf `Wrong parameter passed in %q shortcode: %s` $.Name $.Position -}} {{- end -}} {{- end -}} {{ $text }}