From d51374f9b9545c24b4dcfae33827fea7b0d4ba12 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Fri, 2 Oct 2020 16:56:43 +0300 Subject: [PATCH] WIP --- site/layouts/shortcodes/gh.html | 53 ++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 17 deletions(-) diff --git a/site/layouts/shortcodes/gh.html b/site/layouts/shortcodes/gh.html index 09a719694..5059998ef 100644 --- a/site/layouts/shortcodes/gh.html +++ b/site/layouts/shortcodes/gh.html @@ -1,25 +1,44 @@ {{- /* - Usage: gh "foo", where foo can be: + Usage: `gh type="foo" value="bar" text="foobar"`, where: - * "pr 1" -> #1 - * "issue 2" -> #2 - * "@XhmikosR" -> @XhmikosR - * "a3b09530fb31cfe6bd14d49965c19e8f89c1b023" -> a3b0953 - * "a3b0953" -> a3b0953 + * 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 - Quotes are not always needed, but Hugo can choke on some characters like @, in which case wrap the parameter with quotes. Also, they are needed for PR and Issue + 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. */ -}} -{{ range .Params -}} - {{- if hasPrefix . "@" -}} - {{ . }} - {{- else if hasPrefix (. | lower) "pr" -}} - #{{ trim (substr . 2) " " }} - {{- else if hasPrefix (. | lower) "issue" -}} - #{{ trim (substr . (len "issue")) " " }} - {{- else if or (eq (len .) 7) (eq (len .) 40) -}} - {{ trim (substr . 0 7) " " }} +{{- $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 }} + {{- errorf `Wrong parameter passed in %q shortcode: %s` $.Name $.Position -}} {{- end -}} {{- end -}} + +{{ $text }} \ No newline at end of file