Commit 3213f733 authored by Guillaume Perréal's avatar Guillaume Perréal
Browse files

Ajoute de la doc et sépare les outputs par type dans presentations.

No related merge requests found
Pipeline #11181 passed with stages
in 56 seconds
Showing with 60 additions and 14 deletions
+60 -14
......@@ -8,13 +8,22 @@ REVEALJS_DEFAULT_CONFIG = {
"slideNumber": "true",
}
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
def pandoc(name: str, src: str, out: str = None, toc: bool = True, toc_depth: int = 1, slide_level: int = 2, variables: dict = {}, pandoc_args: list = [], visibility: list = None):
"""Use pandoc to generate a reveal.hs index.html from a markdown file.
Args:
name (str): target name.
src (str): markdown source.
out (str): html output.
toc (bool): pandoc --toc option.
toc_depth (int): pandoc --toc_depth option.
slide_level (int): pandoc --slide_level option.
variables (dict): defines variables for pandoc templates.
pandoc_args (list): supplementary arguments to pass to pandoc.
visibility (list): visilibity of the generated target.
"""
if out is None:
out = src[:-2] + 'html'
out = src.replace('.md', '.html')
args = [
"$TOOL",
......@@ -37,18 +46,55 @@ def pandoc(name: str = None, src: str = None, out: str = None, toc: bool = True,
args = args + ["--variable=%s:%s" % v for v in vars.items()] + pandoc_args
return genrule(
name = "pandoc-%s" % name,
name = name,
cmd = " ".join(args),
srcs = [src],
outs = [out],
tools = ["///tools/pandoc//:bin"]
tools = ["///tools/pandoc//:bin"],
visibility = visibility,
)
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"],
def presentation(directory: str, slides: str = 'index.md', toc: bool = True, toc_depth: int = 1, slide_level: int = 2, variables: dict = {}, pandoc_args: list = [], visibility: list = None):
"""Generate a presentation from a directory.
Args:
directory (str): path to the directory containing
slides (str): name of the files containing the slides in Markdown format.
toc (bool): see pandoc option.
toc_depth (int): see pandoc option.
slide_level (int): see pandoc option.
variables (dict): see pandoc option.
pandoc_args (list): see pandoc option.
visibility (list): visilibity of the generated targets
"""
name = directory.replace('/', '_')
provides = {
'index': pandoc(
name = '%s#index' % name,
src = "%s/%s" % (directory, slides),
out = "%s/index.html" % directory,
toc = toc,
toc_depth = toc_depth,
slide_level = slide_level,
variables = variables,
pandoc_args = pandoc_args,
visibility = visibility
),
}
static_files = glob(["%s/**" % directory], exclude = [slides])
if static_files:
provides['static'] = filegroup(
name = '%s#static' % name,
srcs = static_files,
visibility = visibility
)
return filegroup(
name = name,
deps = provides.values(),
provides = provides,
visibility = visibility
)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment