{{- /* Usage: `js-docs name="name" file="file/_location.js` Prints everything between `// js-docs-start "name"` and `// js-docs-end "name"` comments in the docs. */ -}} {{- $name := .Get "name" -}} {{- $file := .Get "file" -}} {{- /* 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 "// js-docs-start %s\n" $name -}} {{- $capture_end := printf "// js-docs-end %s\n" $name -}} {{- $regex := printf `%s((?:.|\n)*)%s` $capture_start $capture_end -}} {{- $regex_nested := printf `// js-docs-.*\n` -}} {{- $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 "" -}} {{- $match_nested := findRE $regex_nested $match -}} {{- range $to_remove := $match_nested -}} {{- $match = replace $match $to_remove "" -}} {{- end -}}