# Make snippet for exchanging data with a HedgeDoc pad
#
# Copyright 2024, Jonas Smedegaard <dr@jones.dk>
# SPDX-License-Identifier: GPL-3+
#
# Setup:
# In main Makefile...
#  * set variable DOCUMENTS
#  * set variable DOCUMENT_APPENDIX_REGEX if needed
#  * include this make snippet
#
# Dependencies:
#  * quarto <https://quarto.org/>
#  * bat <https://github.com/sharkdp/bat>, with executable named "batcat"
#  * perl v5.10.1 or newer

# list of relative paths to directories,
# each containing an index.qmd file.
#DOCUMENTS = \
# main_paper \
# promo_article \
# research/deep/superconductors
# research/deep/fringe

# regular expression anchored at the beginning of a single line,
# to match the beginning of content in document to omit from counting
DOCUMENT_APPENDIX_REGEX ?= Appendix\\b

$(DOCUMENTS:%=doc-render-%): doc-render-%: %.qmd
	quarto render $<

$(DOCUMENTS:%=doc-screening-of-%): doc-screening-of-%: %.qmd
	QUARTO_LOG_LEVEL=quiet \
	quarto render $< --to markdown --output - | batcat --file-name index.qmd --language markdown

# count all characters except horisontal rulers,
# until appendices
$(DOCUMENTS:%=doc-charcount-of-%): doc-charcount-of-%: %.qmd
	QUARTO_LOG_LEVEL=quiet \
	quarto render $< --to plain --columns=9999 --output - \
	| perl -nsE 'next if /^-*$$/; $$done += /^$$re/; $$chars += length unless $$done; END { say $$chars }' \
	 -- -re="$(DOCUMENT_APPENDIX_REGEX)"

.PHONY: $(DOCUMENTS:%=doc-render-%) $(DOCUMENTS:%=doc-screening-of-%) $(DOCUMENTS:%=doc-charcount-of-%)