diff --git a/rules.build_defs b/rules.build_defs index 08426f0a2bbc3700251ccfebb3b0f71494d59da1..9e64f21d57d5066a5290065ee1de07df3b105090 100644 --- a/rules.build_defs +++ b/rules.build_defs @@ -1,44 +1,54 @@ REVEALJS_DEFAULT_CONFIG = { "width": "1024", "height": "768", - "transitionSpeed": "fast", - "lang": "fr-FR", "history": "true", "navigationMode": "linear", "fragmentInURL": "true", - "revealjs-url": "../reveal.js", "theme": "inrae", "slideNumber": "true", } -def pandoc(name: str, src: str = None, out: str = None, toc_depth: int = 1, slide_level: int = 2, config: dict = {}, pandoc_args: list = []): +def pandoc(name: str = None, src: str = None, out: str = None, toc: bool = True, toc_depth: int = 1, slide_level: int = 2, variables: dict = {}, pandoc_args: list = []): + if name is None: + name = "pandoc_%s" % src.replace('/', '_') if src is None: src = '%s/index.md' % name if out is None: out = src[:-2] + 'html' - variables = REVEALJS_DEFAULT_CONFIG.copy() - for k,v in config.items(): - variables[k] = str(v) + args = [ + "$TOOL", + "$SRC", + "--output=$OUT", + "--from=markdown+backtick_code_blocks+pandoc_title_block+yaml_metadata_block", + "--to=revealjs", + "--standalone", + "--slide-level=%d" % slide_level, + ] + + if toc: + args.append("--toc") + args.append("--toc-depth=%d" % toc_depth) + + vars = REVEALJS_DEFAULT_CONFIG.copy() + for k,v in variables.items(): + vars[k] = str(v) + + args = args + ["--variable=%s:%s" % v for v in vars.items()] + pandoc_args return genrule( name = "pandoc-%s" % name, - cmd = " ".join( - [ - "$TOOL", - "$SRC", - "--output=$OUT", - "--from=markdown+smart", - "--to=revealjs", - "--standalone", - "--toc", - "--toc-depth=%d" % toc_depth, - "--slide-level=%d" % slide_level, - ] - + ["--variable=%s:%s" % variable for variable in variables.items()] - + pandoc_args - ), + cmd = " ".join(args), srcs = [src], outs = [out], tools = ["///tools/pandoc//:bin"] ) + +def presentation(name: str, src: str = None, out: str = None, toc: bool = True, toc_depth: int = 1, slide_level: int = 2, variables: dict = {}, pandoc_args: list = []): + return filegroup( + name = "presentation_%s" % name.replace('/', '_'), + srcs = [pandoc(name, src, out, toc, toc_depth, slide_level, variables, pandoc_args)] + glob( + ["%s/**" % name], + exclude = ["*.md"], + ), + )