]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Tweak scss-docs shortcode
authorXhmikosR <xhmikosr@gmail.com>
Wed, 13 Jan 2021 07:34:52 +0000 (09:34 +0200)
committerXhmikosR <xhmikosr@gmail.com>
Tue, 31 Aug 2021 14:24:38 +0000 (17:24 +0300)
site/layouts/shortcodes/scss-docs.html

index 16a906e77709408c0763f1af1cf0e519fff95f06..3d1cd09a5d49cbf884894d2dab4abe051f3ec555 100644 (file)
@@ -1,33 +1,43 @@
 {{- /*
   Usage: `scss-docs name="name" file="file/_location.scss"`
 
-    Prints everything between `// scss-docs-start "name"` and `// scss-docs-end "name"`
-    comments in the docs.
+  Prints everything between `// scss-docs-start "name"` and `// scss-docs-end "name"`
+  comments in the docs.
 
-    Optional parameters:
-    strip-default: Remove the ` !default` flag from variable assignments - default: `true`
+  Optional parameters:
+    strip-default: Remove the ` !default` flag from variable assignments - default: `true`
 */ -}}
 
 {{- $name := .Get "name" -}}
 {{- $file := .Get "file" -}}
 {{- $strip_default := .Get "strip-default" | default "true" -}}
 
-{{- $start := printf "// scss-docs-start %s\n" $name -}}
-{{- $end := printf "// scss-docs-end %s" $name -}}
-{{- $regex := printf "%s(.|\n)*%s" $start $end -}}
+{{- /* If any parameters are missing, print an error and exit */ -}}
+{{- if or (not $name) (not $file) -}}
+  {{- errorf "%s: %q: Missing required parameters! Got: name=%q file=%q!" .Position .Name $name $file -}}
+{{- else -}}
+  {{- $capture_start := printf "// scss-docs-start %s\n" $name -}}
+  {{- $capture_end := printf "// scss-docs-end %s" $name -}}
+  {{- $regex := printf `%s((?:.|\n)*)%s` $capture_start $capture_end -}}
 
-{{- $css := readFile $file -}}
-{{- $match := findRE $regex $css 1 -}}
+  {{- /*
+    TODO: figure out why we can't do the following and get the first group (the only capturing one)...
+    $regex := printf `(?:// scss-docs-start %s\n)((?:.|\n)*)(?:\n// scss-docs-end %s)` $name $name
+  */ -}}
 
-{{- if (eq (len $match) 0) -}}
-  {{- errorf "Got no matches for %q in %q! (called in %q)" $name $file $.Page.Path -}}
-{{- end -}}
+  {{- $match := findRE $regex (readFile $file) -}}
+  {{- $match = index $match 0 -}}
 
-{{- $remove_start := replace (index $match 0) $start "" -}}
-{{- $result := replace $remove_start $end "" -}}
+  {{- if not $match -}}
+    {{- errorf "%s: %q: Got no matches for name=%q in file=%q!" .Position .Name $name $file -}}
+  {{- end -}}
 
-{{- if (ne $strip_default "false") -}}
-  {{- $result = replace $result " !default" "" -}}
-{{- end -}}
+  {{- $match = replace $match $capture_start "" -}}
+  {{- $match = replace $match $capture_end "" -}}
 
-{{- highlight $result "scss" "" -}}
+  {{- if (ne $strip_default "false") -}}
+    {{- $match = replace $match " !default" "" -}}
+  {{- end -}}
+
+  {{- highlight $match "scss" "" -}}
+{{- end -}}