1
0

extract_code.sh 576 B

123456789101112131415161718
  1. # Extract code block from a <details> section identified by data-file attribute.
  2. # Usage: extract_code <file> <data-file>
  3. # Example: extract_code ch01.md "main.cpp"
  4. extract_code() {
  5. local file="$1" name="$2"
  6. local output
  7. output=$(awk -v name="$name" '
  8. $0 ~ "data-file=\"" name "\"" { found=1; next }
  9. found && /^```/ && !inside { inside=1; next }
  10. inside && /^```/ { exit }
  11. inside { print }
  12. ' "$file")
  13. if [ -z "$output" ]; then
  14. echo "ERROR: extract_code: no match for data-file=\"$name\" in $file" >&2
  15. return 1
  16. fi
  17. printf '%s\n' "$output"
  18. }