diff options
Diffstat (limited to 'themes/PaperMod/layouts/shortcodes/blockquote.html')
-rw-r--r-- | themes/PaperMod/layouts/shortcodes/blockquote.html | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/themes/PaperMod/layouts/shortcodes/blockquote.html b/themes/PaperMod/layouts/shortcodes/blockquote.html new file mode 100644 index 0000000..14bb107 --- /dev/null +++ b/themes/PaperMod/layouts/shortcodes/blockquote.html @@ -0,0 +1,72 @@ + +<!-- Author: Parsia Hakimian https://github.com/parsiya/Hugo-Shortcodes --> +<!-- port of Octopress blockquote plugin http://octopress.org/docs/plugins/blockquote/ to Hugo + see readme for usage --> + +<!-- reset scratch variables at the start --> +{{ $.Scratch.Set "bl_author" false }} +{{ $.Scratch.Set "bl_source" false }} +{{ $.Scratch.Set "bl_link" false }} +{{ $.Scratch.Set "bl_title" false }} + +{{ if .IsNamedParams }} + {{ $.Scratch.Set "bl_author" (.Get "author") }} + {{ $.Scratch.Set "bl_source" (.Get "source") }} + {{ $.Scratch.Set "bl_link" (.Get "link") }} + {{ $.Scratch.Set "bl_title" (.Get "title") }} +{{ else }} + <!-- for the positional version if any --> +{{ end }} + +<!-- if title is not set explicitly then we need to beautify the link + if length of link is more than 32 chars, we will cut it off by 32 and + then drop everything after the last / if any and put it in into title --> + +{{ with $.Scratch.Get "bl_title" }} + <!-- do nothing --> +{{ else }} + {{ with $.Scratch.Get "bl_link" }} <!-- if link is given --> + {{ range last 1 (split ($.Scratch.Get "bl_link" ) "://") }} <!-- split by :// and then only take the items after it to remove protocol:// --> + {{ $.Scratch.Set "title_without_protocol" . }} + {{ end }} + {{ range last 1 (split ($.Scratch.Get "title_without_protocol" ) "www.") }} <!-- also remove the www. at the start if any. we are using a second split because all URLS may not start with it --> + {{ $.Scratch.Set "title_without_protocol" . }} + {{ end }} + {{ $.Scratch.Set "bl_title" ($.Scratch.Get "title_without_protocol") }} + + <!-- if link is longer than 32 bytes we should trim it --> + {{ if (gt (len ($.Scratch.Get "title_without_protocol") ) 32) }} + {{ $title := (slicestr ($.Scratch.Get "title_without_protocol") 0 32) }} <!-- get the first 32 characters of title_without_protocol --> + {{ $split_by_fw_slash := split $title "/" }} <!-- now split on / because we want to stop after the last forward slash --> + {{ $count := (sub (len $split_by_fw_slash) 1) }} <!-- we want everything but the last part so we adjust the count accordingly --> + + {{ $.Scratch.Set "tempstring" "" }} <!-- temp variable to hold the concatinated string --> + {{ range first $count $split_by_fw_slash }} <!-- loop through all parts except last and concat them (add / between halves) --> + {{ $.Scratch.Set "tempstring" ( . | printf "%s%s/" ($.Scratch.Get "tempstring") | printf "%s" ) }} + {{ end }} + {{ $.Scratch.Set "bl_title" ( printf "%s..." ($.Scratch.Get "tempstring") | printf "%s" ) }} + {{ end }} + {{ end }} +{{ end }} + +<blockquote> + <p>{{ .Inner | markdownify }}</p> + <footer> + <strong>{{ with $.Scratch.Get "bl_author" }}{{ . }}{{ end }}</strong> + {{ with $.Scratch.Get "bl_source" }} + <cite>{{ . }}</cite> + {{ else }} + {{ with $.Scratch.Get "bl_link" }} + <cite> + <a href="{{ . }}" title="{{ . }}">{{ $.Scratch.Get "bl_title" }}</a> <!-- can't have new lines here --> + </cite> + {{ else }} + {{ with $.Scratch.Get "bl_title" }} + <cite> + {{ $.Scratch.Get "bl_title" }}</a> + </cite> + {{ end }} + {{ end }} + {{ end }} + </footer> +</blockquote> |