summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKévin Le Gouguec <kevin.legouguec@gmail.com>2021-02-23 23:24:42 +0100
committerKévin Le Gouguec <kevin.legouguec@gmail.com>2021-02-23 23:24:42 +0100
commitc9415599cafd67463b6a0a2781ecb47d14fdf976 (patch)
tree635682ffe96526e89a1dd02bb42ba92080f92926
parentb71cacbe6db38833176ec64c54596e928547a6b8 (diff)
downloadquatuorbellefeuille.com-c9415599cafd67463b6a0a2781ecb47d14fdf976.tar.xz
Add first program, plus script to generate them
-rw-r--r--Makefile1
-rwxr-xr-xbuild-programs.py69
-rw-r--r--programmes.html123
-rw-r--r--programmes.sh9
-rw-r--r--programs/beethoven.in13
-rw-r--r--programs/programs.list1
6 files changed, 94 insertions, 122 deletions
diff --git a/Makefile b/Makefile
index e296e2c..d6485f1 100644
--- a/Makefile
+++ b/Makefile
@@ -44,6 +44,7 @@ $(members_pages): $(OUTDIR)/%.html: %.in template.html | $(OUTDIR)
./build-member.sh $< $@
$(OUTDIR)/quatuor.html: quatuor.md
+$(OUTDIR)/programmes.html: $(wildcard programs/*)
clean:
-rm -r $(OUTDIR)
diff --git a/build-programs.py b/build-programs.py
new file mode 100755
index 0000000..513abbe
--- /dev/null
+++ b/build-programs.py
@@ -0,0 +1,69 @@
+#!/usr/bin/env python3
+
+import html
+from pathlib import Path
+import re
+from subprocess import run
+
+
+def read_programs(plist):
+ with open(plist) as l:
+ return tuple(Path('programs', p.strip()) for p in l)
+
+
+PROGRAM_RE = re.compile('\n'.join((
+ 'NOM : (?P<name>.+)',
+ 'COMPOSITEURS : (?P<composers>.+)',
+ 'DESCRIPTION :',
+ '(?P<description>.+)',
+ 'MORCEAUX :',
+ '(?P<pieces>.+)'
+)), flags=re.DOTALL)
+
+def parse(filename):
+ with open(filename) as program:
+ return PROGRAM_RE.match(program.read()).groupdict()
+
+
+BLOCK_TEMPLATE = '''\
+<details class="program">
+ <summary>
+ <div class="name">{name}</div>
+ <div class="composers">{composers}</div>
+ <img class="button open" src="images/chevron-down.svg">
+ <img class="button close" src="images/chevron-up.svg">
+ </summary>
+{description}
+<ol class="pieces">
+{pieces}
+</ol>
+</details>
+'''
+
+def piece(p):
+ if p == 'entracte':
+ return '<li class="intermission">entracte</li>'
+ return f'<li>{html.escape(p)}</li>'
+
+def print_program(filename):
+ info = parse(filename)
+
+ info['description'] = run(
+ ('pandoc',),
+ input=info['description'], capture_output=True, text=True, check=True
+ ).stdout
+
+ info['pieces'] = '\n'.join(
+ piece(p) for p in info['pieces'].splitlines()
+ )
+
+ print(BLOCK_TEMPLATE.format_map(info))
+
+
+def main():
+ for p in read_programs('programs/programs.list'):
+ print_program(p)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/programmes.html b/programmes.html
index 2670d46..d8ac1f5 100644
--- a/programmes.html
+++ b/programmes.html
@@ -1,124 +1,3 @@
<main>
- <details class="program">
- <summary>
- <div class="name">Programme A</div>
- <div class="composers">Foo, Bar, Baz</div>
- <img class="button open" src="images/chevron-down.svg">
- <img class="button close" src="images/chevron-up.svg">
- </summary>
- <p>
- Un programme qui est sacrément bien nommé, parce que son
- contenu correspond tout à fait à ce qui vient en tête
- quand on lit son nom. Composé des œuvres suivantes :
- </p>
- <ol>
- <li>
- <p>La première
- <span class="duration">6min 11s 101ms</span></p>
- <p>Composée par quelqu'un à une époque.</p>
- </li>
- <li>
- <p>La seconde
- <span class="duration">6min 22s 202ms</span></p>
- <p>Composée par quelqu'un d'autre à une autre époque.</p>
- </li>
- <li>
- <p>La troisième
- <span class="duration">6min 33s 303ms</span></p>
- <p>Composée par quelqu'un d'autre à une autre époque.</p>
- </li>
- </ol>
- </details>
-
- <details class="program">
- <summary>
- <div class="name">Programme B</div>
- <div class="composers">Foo, Bar, Baz</div>
- <img class="button open" src="images/chevron-down.svg">
- <img class="button close" src="images/chevron-up.svg">
- </summary>
- <p>
- Un programme qui comme son nom l'indique, rend hommage
- à ce à quoi il fait référence. Composé des œuvres
- suivantes :
- </p>
- <ol>
- <li>
- <p>La première
- <span class="duration">7min 11s 101ms</span></p>
- <p>Composée par quelqu'un à une époque.</p>
- </li>
- <li>
- <p>La seconde
- <span class="duration">7min 22s 202ms</span></p>
- <p>Composée par quelqu'un d'autre à une autre époque.</p>
- </li>
- <li>
- <p>La troisième
- <span class="duration">7min 33s 303ms</span></p>
- <p>Composée par quelqu'un d'autre à une autre époque.</p>
- </li>
- </ol>
- </details>
-
- <details class="program">
- <summary>
- <div class="name">Programme C</div>
- <div class="composers">Foo, Bar, Baz</div>
- <img class="button open" src="images/chevron-down.svg">
- <img class="button close" src="images/chevron-up.svg">
- </summary>
- <p>
- Les morceaux de ce programme font référence à ceux à quoi
- on peut s'attendre en lisant son nom. En voici la liste :
- </p>
- <ol>
- <li>
- <p>Le premier
- <span class="duration">8min 11s 101ms</span></p>
- <p>Composé par quelqu'un à une époque.</p>
- </li>
- <li>
- <p>Le second
- <span class="duration">8min 22s 202ms</span></p>
- <p>Composé par quelqu'un d'autre à une autre époque.</p>
- </li>
- <li>
- <p>Le troisième
- <span class="duration">8min 33s 303ms</span></p>
- <p>Composée par quelqu'un d'autre à une autre époque.</p>
- </li>
- </ol>
- </details>
-
- <details class="program">
- <summary>
- <div class="name">Programme D</div>
- <div class="composers">Foo, Bar, Baz</div>
- <img class="button open" src="images/chevron-down.svg">
- <img class="button close" src="images/chevron-up.svg">
- </summary>
- <p>
- Un programme dont les morceaux ont été choisis pour des
- raisons en lien avec sa dénomination. Composé des œuvres
- suivantes :
- </p>
- <ol>
- <li>
- <p>La première
- <span class="duration">9min 11s 101ms</span></p>
- <p>Composée par quelqu'un à une époque.</p>
- </li>
- <li>
- <p>La première
- <span class="duration">9min 22s 202ms</span></p>
- <p>Composée par quelqu'un d'autre à une autre époque.</p>
- </li>
- <li>
- <p>La troisième
- <span class="duration">9min 33s 303ms</span></p>
- <p>Composée par quelqu'un d'autre à une autre époque.</p>
- </li>
- </ol>
- </details>
+{PROGRAMS}
</main>
diff --git a/programmes.sh b/programmes.sh
index 9c8d9e7..f03a636 100644
--- a/programmes.sh
+++ b/programmes.sh
@@ -1,3 +1,12 @@
+add-programs ()
+{
+ sed -i \
+ -e /'{PROGRAMS}'/'r '<(./build-programs.py) \
+ -e /'{PROGRAMS}'/'c\' \
+ $1
+}
+
title=Programmes
stylesheets=programmes
transforms=("$(transform-li-current-a programmes)")
+postprocess=add-programs
diff --git a/programs/beethoven.in b/programs/beethoven.in
new file mode 100644
index 0000000..d2b2538
--- /dev/null
+++ b/programs/beethoven.in
@@ -0,0 +1,13 @@
+NOM : Beethoven
+COMPOSITEURS : Beethoven, Beethoven, Beethoven
+DESCRIPTION :
+1h50 avec entracte
+
+> Croyez-vous que je pense à vos misérables cordes quand l'esprit me parle ?
+
+Voilà ce qu’aurait répondu Beethoven au quatuor Schuppanzigh qui se serait plaint de la difficulté technique de ses quatuors à cordes. Du trio au quatuor, explorez l’univers d’un Beethoven sans concession et sans limite. De l’infiniment petit à l’immensité de l’univers, de l’introspection la plus intime à la transcendance la plus totale, (re-)découvrez son écriture contrastée et éternellement moderne.
+MORCEAUX :
+Trio op.9 n°3 (1798)
+Quatuor op.18 n°4 (1799)
+entracte
+Quatuor op.59 n°1 (1806)
diff --git a/programs/programs.list b/programs/programs.list
new file mode 100644
index 0000000..a137a86
--- /dev/null
+++ b/programs/programs.list
@@ -0,0 +1 @@
+beethoven.in