{{- /* 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. 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" -}} {{- /* 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 -}} {{- /* 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 */ -}} {{- $match := findRE $regex (readFile $file) -}} {{- $match = index $match 0 -}} {{- if not $match -}} {{- errorf "%s: %q: Got no matches for name=%q in file=%q!" .Position .Name $name $file -}} {{- end -}} {{- $match = replace $match $capture_start "" -}} {{- $match = replace $match $capture_end "" -}} {{- if (ne $strip_default "false") -}} {{- $match = replace $match " !default" "" -}} {{- end -}}
{{- $file -}}
{{- $unindent := 0 -}} {{- $found := false -}} {{- $first_line:= index (split $match "\n") 0 -}} {{- range $char := split $first_line "" -}} {{- if and (eq $char " ") (not $found) -}} {{- $unindent = add $unindent 1 -}} {{- else -}} {{- $found = true -}} {{- end -}} {{- end -}} {{- $output := "" -}} {{- if (gt $unindent 0) -}} {{- $prefix := (strings.Repeat $unindent " ") -}} {{- range $line := split $match "\n" -}} {{- $line = strings.TrimPrefix $prefix $line -}} {{ $output = printf "%s%s\n" $output $line }} {{- end -}} {{- $output = chomp $output -}} {{- else -}} {{- $output = $match -}} {{- end -}} {{- highlight $output "scss" "" -}}
{{- end -}}