From cfffce5e28ffacdf862bcda77fc6cab39bd213d5 Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Thu, 10 Mar 2016 16:41:47 +0100 Subject: [PATCH 01/45] Minor debug message change --- patacrep/content/sort.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patacrep/content/sort.py b/patacrep/content/sort.py index 7ee5aff0..cb10d157 100755 --- a/patacrep/content/sort.py +++ b/patacrep/content/sort.py @@ -56,7 +56,7 @@ def key_generator(sort): field = song.data[key] except KeyError: LOGGER.debug( - "Ignoring unknown key '{}' for song {}.".format( + "Ignoring missing key '{}' for song {}.".format( key, files.relpath(song.fullpath), ) From 79be2a56ec7595e820508f11669efe6e0671e757 Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Thu, 10 Mar 2016 20:52:53 +0100 Subject: [PATCH 02/45] Allow finer tuning of the diagram page: all/important/none --- patacrep/data/templates/songbook/default.tex | 11 +++++------ patacrep/data/templates/songbook_model.yml | 12 ++++++++++-- patacrep/data/templates/styles/chords.sty | 13 ++++++++++++- patacrep/data/templates/styles/patacrep.sty | 8 ++++++++ patacrep/templates.py | 5 +++++ test/test_songbook/content.tex.control | 12 ++++++------ test/test_songbook/datadir.tex.control | 12 ++++++------ test/test_songbook/lang_default.tex.control | 12 ++++++------ test/test_songbook/lang_en.tex.control | 12 ++++++------ test/test_songbook/lang_fr.tex.control | 12 ++++++------ test/test_songbook/languages.tex.control | 12 ++++++------ .../onthefly/content.onthefly.tex.control | 12 ++++++------ test/test_songbook/syntax.tex.control | 12 ++++++------ test/test_songbook/unicode.tex.control | 12 ++++++------ 14 files changed, 94 insertions(+), 63 deletions(-) diff --git a/patacrep/data/templates/songbook/default.tex b/patacrep/data/templates/songbook/default.tex index 52d759b9..5eef827a 100644 --- a/patacrep/data/templates/songbook/default.tex +++ b/patacrep/data/templates/songbook/default.tex @@ -103,12 +103,11 @@ description: (* block chords *) % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% (* endblock *) diff --git a/patacrep/data/templates/songbook_model.yml b/patacrep/data/templates/songbook_model.yml index 05c40f2b..a3d3ce1b 100644 --- a/patacrep/data/templates/songbook_model.yml +++ b/patacrep/data/templates/songbook_model.yml @@ -27,7 +27,15 @@ schema: type: //rec required: show: //bool - diagrampage: //bool + diagrampage: + type: //any + of: + - type: //str + value: "none" + - type: //str + value: "important" + - type: //str + value: "all" repeatchords: //bool lilypond: //bool tablatures: //bool @@ -97,7 +105,7 @@ default: chords: show: yes diagramreminder: important - diagrampage: yes + diagrampage: all repeatchords: yes lilypond: no tablatures: no diff --git a/patacrep/data/templates/styles/chords.sty b/patacrep/data/templates/styles/chords.sty index 236606e7..5f498e69 100644 --- a/patacrep/data/templates/styles/chords.sty +++ b/patacrep/data/templates/styles/chords.sty @@ -24,7 +24,7 @@ \raisebox{2em}{\chordname{##1}} % } % % Placing boxes - \ifimportantdiagramonly% + \ifdiagrampagereduced% \pl@cechord{#1}% \hspace{\stretch{1}}% \usebox{\@chordgroupbox@ii}% @@ -75,7 +75,17 @@ \newcommand{\chords}{ + \ifdiagrampage \begin{songs}{} + %important diagrams are hidden by \chordtabs + \renewcommand{\gtab}{\@ifstar + \gtab@Original% + \gtab@Original% + } + \renewcommand{\utab}{\@ifstar + \utab@Original% + \utab@Original% + } %hide song number \definecolor{SongNumberBgColor}{HTML}{FFFFFF} \renewcommand{\snumbgcolor}{SongNumberBgColor} @@ -391,5 +401,6 @@ \fi \end{songs} + \fi } \endinput diff --git a/patacrep/data/templates/styles/patacrep.sty b/patacrep/data/templates/styles/patacrep.sty index 5ed071c2..36e117fd 100644 --- a/patacrep/data/templates/styles/patacrep.sty +++ b/patacrep/data/templates/styles/patacrep.sty @@ -26,6 +26,14 @@ \newif{\iflilypondauto} \DeclareOption{lilypond}{\lilypondautotrue\lilypondtrue} +% diagram: display chord page before the songs +\newif{\ifdiagrampage} +\DeclareOption{diagrampage}{\diagrampagetrue} + +% diagram: display chord page before the songs +\newif{\ifdiagrampagereduced} +\DeclareOption{diagrampagereduced}{\diagrampagereducedtrue\diagrampagetrue} + % diagram: display chord diagrams at the beginning \newif{\ifdiagram} \DeclareOption{diagram}{\diagramtrue} diff --git a/patacrep/templates.py b/patacrep/templates.py index ca6740a1..c18ef454 100644 --- a/patacrep/templates.py +++ b/patacrep/templates.py @@ -296,4 +296,9 @@ def iter_bookoptions(config): elif config['chords']['diagramreminder'] == "all": yield 'diagram' + if config['chords']['diagrampage'] == "important": + yield 'diagrampagereduced' + elif config['chords']['diagrampage'] == "all": + yield 'diagrampage' + yield config['chords']['instrument'] diff --git a/test/test_songbook/content.tex.control b/test/test_songbook/content.tex.control index 9fd7d242..38a79074 100644 --- a/test/test_songbook/content.tex.control +++ b/test/test_songbook/content.tex.control @@ -26,6 +26,7 @@ chorded, pictures, diagram, +diagrampage, guitar, ]{patacrep} @@ -79,13 +80,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} diff --git a/test/test_songbook/datadir.tex.control b/test/test_songbook/datadir.tex.control index 1154a6fd..687a6096 100644 --- a/test/test_songbook/datadir.tex.control +++ b/test/test_songbook/datadir.tex.control @@ -28,6 +28,7 @@ chorded, pictures, repeatchords, importantdiagramonly, +diagrampage, guitar, ]{patacrep} @@ -82,13 +83,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} diff --git a/test/test_songbook/lang_default.tex.control b/test/test_songbook/lang_default.tex.control index 42f1e087..40391656 100644 --- a/test/test_songbook/lang_default.tex.control +++ b/test/test_songbook/lang_default.tex.control @@ -26,6 +26,7 @@ chorded, pictures, repeatchords, importantdiagramonly, +diagrampage, guitar, ]{crepbook} @@ -113,13 +114,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} diff --git a/test/test_songbook/lang_en.tex.control b/test/test_songbook/lang_en.tex.control index 11a9f401..55573ddd 100644 --- a/test/test_songbook/lang_en.tex.control +++ b/test/test_songbook/lang_en.tex.control @@ -26,6 +26,7 @@ chorded, pictures, repeatchords, importantdiagramonly, +diagrampage, guitar, ]{crepbook} @@ -113,13 +114,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} diff --git a/test/test_songbook/lang_fr.tex.control b/test/test_songbook/lang_fr.tex.control index 1255dcce..aca45a48 100644 --- a/test/test_songbook/lang_fr.tex.control +++ b/test/test_songbook/lang_fr.tex.control @@ -26,6 +26,7 @@ chorded, pictures, repeatchords, importantdiagramonly, +diagrampage, guitar, ]{crepbook} @@ -113,13 +114,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} diff --git a/test/test_songbook/languages.tex.control b/test/test_songbook/languages.tex.control index 46d888dc..a1cfa123 100644 --- a/test/test_songbook/languages.tex.control +++ b/test/test_songbook/languages.tex.control @@ -27,6 +27,7 @@ chorded, pictures, repeatchords, importantdiagramonly, +diagrampage, guitar, ]{patacrep} @@ -82,13 +83,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} diff --git a/test/test_songbook/onthefly/content.onthefly.tex.control b/test/test_songbook/onthefly/content.onthefly.tex.control index 8a882c85..3ee52e2e 100644 --- a/test/test_songbook/onthefly/content.onthefly.tex.control +++ b/test/test_songbook/onthefly/content.onthefly.tex.control @@ -25,6 +25,7 @@ chorded, pictures, diagram, +diagrampage, guitar, ]{patacrep} @@ -77,13 +78,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} diff --git a/test/test_songbook/syntax.tex.control b/test/test_songbook/syntax.tex.control index 1c925801..af7acb06 100644 --- a/test/test_songbook/syntax.tex.control +++ b/test/test_songbook/syntax.tex.control @@ -27,6 +27,7 @@ chorded, pictures, repeatchords, importantdiagramonly, +diagrampage, guitar, ]{patacrep} @@ -79,13 +80,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} diff --git a/test/test_songbook/unicode.tex.control b/test/test_songbook/unicode.tex.control index 7d088978..38ce6118 100644 --- a/test/test_songbook/unicode.tex.control +++ b/test/test_songbook/unicode.tex.control @@ -27,6 +27,7 @@ chorded, pictures, repeatchords, importantdiagramonly, +diagrampage, guitar, ]{patacrep} @@ -79,13 +80,12 @@ guitar, \showindex{\authorindexname}{authidx} % list of chords -\ifchorded - \ifdiagram - \phantomsection - \addcontentsline{toc}{section}{\chordlistname} - \chords - \fi +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords \fi +\setcounter{songnum}{1}% \phantomsection \addcontentsline{toc}{section}{\songlistname} From 5e167214092f770949af40629c29a8f859658275 Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Thu, 10 Mar 2016 21:04:44 +0100 Subject: [PATCH 03/45] correct comment --- patacrep/data/templates/styles/patacrep.sty | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patacrep/data/templates/styles/patacrep.sty b/patacrep/data/templates/styles/patacrep.sty index 36e117fd..8b88af75 100644 --- a/patacrep/data/templates/styles/patacrep.sty +++ b/patacrep/data/templates/styles/patacrep.sty @@ -26,11 +26,11 @@ \newif{\iflilypondauto} \DeclareOption{lilypond}{\lilypondautotrue\lilypondtrue} -% diagram: display chord page before the songs +% diagram: insert a page of diagrams before the songs \newif{\ifdiagrampage} \DeclareOption{diagrampage}{\diagrampagetrue} -% diagram: display chord page before the songs +% diagram: insert a page of the "important diagrams" before the songs \newif{\ifdiagrampagereduced} \DeclareOption{diagrampagereduced}{\diagrampagereducedtrue\diagrampagetrue} From 6f7ea3c4d0810f8e97739136b02379511ed6e0df Mon Sep 17 00:00:00 2001 From: Louis Date: Sat, 19 Mar 2016 20:37:57 +0100 Subject: [PATCH 04/45] [test] Latex special characters: Add failing and incomplete tests --- test/test_songbook/latex_special.yaml | 14 ++++++++++++++ .../latex_special_datadir/songs/special.csg | 8 ++++++++ 2 files changed, 22 insertions(+) create mode 100644 test/test_songbook/latex_special.yaml create mode 100644 test/test_songbook/latex_special_datadir/songs/special.csg diff --git a/test/test_songbook/latex_special.yaml b/test/test_songbook/latex_special.yaml new file mode 100644 index 00000000..8e479e91 --- /dev/null +++ b/test/test_songbook/latex_special.yaml @@ -0,0 +1,14 @@ +book: + datadir: + - latex_special_datadir + +template: + default.tex: + title: "TODO" + author: "TODO" + patacrep.tex: + subtitle: "TODO" + url: "TODO" + email: "TODO" + picture: "img/treble_a" + diff --git a/test/test_songbook/latex_special_datadir/songs/special.csg b/test/test_songbook/latex_special_datadir/songs/special.csg new file mode 100644 index 00000000..7740b6df --- /dev/null +++ b/test/test_songbook/latex_special_datadir/songs/special.csg @@ -0,0 +1,8 @@ +{title : & % $ # _ } { ~ ^ \ } +{by: & % $ # _ } { ~ ^ \ } + +& % $ # _ } { ~ ^ \ + +{soc} + & % $ # _ } { ~ ^ \ +{eoc} From 863951dab5279c913ab9d9968b93ff31f7c58b3d Mon Sep 17 00:00:00 2001 From: Louis Date: Sat, 19 Mar 2016 22:22:28 +0100 Subject: [PATCH 05/45] [test] More complex tests --- test/test_songbook/latex_special.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/test_songbook/latex_special.yaml b/test/test_songbook/latex_special.yaml index 8e479e91..206bea46 100644 --- a/test/test_songbook/latex_special.yaml +++ b/test/test_songbook/latex_special.yaml @@ -4,11 +4,11 @@ book: template: default.tex: - title: "TODO" - author: "TODO" + title: "& % $ # _ } { ~ ^ \\" + author: "& % $ # _ } { ~ ^ \\" patacrep.tex: - subtitle: "TODO" - url: "TODO" - email: "TODO" + subtitle: "& % $ # _ } { ~ ^ \\" + url: "& % $ # _ } { ~ ^ \\" + email: "& % $ # _ } { ~ ^ \\" picture: "img/treble_a" From 443e8509a12b3a2513921021b20bc8390c77f34c Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 20 Mar 2016 07:38:19 +0100 Subject: [PATCH 06/45] [test] Refine tests. Untested draft of fix. --- patacrep/songs/chordpro/lexer.py | 8 ++++++++ test/test_song/latex.csg | 0 test/test_song/latex.csg.source | 9 +++++++++ test/test_song/latex.tsg | 0 .../latex_special_datadir/songs/special.csg | 8 ++++---- 5 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 test/test_song/latex.csg create mode 100644 test/test_song/latex.csg.source create mode 100644 test/test_song/latex.tsg diff --git a/patacrep/songs/chordpro/lexer.py b/patacrep/songs/chordpro/lexer.py index 7674c22f..ad9c4d20 100644 --- a/patacrep/songs/chordpro/lexer.py +++ b/patacrep/songs/chordpro/lexer.py @@ -30,6 +30,8 @@ tokens = ( 'EE', ) +literals = [ '{', '}', "\\", ' ' ] + class ChordProLexer: """ChordPro Lexer class""" # pylint: disable=too-many-public-methods @@ -150,6 +152,12 @@ class ChordProLexer: self.lexer.push_state('directiveargument') return token + @staticmethod + def t_literal(token): + r'\[{} \]' + t.type = t.type[1] + return t + def error(self, token, more=""): """Display error message, and skip illegal token.""" message = "Illegal character '{char}'{more}.".format( diff --git a/test/test_song/latex.csg b/test/test_song/latex.csg new file mode 100644 index 00000000..e69de29b diff --git a/test/test_song/latex.csg.source b/test/test_song/latex.csg.source new file mode 100644 index 00000000..c00062f6 --- /dev/null +++ b/test/test_song/latex.csg.source @@ -0,0 +1,9 @@ +{title: & $ % # _ \} \{ ~ ^ \\} +{artist: & $ % # _ \} \{ ~ ^ \\} +{album: & $ % # _ \} \{ ~ ^ \\} + +& $ % # _ \} \{ ~ ^ \\ + +{start_of_chorus} +& $ % # _ \} \{ ~ ^ \\ +{end_of_chorus} diff --git a/test/test_song/latex.tsg b/test/test_song/latex.tsg new file mode 100644 index 00000000..e69de29b diff --git a/test/test_songbook/latex_special_datadir/songs/special.csg b/test/test_songbook/latex_special_datadir/songs/special.csg index 7740b6df..0f058af6 100644 --- a/test/test_songbook/latex_special_datadir/songs/special.csg +++ b/test/test_songbook/latex_special_datadir/songs/special.csg @@ -1,8 +1,8 @@ -{title : & % $ # _ } { ~ ^ \ } -{by: & % $ # _ } { ~ ^ \ } +{title : & % $ # _ \} \{ ~ ^ \\ } +{by: & % $ # _ }\ \{ ~ ^ \\ } -& % $ # _ } { ~ ^ \ +& % $ # _ }\ \{ ~ ^ \\ {soc} - & % $ # _ } { ~ ^ \ + & % $ # _ }\ \{ ~ ^ \\ {eoc} From c52d309a883b90c3ef21d5b3f515ee17ace0279c Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 20 Mar 2016 22:05:27 +0100 Subject: [PATCH 07/45] [test] Mark # as an escapable character --- patacrep/songs/chordpro/lexer.py | 2 +- test/test_song/latex.csg.source | 4 ++-- .../test_songbook/latex_special_datadir/songs/special.csg | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/patacrep/songs/chordpro/lexer.py b/patacrep/songs/chordpro/lexer.py index ad9c4d20..ffeec7d4 100644 --- a/patacrep/songs/chordpro/lexer.py +++ b/patacrep/songs/chordpro/lexer.py @@ -154,7 +154,7 @@ class ChordProLexer: @staticmethod def t_literal(token): - r'\[{} \]' + r'\[{} \#]' t.type = t.type[1] return t diff --git a/test/test_song/latex.csg.source b/test/test_song/latex.csg.source index c00062f6..bbe53f98 100644 --- a/test/test_song/latex.csg.source +++ b/test/test_song/latex.csg.source @@ -2,8 +2,8 @@ {artist: & $ % # _ \} \{ ~ ^ \\} {album: & $ % # _ \} \{ ~ ^ \\} -& $ % # _ \} \{ ~ ^ \\ +& $ % \# _ \} \{ ~ ^ \\ {start_of_chorus} -& $ % # _ \} \{ ~ ^ \\ +& $ % \# _ \} \{ ~ ^ \\ {end_of_chorus} diff --git a/test/test_songbook/latex_special_datadir/songs/special.csg b/test/test_songbook/latex_special_datadir/songs/special.csg index 0f058af6..29caee7a 100644 --- a/test/test_songbook/latex_special_datadir/songs/special.csg +++ b/test/test_songbook/latex_special_datadir/songs/special.csg @@ -1,8 +1,8 @@ -{title : & % $ # _ \} \{ ~ ^ \\ } -{by: & % $ # _ }\ \{ ~ ^ \\ } +{title : & % $ \# _ \} \{ ~ ^ \\ } +{by: & % $ \# _ }\ \{ ~ ^ \\ } -& % $ # _ }\ \{ ~ ^ \\ +& % $ \# _ }\ \{ ~ ^ \\ {soc} - & % $ # _ }\ \{ ~ ^ \\ + & % $ \# _ }\ \{ ~ ^ \\ {eoc} From 453aaaba4ed8d55c7f08ac01c1e7bbcd0668462f Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 22 Mar 2016 17:26:38 +0100 Subject: [PATCH 08/45] Remove useless and deprecated option --- patacrep/authors.py | 4 ++-- patacrep/index.py | 7 +++---- patacrep/songs/__init__.py | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/patacrep/authors.py b/patacrep/authors.py index 11d1df60..dadcc909 100644 --- a/patacrep/authors.py +++ b/patacrep/authors.py @@ -16,11 +16,11 @@ def compile_authwords(authwords): return { 'ignore': authwords.get('ignore', []), 'after': [ - re.compile(RE_AFTER.format(word), re.LOCALE) + re.compile(RE_AFTER.format(word)) for word in authwords.get('after') ], 'separators': [ - re.compile(RE_SEPARATOR.format(word), re.LOCALE) + re.compile(RE_SEPARATOR.format(word)) for word in ([" %s" % word for word in authwords['separators']] + [',', ';']) ], } diff --git a/patacrep/index.py b/patacrep/index.py index d572f872..e520e713 100644 --- a/patacrep/index.py +++ b/patacrep/index.py @@ -16,8 +16,8 @@ from patacrep.latex import tex2plain EOL = "\n" # Pattern set to ignore latex command in title prefix -KEYWORD_PATTERN = re.compile(r"^%(\w+)\s?(.*)$", re.LOCALE) -FIRST_LETTER_PATTERN = re.compile(r"^(?:\{?\\\w+\}?)*[^\w]*(\w)", re.LOCALE) +KEYWORD_PATTERN = re.compile(r"^%(\w+)\s?(.*)$") +FIRST_LETTER_PATTERN = re.compile(r"^(?:\{?\\\w+\}?)*[^\w]*(\w)") def process_sxd(filename): """Parse sxd file. @@ -90,8 +90,7 @@ class Index: if 'prefix' in self.keywords: for prefix in self.keywords['prefix']: self.prefix_patterns.append(re.compile( - r"^({prefix})(\b|\\)(\s*.*)$".format(prefix=prefix), - re.LOCALE + r"^({prefix})(\b|\\)(\s*.*)$".format(prefix=prefix) )) if self.indextype == "AUTHOR": diff --git a/patacrep/songs/__init__.py b/patacrep/songs/__init__.py index b1d80f5d..c58aaae9 100644 --- a/patacrep/songs/__init__.py +++ b/patacrep/songs/__init__.py @@ -294,7 +294,7 @@ def unprefixed_title(title, prefixes): """Remove the first prefix of the list in the beginning of title (if any). """ for prefix in prefixes: - match = re.compile(r"^(%s)\b\s*(.*)$" % prefix, re.LOCALE).match(title) + match = re.compile(r"^(%s)\b\s*(.*)$" % prefix).match(title) if match: return match.group(2) return title From da9215aacd4036d2750e698de5221c9e0f011265 Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 23 Mar 2016 07:18:23 +0100 Subject: [PATCH 09/45] [WIP] Escaped characters are correctly parsed. They now have to be correctly rendered [ci skip] --- patacrep/songs/chordpro/lexer.py | 22 ++++++++++++++-------- patacrep/songs/chordpro/syntax.py | 15 ++++++++++++--- test/test_song/latex.csg | 10 ++++++++++ 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/patacrep/songs/chordpro/lexer.py b/patacrep/songs/chordpro/lexer.py index ffeec7d4..c63049aa 100644 --- a/patacrep/songs/chordpro/lexer.py +++ b/patacrep/songs/chordpro/lexer.py @@ -30,8 +30,6 @@ tokens = ( 'EE', ) -literals = [ '{', '}', "\\", ' ' ] - class ChordProLexer: """ChordPro Lexer class""" # pylint: disable=too-many-public-methods @@ -51,7 +49,7 @@ class ChordProLexer: t_directive_SPACE = r'[ \t]+' t_directive_KEYWORD = r'[a-zA-Z_]+' - t_directiveargument_TEXT = r'[^}]+' + t_directiveargument_TEXT = r'[^\\}]+' @staticmethod def t_SOC(token): @@ -120,7 +118,7 @@ class ChordProLexer: @staticmethod def t_WORD(token): - r'[^{}\r\n\]\[\t ]+' + r'[^{}\\\r\n\]\[\t ]+' return token def t_LBRACKET(self, __token): @@ -153,10 +151,18 @@ class ChordProLexer: return token @staticmethod - def t_literal(token): - r'\[{} \#]' - t.type = t.type[1] - return t + def t_ESCAPED(token): + r'\\[{} #\\]' + token.value = token.value[1] + token.type = "WORD" + return token + + @staticmethod + def t_directiveargument_ESCAPED(token): + r'\\[{} #\\]' + token.value = token.value[1] + token.type = "TEXT" + return token def error(self, token, more=""): """Display error message, and skip illegal token.""" diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index b4c28cc7..9a7b9feb 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -182,9 +182,8 @@ class ChordproParser(Parser): @staticmethod def p_directive_next(symbols): - """directive_next : SPACE COLON TEXT - | COLON TEXT - | COLON + """directive_next : SPACE COLON directive_argument + | COLON directive_argument | empty """ if len(symbols) == 3: @@ -196,6 +195,16 @@ class ChordproParser(Parser): else: symbols[0] = None + @staticmethod + def p_directive_argument(symbols): + """directive_argument : TEXT directive_argument + | empty + """ + if len(symbols) == 3: + symbols[0] = symbols[1] + symbols[2] + else: + symbols[0] = "" + def p_line_error(self, symbols): """line_error : error directive""" self.error( diff --git a/test/test_song/latex.csg b/test/test_song/latex.csg index e69de29b..7fd9cf9f 100644 --- a/test/test_song/latex.csg +++ b/test/test_song/latex.csg @@ -0,0 +1,10 @@ +{lang: en} +{title: & $ % # _ \} \{ ~ ^ \\} +{artist: & $ % # _ \} \{ ~ ^ \\} +{album: & $ % # _ \} \{ ~ ^ \\} + +& $ % \# _ \} \{ ~ ^ \\ + +{start_of_chorus} + & $ % \# _ \} \{ ~ ^ \\ +{end_of_chorus} From 482bfb217dcf4df99293885e216c62ad69b94383 Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 13 Apr 2016 18:05:20 +0200 Subject: [PATCH 10/45] [patatools] Replace subcommand manipulation by module `argdispatch` (#214) * [patatools] Replace subcommand manipulation by module `argdispatch` * [patatools] Behave well when no subcommand is given * [pylint] Remove useless import, and fix import ordering --- patacrep/tools/__main__.py | 77 +++--------------------------- patacrep/tools/cache/__main__.py | 5 +- patacrep/tools/convert/__main__.py | 3 +- setup.py | 2 +- 4 files changed, 10 insertions(+), 77 deletions(-) diff --git a/patacrep/tools/__main__.py b/patacrep/tools/__main__.py index 13794b14..1bfc3fab 100644 --- a/patacrep/tools/__main__.py +++ b/patacrep/tools/__main__.py @@ -2,85 +2,26 @@ """Command line client to :mod:`tools`""" -import argparse import logging -import operator -import os -import pkgutil -import re import sys +import argdispatch + import patacrep # Logging configuration logging.basicConfig(level=logging.INFO) LOGGER = logging.getLogger("patatools") -def _execlp(program, args): - """Call :func:`os.execlp`, adding `program` as the first argument to itself.""" - return os.execlp(program, program, *args) - -def _iter_subcommands(): - """Iterate over subcommands. - - The objects returned are tuples of: - - the name of the command; - - its description; - - the function to call to execute the subcommand. - """ - subcommands = [] - - # Get python subcommands - path = [os.path.join(item, "patacrep", "tools") for item in sys.path] - prefix = "patacrep.tools." - module_re = re.compile(r'{}(?P[^\.]*)\.__main__'.format(prefix)) - for module_loader, name, _ in pkgutil.walk_packages(path, prefix): - match = module_re.match(name) - if match: - module = module_loader.find_module(match.string).load_module() - if hasattr(module, "SUBCOMMAND_DESCRIPTION"): - subcommands.append(match.groupdict()['subcommand']) - yield ( - match.groupdict()['subcommand'], - getattr(module, "SUBCOMMAND_DESCRIPTION"), - module.main, - ) - -class ArgumentParser(argparse.ArgumentParser): - """Proxy class to circumvent an :mod:`argparse` bug. - - Contrarily to what documented, the `argparse.REMAINDER - `_ `nargs` setting - does not include the remainder arguments if the first one begins with `-`. - - This bug is reperted as `17050 `_. This - class can be deleted once this bug has been fixed. - """ - - def parse_args(self, args=None, namespace=None): - if args is None: - args = sys.argv[1:] - subcommands = [command[0] for command in set(_iter_subcommands())] - if len(args) > 0: - if args[0] in subcommands: - args = [args[0], "--"] + args[1:] - - value = super().parse_args(args, namespace) - - if hasattr(value, 'remainder'): - value.remainder = value.remainder[1:] - return value - - def commandline_parser(): """Return a command line parser.""" - parser = ArgumentParser( + parser = argdispatch.ArgumentParser( prog="patatools", description=( "Miscellaneous tools for patacrep." ), - formatter_class=argparse.RawTextHelpFormatter, + formatter_class=argdispatch.RawTextHelpFormatter, ) parser.add_argument( @@ -96,11 +37,7 @@ def commandline_parser(): ) subparsers.required = True subparsers.dest = "subcommand" - - for command, message, function in sorted(_iter_subcommands(), key=operator.itemgetter(0)): - sub1 = subparsers.add_parser(command, help=message, add_help=False) - sub1.add_argument('remainder', nargs=argparse.REMAINDER) - sub1.set_defaults(function=function) + subparsers.add_submodules("patacrep.tools") return parser @@ -108,9 +45,7 @@ def main(args=None): """Main function""" if args is None: args = sys.argv - parser = commandline_parser() - args = parser.parse_args(args[1:]) - args.function(["patatools-{}".format(args.subcommand)] + args.remainder) + commandline_parser().parse_args(args[1:]) if __name__ == "__main__": main() diff --git a/patacrep/tools/cache/__main__.py b/patacrep/tools/cache/__main__.py index 6bf2cd8e..5c75d52d 100644 --- a/patacrep/tools/cache/__main__.py +++ b/patacrep/tools/cache/__main__.py @@ -1,4 +1,4 @@ -"""`patatools cache` command: cache manipulation.""" +"""Perform operations on cache.""" import argparse import logging @@ -11,7 +11,6 @@ from patacrep import errors from patacrep.songbook import open_songbook LOGGER = logging.getLogger("patatools.cache") -SUBCOMMAND_DESCRIPTION = "Perform operations on cache." def filename(name): """Check that argument is an existing, readable file name. @@ -27,7 +26,7 @@ def commandline_parser(): parser = argparse.ArgumentParser( prog="patatools cache", - description=SUBCOMMAND_DESCRIPTION, + description="Convert between song formats.", formatter_class=argparse.RawTextHelpFormatter, ) diff --git a/patacrep/tools/convert/__main__.py b/patacrep/tools/convert/__main__.py index a7b25455..65b82d8b 100644 --- a/patacrep/tools/convert/__main__.py +++ b/patacrep/tools/convert/__main__.py @@ -1,4 +1,4 @@ -"""`patatools.convert` command: convert between song formats""" +"""Convert between song formats.""" import os import logging @@ -10,7 +10,6 @@ from patacrep.utils import yesno from patacrep.build import config_model LOGGER = logging.getLogger("patatools.convert") -SUBCOMMAND_DESCRIPTION = "Convert between song formats" def _usage(): return "patatools convert INPUTFORMAT OUTPUTFORMAT FILES" diff --git a/setup.py b/setup.py index 4d0c74c5..aacfe910 100755 --- a/setup.py +++ b/setup.py @@ -34,7 +34,7 @@ setup( packages=find_packages(exclude=["test*"]), license="GPLv2 or any later version", install_requires=[ - "unidecode", "jinja2", "ply", "pyyaml", + "argdispatch", "unidecode", "jinja2", "ply", "pyyaml", ], entry_points={ 'console_scripts': [ From af3649320eeeb489f6f279b54e411a26856b4100 Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 14 Apr 2016 12:07:58 +0200 Subject: [PATCH 11/45] bug fix for empty keyword in index generation --- patacrep/authors.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patacrep/authors.py b/patacrep/authors.py index dadcc909..03221ebc 100644 --- a/patacrep/authors.py +++ b/patacrep/authors.py @@ -17,11 +17,11 @@ def compile_authwords(authwords): 'ignore': authwords.get('ignore', []), 'after': [ re.compile(RE_AFTER.format(word)) - for word in authwords.get('after') + for word in authwords.get('after', []) ], 'separators': [ re.compile(RE_SEPARATOR.format(word)) - for word in ([" %s" % word for word in authwords['separators']] + [',', ';']) + for word in ([" %s" % word for word in authwords.get('separators', [])] + [',', ';']) ], } From 83ed9ddf71744de3c3fd89a3442bfb80f4ba0099 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 15 Apr 2016 10:05:04 +0200 Subject: [PATCH 12/45] [WIP] Escaping characters when generating chordpro files works. --- .../songs/chordpro/chordpro/content_word | 2 +- .../templates/songs/chordpro/chordpro/song_header | 8 ++++---- patacrep/songs/chordpro/__init__.py | 15 +++++++++++++++ test/test_song/latex.csg | 4 +++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/patacrep/data/templates/songs/chordpro/chordpro/content_word b/patacrep/data/templates/songs/chordpro/chordpro/content_word index d9dd7a30..e90a86e9 100644 --- a/patacrep/data/templates/songs/chordpro/chordpro/content_word +++ b/patacrep/data/templates/songs/chordpro/chordpro/content_word @@ -1 +1 @@ -(( content.value )) +(( content.value|escape_specials('{}\\#') )) diff --git a/patacrep/data/templates/songs/chordpro/chordpro/song_header b/patacrep/data/templates/songs/chordpro/chordpro/song_header index 56ad6a3a..fe9feb48 100644 --- a/patacrep/data/templates/songs/chordpro/chordpro/song_header +++ b/patacrep/data/templates/songs/chordpro/chordpro/song_header @@ -9,16 +9,16 @@ (* endif *) (*- for title in titles -*) - {title: (( title ))} + {title: (( title|escape_specials('{}\\') ))} (* endfor -*) (*- for author in authors -*) - {artist: (( author[1] )) (( author[0] ))} + {artist: (( author[1]|escape_specials('{}\\') )) (( author[0]|escape_specials('{}\\') ))} (* endfor -*) (*- for key in ['album', 'copyright'] *) (* if key in metadata -*) - {(( key )): (( metadata[key] ))} + {(( key )): (( metadata[key]|escape_specials('{}\\') ))} (* endif *) (* endfor *) (* if 'cover' in metadata -*) @@ -30,7 +30,7 @@ (* endfor -*) (*- for key in metadata.morekeys -*) - {key: (( key.keyword )): (( key.argument ))} + {key: (( key.keyword )): (( key.argument|escape_specials('{}\\') ))} (* endfor *) (*- for chord in metadata['define'] *) diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index a7fd3e3b..c63a07b8 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -30,6 +30,7 @@ class ChordproSong(Song): # pylint: disable=abstract-method output_language = None + _translation_map = {} def _parse(self): """Parse content, and return the dictionary of song data.""" @@ -50,6 +51,7 @@ class ChordproSong(Song): filters.update({ 'search_image': self.search_image, 'search_partition': self.search_partition, + 'escape_specials': self._escape_specials, }) return filters @@ -84,6 +86,13 @@ class ChordproSong(Song): context.vars['content'] = content return context.environment.get_template(content.template()).render(context) + def _escape_specials(self, content, chars): + return str(content).translate(str.maketrans({ + key: value + for key, value in self._translation_map.items() + if key in chars + })) + class Chordpro2HtmlSong(ChordproSong): """Render chordpro song to html code""" @@ -164,6 +173,12 @@ class Chordpro2ChordproSong(ChordproSong): """Render chordpro song to chordpro code""" output_language = "chordpro" + _translation_map = { + '{': r'\{', + '}': r'\}', + '\\': '\\\\', + '#': r'\#', + } def search_file(self, filename, extensions=None, *, datadirs=None): # pylint: disable=unused-variable diff --git a/test/test_song/latex.csg b/test/test_song/latex.csg index 7fd9cf9f..c26ff044 100644 --- a/test/test_song/latex.csg +++ b/test/test_song/latex.csg @@ -1,10 +1,12 @@ {lang: en} {title: & $ % # _ \} \{ ~ ^ \\} -{artist: & $ % # _ \} \{ ~ ^ \\} +{artist: & $ % # _ \} \{ ~ ^ \\} {album: & $ % # _ \} \{ ~ ^ \\} + & $ % \# _ \} \{ ~ ^ \\ + {start_of_chorus} & $ % \# _ \} \{ ~ ^ \\ {end_of_chorus} From 1e488b26eca2756bc7d7b2da2e7cbc509b260367 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Apr 2016 07:37:52 +0200 Subject: [PATCH 13/45] [WIP] Special chars, and TODO --- test/test_song/latex.tsg | 0 test/test_song/{latex.csg => special.csg} | 0 .../{latex.csg.source => special.csg.source} | 1 + test/test_song/special.tsg | 21 +++++++++++++++++++ .../{latex_special.yaml => special.yaml} | 2 +- .../songs/special.csg | 0 6 files changed, 23 insertions(+), 1 deletion(-) delete mode 100644 test/test_song/latex.tsg rename test/test_song/{latex.csg => special.csg} (100%) rename test/test_song/{latex.csg.source => special.csg.source} (94%) create mode 100644 test/test_song/special.tsg rename test/test_songbook/{latex_special.yaml => special.yaml} (90%) rename test/test_songbook/{latex_special_datadir => special_datadir}/songs/special.csg (100%) diff --git a/test/test_song/latex.tsg b/test/test_song/latex.tsg deleted file mode 100644 index e69de29b..00000000 diff --git a/test/test_song/latex.csg b/test/test_song/special.csg similarity index 100% rename from test/test_song/latex.csg rename to test/test_song/special.csg diff --git a/test/test_song/latex.csg.source b/test/test_song/special.csg.source similarity index 94% rename from test/test_song/latex.csg.source rename to test/test_song/special.csg.source index bbe53f98..128cfa98 100644 --- a/test/test_song/latex.csg.source +++ b/test/test_song/special.csg.source @@ -1,3 +1,4 @@ +TODO url ? {title: & $ % # _ \} \{ ~ ^ \\} {artist: & $ % # _ \} \{ ~ ^ \\} {album: & $ % # _ \} \{ ~ ^ \\} diff --git a/test/test_song/special.tsg b/test/test_song/special.tsg new file mode 100644 index 00000000..aa42a9cc --- /dev/null +++ b/test/test_song/special.tsg @@ -0,0 +1,21 @@ +\selectlanguage{english} + +\beginsong{\& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}}[ + by={ + \& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} }, + album={\& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}}, +] + + + + +\begin{verse} + \& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} +\end{verse} + + +\begin{chorus} + \& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} +\end{chorus} + +\endsong diff --git a/test/test_songbook/latex_special.yaml b/test/test_songbook/special.yaml similarity index 90% rename from test/test_songbook/latex_special.yaml rename to test/test_songbook/special.yaml index 206bea46..895b838c 100644 --- a/test/test_songbook/latex_special.yaml +++ b/test/test_songbook/special.yaml @@ -1,6 +1,6 @@ book: datadir: - - latex_special_datadir + - special_datadir template: default.tex: diff --git a/test/test_songbook/latex_special_datadir/songs/special.csg b/test/test_songbook/special_datadir/songs/special.csg similarity index 100% rename from test/test_songbook/latex_special_datadir/songs/special.csg rename to test/test_songbook/special_datadir/songs/special.csg From dfc7762931b7b0e350e99f2799de42eda02e2753 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Apr 2016 08:27:47 +0200 Subject: [PATCH 14/45] [WIP] Special characters: Song generation works. Songbook generation remains to implement --- .../templates/songs/chordpro/latex/content_word | 2 +- patacrep/data/templates/songs/chordpro/latex/song | 8 ++++---- patacrep/songs/chordpro/__init__.py | 12 ++++++++++++ test/test_song/special.csg.source | 2 +- .../special_datadir/songs/special.csg | 14 ++++++++------ 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/patacrep/data/templates/songs/chordpro/latex/content_word b/patacrep/data/templates/songs/chordpro/latex/content_word index d9dd7a30..ebe4d86f 100644 --- a/patacrep/data/templates/songs/chordpro/latex/content_word +++ b/patacrep/data/templates/songs/chordpro/latex/content_word @@ -1 +1 @@ -(( content.value )) +(( content.value|escape_specials('{}&#_^%~$\\') )) diff --git a/patacrep/data/templates/songs/chordpro/latex/song b/patacrep/data/templates/songs/chordpro/latex/song index cb29cc29..d2cbe830 100644 --- a/patacrep/data/templates/songs/chordpro/latex/song +++ b/patacrep/data/templates/songs/chordpro/latex/song @@ -8,7 +8,7 @@ \beginsong{ (*- for title in titles -*) - (( title )) + (( title|escape_specials('{}&#_^%~$\\') )) (*- if not loop.last -*) \\ (* endif *) @@ -16,7 +16,7 @@ }[ by={ (* for author in authors *) - (( author[1] )) (( author[0] )) + (( author[1]|escape_specials('{}&#_^%~$\\') )) (( author[0]|escape_specials('{}&#_^%~$\\') )) (*- if not loop.last -*) , (* endif *) @@ -24,7 +24,7 @@ }, (* for key in ['album', 'copyright'] *) (* if key in metadata *) - (( key ))={(( metadata[key] ))}, + (( key ))={(( metadata[key]|escape_specials('{}&#_^%~$\\') ))}, (* endif *) (* endfor *) (* if 'cover' in metadata *) @@ -36,7 +36,7 @@ (* endblock *) (* endif *) (* for key in metadata.morekeys *) - (( key.keyword ))={(( key.argument ))}, + (( key.keyword ))={(( key.argument|escape_specials('{}&#_^%~$\\') ))}, (* endfor *) ] diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index c63a07b8..4318cd6a 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -113,6 +113,18 @@ class Chordpro2LatexSong(ChordproSong): """Render chordpro song to latex code""" output_language = "latex" + _translation_map = { + '{': r'\{', + '}': r'\}', + '\\': r'\textbackslash{}', + '^': r'\textasciicircum{}', + '~': r'\textasciitilde{}', + '#': r'\#', + '&': r'\&', + '$': r'\$', + '%': r'\%', + '_': r'\_', + } def search_file(self, filename, extensions=None, *, datadirs=None): _datadir, filename, _extension = self.search_datadir_file( diff --git a/test/test_song/special.csg.source b/test/test_song/special.csg.source index 128cfa98..cb8d7c9d 100644 --- a/test/test_song/special.csg.source +++ b/test/test_song/special.csg.source @@ -1,7 +1,7 @@ -TODO url ? {title: & $ % # _ \} \{ ~ ^ \\} {artist: & $ % # _ \} \{ ~ ^ \\} {album: & $ % # _ \} \{ ~ ^ \\} +{url: & $ % # _ \} \{ ~ ^ \\} & $ % \# _ \} \{ ~ ^ \\ diff --git a/test/test_songbook/special_datadir/songs/special.csg b/test/test_songbook/special_datadir/songs/special.csg index 29caee7a..cb8d7c9d 100644 --- a/test/test_songbook/special_datadir/songs/special.csg +++ b/test/test_songbook/special_datadir/songs/special.csg @@ -1,8 +1,10 @@ -{title : & % $ \# _ \} \{ ~ ^ \\ } -{by: & % $ \# _ }\ \{ ~ ^ \\ } +{title: & $ % # _ \} \{ ~ ^ \\} +{artist: & $ % # _ \} \{ ~ ^ \\} +{album: & $ % # _ \} \{ ~ ^ \\} +{url: & $ % # _ \} \{ ~ ^ \\} -& % $ \# _ }\ \{ ~ ^ \\ +& $ % \# _ \} \{ ~ ^ \\ -{soc} - & % $ \# _ }\ \{ ~ ^ \\ -{eoc} +{start_of_chorus} +& $ % \# _ \} \{ ~ ^ \\ +{end_of_chorus} From 446181d818398e0d233272822ae1ec2a87ee7c18 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Apr 2016 09:49:10 +0200 Subject: [PATCH 15/45] todo --- test/test_song/special.csg | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_song/special.csg b/test/test_song/special.csg index c26ff044..ea9460d8 100644 --- a/test/test_song/special.csg +++ b/test/test_song/special.csg @@ -2,6 +2,7 @@ {title: & $ % # _ \} \{ ~ ^ \\} {artist: & $ % # _ \} \{ ~ ^ \\} {album: & $ % # _ \} \{ ~ ^ \\} +{url: & $ % # _ \} \{ ~ ^ \\} & $ % \# _ \} \{ ~ ^ \\ From ef58fb63e7bff8a7e5cb70745c4fc6b737698664 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Apr 2016 12:27:04 +0200 Subject: [PATCH 16/45] [WIP] Url rendering works --- patacrep/data/templates/songs/chordpro/chordpro/song_header | 4 ++++ patacrep/data/templates/songs/chordpro/latex/song | 3 +++ test/test_song/special.csg | 2 +- test/test_song/special.csg.source | 2 +- test/test_song/special.tsg | 1 + 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/patacrep/data/templates/songs/chordpro/chordpro/song_header b/patacrep/data/templates/songs/chordpro/chordpro/song_header index fe9feb48..e73da259 100644 --- a/patacrep/data/templates/songs/chordpro/chordpro/song_header +++ b/patacrep/data/templates/songs/chordpro/chordpro/song_header @@ -33,6 +33,10 @@ {key: (( key.keyword )): (( key.argument|escape_specials('{}\\') ))} (* endfor *) +(*- if 'url' in metadata -*) + {url: (( metadata.url ))} +(* endif -*) + (*- for chord in metadata['define'] *) ((- render(chord) )) (* endfor *) diff --git a/patacrep/data/templates/songs/chordpro/latex/song b/patacrep/data/templates/songs/chordpro/latex/song index d2cbe830..2830fc34 100644 --- a/patacrep/data/templates/songs/chordpro/latex/song +++ b/patacrep/data/templates/songs/chordpro/latex/song @@ -27,6 +27,9 @@ (( key ))={(( metadata[key]|escape_specials('{}&#_^%~$\\') ))}, (* endif *) (* endfor *) + (* if 'url' in metadata *) + url={(( metadata.url|escape_specials('%#') ))}, + (* endif *) (* if 'cover' in metadata *) (* block cover *) (* set cover = metadata["cover"].argument|search_image|path2posix *) diff --git a/test/test_song/special.csg b/test/test_song/special.csg index ea9460d8..59b8d817 100644 --- a/test/test_song/special.csg +++ b/test/test_song/special.csg @@ -2,7 +2,7 @@ {title: & $ % # _ \} \{ ~ ^ \\} {artist: & $ % # _ \} \{ ~ ^ \\} {album: & $ % # _ \} \{ ~ ^ \\} -{url: & $ % # _ \} \{ ~ ^ \\} +{url: http://&$%#_~^} & $ % \# _ \} \{ ~ ^ \\ diff --git a/test/test_song/special.csg.source b/test/test_song/special.csg.source index cb8d7c9d..f5874022 100644 --- a/test/test_song/special.csg.source +++ b/test/test_song/special.csg.source @@ -1,7 +1,7 @@ {title: & $ % # _ \} \{ ~ ^ \\} {artist: & $ % # _ \} \{ ~ ^ \\} {album: & $ % # _ \} \{ ~ ^ \\} -{url: & $ % # _ \} \{ ~ ^ \\} +{url: http://&$%#_~^} & $ % \# _ \} \{ ~ ^ \\ diff --git a/test/test_song/special.tsg b/test/test_song/special.tsg index aa42a9cc..a7b232bb 100644 --- a/test/test_song/special.tsg +++ b/test/test_song/special.tsg @@ -4,6 +4,7 @@ by={ \& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} }, album={\& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}}, + url={http://&$\%\#_~^}, ] From 9489a334d9d8d2bd6067b96a0778458a6539d6b2 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Apr 2016 12:28:35 +0200 Subject: [PATCH 17/45] [test] Rename `test_songbook` to `test_book` To ease tab completion when changing directory (since `test_song` has the same prefix). --- test/{test_songbook => test_book}/.gitignore | 0 test/{test_songbook => test_book}/__init__.py | 0 .../content.tex.control | 0 test/{test_songbook => test_book}/content.yaml | 0 .../content_datadir/content/foo.tex | 0 .../content_datadir/content/inter.isg | 0 .../content_datadir/content/song.csg | 0 .../content_datadir/content/song.tsg | 0 .../content_datadir/songs/include.sbc | 0 .../content_datadir/songs/inter.isg | 0 .../content_datadir/songs/song.csg | 0 .../content_datadir/songs/song.tsg | 0 .../datadir.tex.control | 0 test/{test_songbook => test_book}/datadir.yaml | 0 .../datadir_datadir/img/datadir.png | Bin .../datadir_datadir/scores/datadir.ly | 0 .../datadir_datadir/songs/datadir.csg | 0 .../datadir_datadir/songs/datadir.tsg | 0 .../datadir_datadir/songs/datadir2.csg | 0 .../datadir_datadir/songs/datadir2.sg | 0 .../datadir_datadir/songs/relative.csg | 0 .../datadir_datadir/songs/relative.ly | 0 .../datadir_datadir/songs/relative.png | Bin .../datadir_datadir/songs/relative.tsg | 0 .../datadir_datadir/songs/subdir/subdir.csg | 0 .../datadir_datadir/songs/subdir/subdir.ly | 0 .../datadir_datadir/songs/subdir/subdir.png | Bin .../datadir_datadir/songs/subdir/subdir.tsg | 0 .../datadir_datadir2/img/datadir2.png | Bin .../datadir_datadir2/scores/datadir2.ly | 0 .../lang_default.tex.control | 0 test/{test_songbook => test_book}/lang_default.yaml | 0 .../lang_en.tex.control | 0 test/{test_songbook => test_book}/lang_en.yaml | 0 .../lang_fr.tex.control | 0 test/{test_songbook => test_book}/lang_fr.yaml | 0 .../languages.tex.control | 0 test/{test_songbook => test_book}/languages.yaml | 0 .../languages_datadir/songs/language.csg | 0 .../languages_datadir/songs/language_location.csg | 0 .../languages_datadir/songs/no_language.csg | 0 .../languages_datadir/songs/wrong_language.csg | 0 .../languages_datadir/songs/wrong_location.csg | 0 .../onthefly/content.onthefly.tex.control | 0 .../onthefly/content.onthefly.yaml | 0 .../{test_songbook => test_book}/syntax.tex.control | 0 test/{test_songbook => test_book}/syntax.yaml | 0 .../syntax_datadir/songs/musicnote.csg | 0 .../test_compilation.py | 0 .../unicode.tex.control | 0 test/{test_songbook => test_book}/unicode.yaml | 0 .../unicode_datadir/songs/nonbreak.csg | 0 52 files changed, 0 insertions(+), 0 deletions(-) rename test/{test_songbook => test_book}/.gitignore (100%) rename test/{test_songbook => test_book}/__init__.py (100%) rename test/{test_songbook => test_book}/content.tex.control (100%) rename test/{test_songbook => test_book}/content.yaml (100%) rename test/{test_songbook => test_book}/content_datadir/content/foo.tex (100%) rename test/{test_songbook => test_book}/content_datadir/content/inter.isg (100%) rename test/{test_songbook => test_book}/content_datadir/content/song.csg (100%) rename test/{test_songbook => test_book}/content_datadir/content/song.tsg (100%) rename test/{test_songbook => test_book}/content_datadir/songs/include.sbc (100%) rename test/{test_songbook => test_book}/content_datadir/songs/inter.isg (100%) rename test/{test_songbook => test_book}/content_datadir/songs/song.csg (100%) rename test/{test_songbook => test_book}/content_datadir/songs/song.tsg (100%) rename test/{test_songbook => test_book}/datadir.tex.control (100%) rename test/{test_songbook => test_book}/datadir.yaml (100%) rename test/{test_songbook => test_book}/datadir_datadir/img/datadir.png (100%) rename test/{test_songbook => test_book}/datadir_datadir/scores/datadir.ly (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/datadir.csg (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/datadir.tsg (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/datadir2.csg (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/datadir2.sg (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/relative.csg (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/relative.ly (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/relative.png (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/relative.tsg (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/subdir/subdir.csg (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/subdir/subdir.ly (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/subdir/subdir.png (100%) rename test/{test_songbook => test_book}/datadir_datadir/songs/subdir/subdir.tsg (100%) rename test/{test_songbook => test_book}/datadir_datadir2/img/datadir2.png (100%) rename test/{test_songbook => test_book}/datadir_datadir2/scores/datadir2.ly (100%) rename test/{test_songbook => test_book}/lang_default.tex.control (100%) rename test/{test_songbook => test_book}/lang_default.yaml (100%) rename test/{test_songbook => test_book}/lang_en.tex.control (100%) rename test/{test_songbook => test_book}/lang_en.yaml (100%) rename test/{test_songbook => test_book}/lang_fr.tex.control (100%) rename test/{test_songbook => test_book}/lang_fr.yaml (100%) rename test/{test_songbook => test_book}/languages.tex.control (100%) rename test/{test_songbook => test_book}/languages.yaml (100%) rename test/{test_songbook => test_book}/languages_datadir/songs/language.csg (100%) rename test/{test_songbook => test_book}/languages_datadir/songs/language_location.csg (100%) rename test/{test_songbook => test_book}/languages_datadir/songs/no_language.csg (100%) rename test/{test_songbook => test_book}/languages_datadir/songs/wrong_language.csg (100%) rename test/{test_songbook => test_book}/languages_datadir/songs/wrong_location.csg (100%) rename test/{test_songbook => test_book}/onthefly/content.onthefly.tex.control (100%) rename test/{test_songbook => test_book}/onthefly/content.onthefly.yaml (100%) rename test/{test_songbook => test_book}/syntax.tex.control (100%) rename test/{test_songbook => test_book}/syntax.yaml (100%) rename test/{test_songbook => test_book}/syntax_datadir/songs/musicnote.csg (100%) rename test/{test_songbook => test_book}/test_compilation.py (100%) rename test/{test_songbook => test_book}/unicode.tex.control (100%) rename test/{test_songbook => test_book}/unicode.yaml (100%) rename test/{test_songbook => test_book}/unicode_datadir/songs/nonbreak.csg (100%) diff --git a/test/test_songbook/.gitignore b/test/test_book/.gitignore similarity index 100% rename from test/test_songbook/.gitignore rename to test/test_book/.gitignore diff --git a/test/test_songbook/__init__.py b/test/test_book/__init__.py similarity index 100% rename from test/test_songbook/__init__.py rename to test/test_book/__init__.py diff --git a/test/test_songbook/content.tex.control b/test/test_book/content.tex.control similarity index 100% rename from test/test_songbook/content.tex.control rename to test/test_book/content.tex.control diff --git a/test/test_songbook/content.yaml b/test/test_book/content.yaml similarity index 100% rename from test/test_songbook/content.yaml rename to test/test_book/content.yaml diff --git a/test/test_songbook/content_datadir/content/foo.tex b/test/test_book/content_datadir/content/foo.tex similarity index 100% rename from test/test_songbook/content_datadir/content/foo.tex rename to test/test_book/content_datadir/content/foo.tex diff --git a/test/test_songbook/content_datadir/content/inter.isg b/test/test_book/content_datadir/content/inter.isg similarity index 100% rename from test/test_songbook/content_datadir/content/inter.isg rename to test/test_book/content_datadir/content/inter.isg diff --git a/test/test_songbook/content_datadir/content/song.csg b/test/test_book/content_datadir/content/song.csg similarity index 100% rename from test/test_songbook/content_datadir/content/song.csg rename to test/test_book/content_datadir/content/song.csg diff --git a/test/test_songbook/content_datadir/content/song.tsg b/test/test_book/content_datadir/content/song.tsg similarity index 100% rename from test/test_songbook/content_datadir/content/song.tsg rename to test/test_book/content_datadir/content/song.tsg diff --git a/test/test_songbook/content_datadir/songs/include.sbc b/test/test_book/content_datadir/songs/include.sbc similarity index 100% rename from test/test_songbook/content_datadir/songs/include.sbc rename to test/test_book/content_datadir/songs/include.sbc diff --git a/test/test_songbook/content_datadir/songs/inter.isg b/test/test_book/content_datadir/songs/inter.isg similarity index 100% rename from test/test_songbook/content_datadir/songs/inter.isg rename to test/test_book/content_datadir/songs/inter.isg diff --git a/test/test_songbook/content_datadir/songs/song.csg b/test/test_book/content_datadir/songs/song.csg similarity index 100% rename from test/test_songbook/content_datadir/songs/song.csg rename to test/test_book/content_datadir/songs/song.csg diff --git a/test/test_songbook/content_datadir/songs/song.tsg b/test/test_book/content_datadir/songs/song.tsg similarity index 100% rename from test/test_songbook/content_datadir/songs/song.tsg rename to test/test_book/content_datadir/songs/song.tsg diff --git a/test/test_songbook/datadir.tex.control b/test/test_book/datadir.tex.control similarity index 100% rename from test/test_songbook/datadir.tex.control rename to test/test_book/datadir.tex.control diff --git a/test/test_songbook/datadir.yaml b/test/test_book/datadir.yaml similarity index 100% rename from test/test_songbook/datadir.yaml rename to test/test_book/datadir.yaml diff --git a/test/test_songbook/datadir_datadir/img/datadir.png b/test/test_book/datadir_datadir/img/datadir.png similarity index 100% rename from test/test_songbook/datadir_datadir/img/datadir.png rename to test/test_book/datadir_datadir/img/datadir.png diff --git a/test/test_songbook/datadir_datadir/scores/datadir.ly b/test/test_book/datadir_datadir/scores/datadir.ly similarity index 100% rename from test/test_songbook/datadir_datadir/scores/datadir.ly rename to test/test_book/datadir_datadir/scores/datadir.ly diff --git a/test/test_songbook/datadir_datadir/songs/datadir.csg b/test/test_book/datadir_datadir/songs/datadir.csg similarity index 100% rename from test/test_songbook/datadir_datadir/songs/datadir.csg rename to test/test_book/datadir_datadir/songs/datadir.csg diff --git a/test/test_songbook/datadir_datadir/songs/datadir.tsg b/test/test_book/datadir_datadir/songs/datadir.tsg similarity index 100% rename from test/test_songbook/datadir_datadir/songs/datadir.tsg rename to test/test_book/datadir_datadir/songs/datadir.tsg diff --git a/test/test_songbook/datadir_datadir/songs/datadir2.csg b/test/test_book/datadir_datadir/songs/datadir2.csg similarity index 100% rename from test/test_songbook/datadir_datadir/songs/datadir2.csg rename to test/test_book/datadir_datadir/songs/datadir2.csg diff --git a/test/test_songbook/datadir_datadir/songs/datadir2.sg b/test/test_book/datadir_datadir/songs/datadir2.sg similarity index 100% rename from test/test_songbook/datadir_datadir/songs/datadir2.sg rename to test/test_book/datadir_datadir/songs/datadir2.sg diff --git a/test/test_songbook/datadir_datadir/songs/relative.csg b/test/test_book/datadir_datadir/songs/relative.csg similarity index 100% rename from test/test_songbook/datadir_datadir/songs/relative.csg rename to test/test_book/datadir_datadir/songs/relative.csg diff --git a/test/test_songbook/datadir_datadir/songs/relative.ly b/test/test_book/datadir_datadir/songs/relative.ly similarity index 100% rename from test/test_songbook/datadir_datadir/songs/relative.ly rename to test/test_book/datadir_datadir/songs/relative.ly diff --git a/test/test_songbook/datadir_datadir/songs/relative.png b/test/test_book/datadir_datadir/songs/relative.png similarity index 100% rename from test/test_songbook/datadir_datadir/songs/relative.png rename to test/test_book/datadir_datadir/songs/relative.png diff --git a/test/test_songbook/datadir_datadir/songs/relative.tsg b/test/test_book/datadir_datadir/songs/relative.tsg similarity index 100% rename from test/test_songbook/datadir_datadir/songs/relative.tsg rename to test/test_book/datadir_datadir/songs/relative.tsg diff --git a/test/test_songbook/datadir_datadir/songs/subdir/subdir.csg b/test/test_book/datadir_datadir/songs/subdir/subdir.csg similarity index 100% rename from test/test_songbook/datadir_datadir/songs/subdir/subdir.csg rename to test/test_book/datadir_datadir/songs/subdir/subdir.csg diff --git a/test/test_songbook/datadir_datadir/songs/subdir/subdir.ly b/test/test_book/datadir_datadir/songs/subdir/subdir.ly similarity index 100% rename from test/test_songbook/datadir_datadir/songs/subdir/subdir.ly rename to test/test_book/datadir_datadir/songs/subdir/subdir.ly diff --git a/test/test_songbook/datadir_datadir/songs/subdir/subdir.png b/test/test_book/datadir_datadir/songs/subdir/subdir.png similarity index 100% rename from test/test_songbook/datadir_datadir/songs/subdir/subdir.png rename to test/test_book/datadir_datadir/songs/subdir/subdir.png diff --git a/test/test_songbook/datadir_datadir/songs/subdir/subdir.tsg b/test/test_book/datadir_datadir/songs/subdir/subdir.tsg similarity index 100% rename from test/test_songbook/datadir_datadir/songs/subdir/subdir.tsg rename to test/test_book/datadir_datadir/songs/subdir/subdir.tsg diff --git a/test/test_songbook/datadir_datadir2/img/datadir2.png b/test/test_book/datadir_datadir2/img/datadir2.png similarity index 100% rename from test/test_songbook/datadir_datadir2/img/datadir2.png rename to test/test_book/datadir_datadir2/img/datadir2.png diff --git a/test/test_songbook/datadir_datadir2/scores/datadir2.ly b/test/test_book/datadir_datadir2/scores/datadir2.ly similarity index 100% rename from test/test_songbook/datadir_datadir2/scores/datadir2.ly rename to test/test_book/datadir_datadir2/scores/datadir2.ly diff --git a/test/test_songbook/lang_default.tex.control b/test/test_book/lang_default.tex.control similarity index 100% rename from test/test_songbook/lang_default.tex.control rename to test/test_book/lang_default.tex.control diff --git a/test/test_songbook/lang_default.yaml b/test/test_book/lang_default.yaml similarity index 100% rename from test/test_songbook/lang_default.yaml rename to test/test_book/lang_default.yaml diff --git a/test/test_songbook/lang_en.tex.control b/test/test_book/lang_en.tex.control similarity index 100% rename from test/test_songbook/lang_en.tex.control rename to test/test_book/lang_en.tex.control diff --git a/test/test_songbook/lang_en.yaml b/test/test_book/lang_en.yaml similarity index 100% rename from test/test_songbook/lang_en.yaml rename to test/test_book/lang_en.yaml diff --git a/test/test_songbook/lang_fr.tex.control b/test/test_book/lang_fr.tex.control similarity index 100% rename from test/test_songbook/lang_fr.tex.control rename to test/test_book/lang_fr.tex.control diff --git a/test/test_songbook/lang_fr.yaml b/test/test_book/lang_fr.yaml similarity index 100% rename from test/test_songbook/lang_fr.yaml rename to test/test_book/lang_fr.yaml diff --git a/test/test_songbook/languages.tex.control b/test/test_book/languages.tex.control similarity index 100% rename from test/test_songbook/languages.tex.control rename to test/test_book/languages.tex.control diff --git a/test/test_songbook/languages.yaml b/test/test_book/languages.yaml similarity index 100% rename from test/test_songbook/languages.yaml rename to test/test_book/languages.yaml diff --git a/test/test_songbook/languages_datadir/songs/language.csg b/test/test_book/languages_datadir/songs/language.csg similarity index 100% rename from test/test_songbook/languages_datadir/songs/language.csg rename to test/test_book/languages_datadir/songs/language.csg diff --git a/test/test_songbook/languages_datadir/songs/language_location.csg b/test/test_book/languages_datadir/songs/language_location.csg similarity index 100% rename from test/test_songbook/languages_datadir/songs/language_location.csg rename to test/test_book/languages_datadir/songs/language_location.csg diff --git a/test/test_songbook/languages_datadir/songs/no_language.csg b/test/test_book/languages_datadir/songs/no_language.csg similarity index 100% rename from test/test_songbook/languages_datadir/songs/no_language.csg rename to test/test_book/languages_datadir/songs/no_language.csg diff --git a/test/test_songbook/languages_datadir/songs/wrong_language.csg b/test/test_book/languages_datadir/songs/wrong_language.csg similarity index 100% rename from test/test_songbook/languages_datadir/songs/wrong_language.csg rename to test/test_book/languages_datadir/songs/wrong_language.csg diff --git a/test/test_songbook/languages_datadir/songs/wrong_location.csg b/test/test_book/languages_datadir/songs/wrong_location.csg similarity index 100% rename from test/test_songbook/languages_datadir/songs/wrong_location.csg rename to test/test_book/languages_datadir/songs/wrong_location.csg diff --git a/test/test_songbook/onthefly/content.onthefly.tex.control b/test/test_book/onthefly/content.onthefly.tex.control similarity index 100% rename from test/test_songbook/onthefly/content.onthefly.tex.control rename to test/test_book/onthefly/content.onthefly.tex.control diff --git a/test/test_songbook/onthefly/content.onthefly.yaml b/test/test_book/onthefly/content.onthefly.yaml similarity index 100% rename from test/test_songbook/onthefly/content.onthefly.yaml rename to test/test_book/onthefly/content.onthefly.yaml diff --git a/test/test_songbook/syntax.tex.control b/test/test_book/syntax.tex.control similarity index 100% rename from test/test_songbook/syntax.tex.control rename to test/test_book/syntax.tex.control diff --git a/test/test_songbook/syntax.yaml b/test/test_book/syntax.yaml similarity index 100% rename from test/test_songbook/syntax.yaml rename to test/test_book/syntax.yaml diff --git a/test/test_songbook/syntax_datadir/songs/musicnote.csg b/test/test_book/syntax_datadir/songs/musicnote.csg similarity index 100% rename from test/test_songbook/syntax_datadir/songs/musicnote.csg rename to test/test_book/syntax_datadir/songs/musicnote.csg diff --git a/test/test_songbook/test_compilation.py b/test/test_book/test_compilation.py similarity index 100% rename from test/test_songbook/test_compilation.py rename to test/test_book/test_compilation.py diff --git a/test/test_songbook/unicode.tex.control b/test/test_book/unicode.tex.control similarity index 100% rename from test/test_songbook/unicode.tex.control rename to test/test_book/unicode.tex.control diff --git a/test/test_songbook/unicode.yaml b/test/test_book/unicode.yaml similarity index 100% rename from test/test_songbook/unicode.yaml rename to test/test_book/unicode.yaml diff --git a/test/test_songbook/unicode_datadir/songs/nonbreak.csg b/test/test_book/unicode_datadir/songs/nonbreak.csg similarity index 100% rename from test/test_songbook/unicode_datadir/songs/nonbreak.csg rename to test/test_book/unicode_datadir/songs/nonbreak.csg From cfb739d2bbf4500e437cb8a473af97bb052c0241 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Apr 2016 12:49:55 +0200 Subject: [PATCH 18/45] Move missing image from patadata --- patacrep/data/img/internet.png | Bin 0 -> 1690 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 patacrep/data/img/internet.png diff --git a/patacrep/data/img/internet.png b/patacrep/data/img/internet.png new file mode 100644 index 0000000000000000000000000000000000000000..43299f171a2a6e92b9580c6f2f6eb86394022faa GIT binary patch literal 1690 zcmV;L24(q)P)eiku)l}3_WJhP`h-%7=hfk3$2MEK_0?F0{jpSE3Zt+mj3N~U z;mwL)y|h-T=9NxVA}RmYRNv6NzkjclPNylC%Xps0mMvR( zvA2i2V`Fr6b}=$C%-yju{{H?4{wJRfj-%q^*RNf>@mzs#9e(BKxm@c=K0={qv*PUQZaEH^UizksXzYtY>47#Hwst(@RYzS zN007LCX$y2`uCcfnwn5bF+V?tVHlXE#kRI>?ArAL<<&B|Yzu~AVi-D7O2RNe2*C#* ze#md${9T}8Ik4_TD5dD@>oeOrI)*#ix3_KI)~d-!l1wJCY#T$@>FDTWXV*@IP;8v2 zuIrelNu{zz6h$bd_~-cx>Q`^PIjYO3w^%HO8i1Ls`K4uAxu(VjO)16h-Mf)eGC6Ud z9Xr}-X~|J2T;<%`=NK6oX6)V==o%r$>`^~0?M$+jz9LHto&JY4Pc<>;JM1t}0apG7pJ3GUww~B4rw6(R--rml> zeSHK$@W_{9XlRHZpZIAgHL=wYk^{DF2g!tMJ}9qHtyZvY2jBNeC6lynZKbufmAzls z3qYw<;`V2^$zyCHN6$8l)g+Dc<%6YcHo)YaCJzxpv99i2pxzaN@i&ebG&~-e|BM1UyED1uNjvYHtNsg$w7= zG>y^EM>zY|UrD$wv5NO->*nJ)CJaNOFd~X1|GIqniAb*Bd?WGW&m;r`2L_0wn5J+X_`h$u7%-|VG6}-OwTM< zK%5@T=VuK7BaTijE|rcqHq`HEZq8~C9;^_CA+@!2luAoakgdBELLh{O5OD78b5yET zJkMicX(bM$Xu^o2Qve!3u~-bFFgSMWvpdn!Qi;aKCOSI1*x$dOTrNjlZ5^3(hUQJp z+@F{rilWEv=H}+PGdxUPZ5@NRZn3bm9HHXl>)Y*#g|nxB;3o*qG&N+5)-5@$zP_GR zBE?#@LJ$OmVL%v!9654?{=R-5l*^nw`xhL?Wqfiv&R;7=&s{h|2pe$QJ3ISo(wRS5 zrkQKWHaIn@6t->Sc^* zp#e$21rnBJ)okzTKH<2|4@|=dlL^;y97{JJ<=+nis?|Wou?j*d&6VYqx9*MH`F#)s zWnc}c0G?7R-snIB5`gmvcBZMRrLL}ipY2#LS(dX`(?lmg9IMeFsD9#CgPSWWOaCs- k&rbtBP<@0orBn>?U%}=R$B%^+O#lD@07*qoM6N<$f{L6u^8f$< literal 0 HcmV?d00001 From 46912414335776db0a9993368a4965141278dcd5 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Apr 2016 13:04:17 +0200 Subject: [PATCH 19/45] [test][WIP] More tests [CI skip] --- test/test_book/special.tex.control | 163 ++++++++++++++++++ test/test_book/special.yaml | 4 +- .../special_datadir/songs/special.csg | 2 +- 3 files changed, 166 insertions(+), 3 deletions(-) create mode 100644 test/test_book/special.tex.control diff --git a/test/test_book/special.tex.control b/test/test_book/special.tex.control new file mode 100644 index 00000000..82092969 --- /dev/null +++ b/test/test_book/special.tex.control @@ -0,0 +1,163 @@ + + + + + + +%% Automatically generated document. +%% You may edit this file but all changes will be overwritten. +%% If you want to change this document, have a look at +%% the templating system. +%% +%% Generated using Songbook + +\makeatletter +\def\input@path{ % + {@TEST_FOLDER@/special_datadir/templates/styles/} % + {@TEST_FOLDER@/templates/styles/} % + {@DATA_FOLDER@/templates/styles/} % +} +\makeatother + +\documentclass[ + ]{article} + +\usepackage[ +chorded, +pictures, +repeatchords, +importantdiagramonly, +diagrampage, +guitar, + ]{crepbook} + +\usepackage[ + a4paper % paper size + ,includeheadfoot % include header and footer into text size + ,hmarginratio=1:1 % ratio between inner and outer margin (default) + ,outer=1.8cm % outer margin (right) + ,vmarginratio=1:1 % ratio between top and bottom margin + ,bmargin=1.3cm % bottom margin + ]{geometry} + +\usepackage{lmodern} + + +\PassOptionsToPackage{english}{babel} +\usepackage[english]{babel} +\lang{english} + +\usepackage{graphicx} +\graphicspath{ % + {@TEST_FOLDER@/special_datadir/} % + {@TEST_FOLDER@/} % + {@DATA_FOLDER@/} % +} + + +\makeatletter +\@ifpackageloaded{hyperref}{}{ + \usepackage{url} + \newcommand{\phantomsection}{} + \newcommand{\hyperlink}[2]{#2} + \newcommand{\href}[2]{\expandafter\url\expandafter{#1}} +} +\makeatother + + +\usepackage{chords} + +\title{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} } +\author{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} } + +\newindex{titleidx}{special_title} +\newauthorindex{authidx}{special_auth} + +\authignoreword{unknown} +\authbyword{by} +\authsepword{and} + +\notenamesout{A}{B}{C}{D}{E}{F}{G} + + +\pagestyle{empty}\definecolor{SongNumberBgColor}{HTML}{D1E4AE} +\definecolor{NoteBgColor}{HTML}{D1E4AE} +\definecolor{IndexBgColor}{HTML}{D1E4AE} + +\renewcommand{\snumbgcolor}{SongNumberBgColor} +\renewcommand{\notebgcolor}{NoteBgColor} +\renewcommand{\idxbgcolor}{IndexBgColor} + +\definecolor{tango-green-3}{HTML}{4e9a06} +\definecolor{tango-blue-3}{HTML}{204a87} +\usepackage[ + bookmarks, + bookmarksopen, + hyperfigures=true, + colorlinks=true, + linkcolor=tango-green-3, + urlcolor=tango-blue-3 + ]{hyperref} + + +\subtitle{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}} +\mail{http://\%25\%20\%26\%24\%5C\%23_\%7E\%5E\%7B\%7D} +\web{http://\%25\%20\%26\%24\%5C\%23_\%7E\%5E\%7B\%7D} + +\picture{img/treble_a} +\picturecopyright{Dbolton \url{http://commons.wikimedia.org/wiki/User:Dbolton}} +\footer{Generated using Songbook (\url{http://www.patacrep.com})} + + +\begin{document} + +\maketitle + + +\showindex{\songindexname}{titleidx} +\showindex{\authorindexname}{authidx} + +% list of chords +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords +\fi +\setcounter{songnum}{1}% + +\phantomsection +\addcontentsline{toc}{section}{\songlistname} + +\begin{songs}{titleidx,authidx} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% songs/./special.csg + +\selectlanguage{english} + +\beginsong{\& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}}[ + by={ + \& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} }, + album={\& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}}, + url={http://&$\%\#_~^}, +] + + + + +\begin{verse} + \& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} +\end{verse} + + +\begin{chorus} + \& \$ \% \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} +\end{chorus} + +\endsong + +\end{songs} + + + + +\end{document} diff --git a/test/test_book/special.yaml b/test/test_book/special.yaml index 895b838c..005bc2c7 100644 --- a/test/test_book/special.yaml +++ b/test/test_book/special.yaml @@ -8,7 +8,7 @@ template: author: "& % $ # _ } { ~ ^ \\" patacrep.tex: subtitle: "& % $ # _ } { ~ ^ \\" - url: "& % $ # _ } { ~ ^ \\" - email: "& % $ # _ } { ~ ^ \\" + url: "http://% &$\\#_~^{}" + email: "% &$\\#_~^{}" picture: "img/treble_a" diff --git a/test/test_book/special_datadir/songs/special.csg b/test/test_book/special_datadir/songs/special.csg index cb8d7c9d..f5874022 100644 --- a/test/test_book/special_datadir/songs/special.csg +++ b/test/test_book/special_datadir/songs/special.csg @@ -1,7 +1,7 @@ {title: & $ % # _ \} \{ ~ ^ \\} {artist: & $ % # _ \} \{ ~ ^ \\} {album: & $ % # _ \} \{ ~ ^ \\} -{url: & $ % # _ \} \{ ~ ^ \\} +{url: http://&$%#_~^} & $ % \# _ \} \{ ~ ^ \\ From a831b421a97ea28f11bccbd9fe6733d6c9537716 Mon Sep 17 00:00:00 2001 From: Louis Date: Sun, 17 Apr 2016 16:23:13 +0200 Subject: [PATCH 20/45] TODO --- test/test_book/special.tex.control | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_book/special.tex.control b/test/test_book/special.tex.control index 82092969..f303e5d5 100644 --- a/test/test_book/special.tex.control +++ b/test/test_book/special.tex.control @@ -101,8 +101,8 @@ guitar, \subtitle{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}} -\mail{http://\%25\%20\%26\%24\%5C\%23_\%7E\%5E\%7B\%7D} -\web{http://\%25\%20\%26\%24\%5C\%23_\%7E\%5E\%7B\%7D} +\mail{http://\%25\%20\%26\%24\%5C\%23_\%7E\%5E\%7B\%7D} TODO Do not use encoded chars (%24, and so on). It is eventually a bad idea. Or as least as possible. +\web{http://\%25\%20\%26\%24\%5C\%23_\%7E\%5E\%7B\%7D} TODO Idem \picture{img/treble_a} \picturecopyright{Dbolton \url{http://commons.wikimedia.org/wiki/User:Dbolton}} From 173c0cafc3d07bc3bf156f82d893c3eb419a3e7d Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 19 Apr 2016 15:25:28 +0200 Subject: [PATCH 21/45] [WIP] TeX generation works; TeX compilation does not --- patacrep/data/templates/songbook/default.tex | 4 +- patacrep/data/templates/songbook/patacrep.tex | 6 +-- .../songs/chordpro/chordpro/song_header | 2 +- .../data/templates/songs/chordpro/latex/song | 2 +- patacrep/songs/chordpro/__init__.py | 31 ++++++++++- patacrep/templates.py | 52 +++++++++++++------ test/test_book/special.tex.control | 9 ++-- test/test_book/special.yaml | 4 +- 8 files changed, 79 insertions(+), 31 deletions(-) diff --git a/patacrep/data/templates/songbook/default.tex b/patacrep/data/templates/songbook/default.tex index 5eef827a..d3b6fd34 100644 --- a/patacrep/data/templates/songbook/default.tex +++ b/patacrep/data/templates/songbook/default.tex @@ -66,8 +66,8 @@ description: \usepackage{chords} -\title{(( template_var.title ))} -\author{(( template_var.author ))} +\title{(( template_var.title|escape_specials() ))} +\author{(( template_var.author|escape_specials() ))} \newindex{titleidx}{((filename))_title} \newauthorindex{authidx}{((filename))_auth} diff --git a/patacrep/data/templates/songbook/patacrep.tex b/patacrep/data/templates/songbook/patacrep.tex index 627ee080..d57f44e4 100644 --- a/patacrep/data/templates/songbook/patacrep.tex +++ b/patacrep/data/templates/songbook/patacrep.tex @@ -138,12 +138,12 @@ description: ]{hyperref} -\subtitle{(( template_var.subtitle ))} +\subtitle{(( template_var.subtitle|escape_specials ))} (* if template_var.version -*) \version{(( template_var.version ))} (* endif *) -\mail{(( template_var.email ))} -\web{(( template_var.url ))} +\mail{(( template_var.email|escape_url ))} +\web{(( template_var.url|escape_url ))} \picture{(( template_var.picture ))} \picturecopyright{(( template_var.picturecopyright ))} \footer{(( template_var.footer ))} diff --git a/patacrep/data/templates/songs/chordpro/chordpro/song_header b/patacrep/data/templates/songs/chordpro/chordpro/song_header index e73da259..bca4357e 100644 --- a/patacrep/data/templates/songs/chordpro/chordpro/song_header +++ b/patacrep/data/templates/songs/chordpro/chordpro/song_header @@ -34,7 +34,7 @@ (* endfor *) (*- if 'url' in metadata -*) - {url: (( metadata.url ))} + {url: (( metadata.url|escape_url ))} (* endif -*) (*- for chord in metadata['define'] *) diff --git a/patacrep/data/templates/songs/chordpro/latex/song b/patacrep/data/templates/songs/chordpro/latex/song index 2830fc34..08591d3a 100644 --- a/patacrep/data/templates/songs/chordpro/latex/song +++ b/patacrep/data/templates/songs/chordpro/latex/song @@ -28,7 +28,7 @@ (* endif *) (* endfor *) (* if 'url' in metadata *) - url={(( metadata.url|escape_specials('%#') ))}, + url={(( metadata.url|escape_url ))}, (* endif *) (* if 'cover' in metadata *) (* block cover *) diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index 4318cd6a..6f1ca655 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -3,6 +3,7 @@ import logging import operator import os +import urllib from jinja2 import Environment, FileSystemLoader, ChoiceLoader from jinja2 import contextfunction @@ -31,6 +32,12 @@ class ChordproSong(Song): output_language = None _translation_map = {} + _translation_map_url = None + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self._translation_map_url is None: + self._translation_map_url = self._translation_map def _parse(self): """Parse content, and return the dictionary of song data.""" @@ -52,6 +59,7 @@ class ChordproSong(Song): 'search_image': self.search_image, 'search_partition': self.search_partition, 'escape_specials': self._escape_specials, + 'escape_url': self._escape_url, }) return filters @@ -86,13 +94,20 @@ class ChordproSong(Song): context.vars['content'] = content return context.environment.get_template(content.template()).render(context) - def _escape_specials(self, content, chars): + def _escape_specials(self, content, chars=None, *, translation_map=None): + if translation_map is None: + translation_map = self._translation_map + if chars is None: + chars = translation_map.keys() return str(content).translate(str.maketrans({ key: value - for key, value in self._translation_map.items() + for key, value in translation_map.items() if key in chars })) + def _escape_url(self, content): + return self._escape_specials(content, translation_map=self._translation_map_url) + class Chordpro2HtmlSong(ChordproSong): """Render chordpro song to html code""" @@ -125,6 +140,13 @@ class Chordpro2LatexSong(ChordproSong): '%': r'\%', '_': r'\_', } + _translation_map_url = { + " ": urllib.parse.quote(" "), + "{": urllib.parse.quote("{"), + "}": urllib.parse.quote("}"), + '%': r'\%', + '#': r'\#', + } def search_file(self, filename, extensions=None, *, datadirs=None): _datadir, filename, _extension = self.search_datadir_file( @@ -191,6 +213,11 @@ class Chordpro2ChordproSong(ChordproSong): '\\': '\\\\', '#': r'\#', } + _translation_map_url = { + '{': r'\{', + '}': r'\}', + '\\': '\\\\', + } def search_file(self, filename, extensions=None, *, datadirs=None): # pylint: disable=unused-variable diff --git a/patacrep/templates.py b/patacrep/templates.py index c18ef454..c68f78cc 100644 --- a/patacrep/templates.py +++ b/patacrep/templates.py @@ -2,6 +2,7 @@ import logging import re +import urllib import yaml @@ -16,15 +17,6 @@ import patacrep.encoding LOGGER = logging.getLogger(__name__) -_LATEX_SUBS = ( - (re.compile(r'\\'), r'\\textbackslash'), - (re.compile(r'([{}_#%&$])'), r'\\\1'), - (re.compile(r'~'), r'\~{}'), - (re.compile(r'\^'), r'\^{}'), - (re.compile(r'"'), r"''"), - (re.compile(r'\.\.\.+'), r'\\ldots'), -) - _VARIABLE_REGEXP = re.compile( r""" \(\*-?\ *variables\ *\*\) # Match (* variables *) or (*- variables *) @@ -46,15 +38,45 @@ _VARIABLE_REGEXP = re.compile( """, re.VERBOSE|re.DOTALL) -def _escape_tex(value): +TRANSLATION_MAP = { + '{': r'\{', + '}': r'\}', + '\\': r'\textbackslash{}', + '^': r'\textasciicircum{}', + '~': r'\textasciitilde{}', + '#': r'\#', + '&': r'\&', + '$': r'\$', + '%': r'\%', + '_': r'\_', +} +TRANSLATION_MAP_URL = { + ' ': '\\' + urllib.parse.quote(" "), + '{': '\\' + urllib.parse.quote("{"), + '}': '\\' + urllib.parse.quote("}"), + '%': '\\%', + '\\': '\\\\', + } + +def _escape_specials(text, *, chars=None, translation_map=None): '''Escape TeX special characters''' - newval = value - for pattern, replacement in _LATEX_SUBS: - newval = pattern.sub(replacement, newval) - return newval + if translation_map is None: + translation_map = TRANSLATION_MAP + if chars is None: + chars = translation_map.keys() + return str(text).translate(str.maketrans({ + key: value + for key, value in translation_map.items() + if key in chars + })) + +def _escape_url(text): + """Escape TeX special characters, in url.""" + return _escape_specials(text, translation_map=TRANSLATION_MAP_URL) DEFAULT_FILTERS = { - "escape_tex": _escape_tex, + "escape_specials": _escape_specials, + "escape_url": _escape_url, "iter_datadirs": files.iter_datadirs, "path2posix": files.path2posix, } diff --git a/test/test_book/special.tex.control b/test/test_book/special.tex.control index f303e5d5..7c8e24ca 100644 --- a/test/test_book/special.tex.control +++ b/test/test_book/special.tex.control @@ -67,8 +67,8 @@ guitar, \usepackage{chords} -\title{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} } -\author{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{} } +\title{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}} +\author{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}} \newindex{titleidx}{special_title} \newauthorindex{authidx}{special_auth} @@ -101,9 +101,8 @@ guitar, \subtitle{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}} -\mail{http://\%25\%20\%26\%24\%5C\%23_\%7E\%5E\%7B\%7D} TODO Do not use encoded chars (%24, and so on). It is eventually a bad idea. Or as least as possible. -\web{http://\%25\%20\%26\%24\%5C\%23_\%7E\%5E\%7B\%7D} TODO Idem - +\mail{foo@\\\%&$#_~^\%20\%7B\%7D} +\web{http://\\\%&$#_~^\%20\%7B\%7D} \picture{img/treble_a} \picturecopyright{Dbolton \url{http://commons.wikimedia.org/wiki/User:Dbolton}} \footer{Generated using Songbook (\url{http://www.patacrep.com})} diff --git a/test/test_book/special.yaml b/test/test_book/special.yaml index 005bc2c7..24731c57 100644 --- a/test/test_book/special.yaml +++ b/test/test_book/special.yaml @@ -8,7 +8,7 @@ template: author: "& % $ # _ } { ~ ^ \\" patacrep.tex: subtitle: "& % $ # _ } { ~ ^ \\" - url: "http://% &$\\#_~^{}" - email: "% &$\\#_~^{}" + url: "http://\\%&$#_~^ {}" + email: "foo@\\%&$#_~^ {}" picture: "img/treble_a" From 24515962f18aa7430f6980ccfc258d5355708d7b Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 19 Apr 2016 16:55:44 +0200 Subject: [PATCH 22/45] LaTeX compilation of URLs containing weird characters works --- patacrep/data/templates/styles/crepbook.sty | 4 ++-- patacrep/templates.py | 2 ++ test/test_book/special.tex.control | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/patacrep/data/templates/styles/crepbook.sty b/patacrep/data/templates/styles/crepbook.sty index 8d7139c0..f89bebee 100644 --- a/patacrep/data/templates/styles/crepbook.sty +++ b/patacrep/data/templates/styles/crepbook.sty @@ -79,8 +79,8 @@ % Title page \long\def\subtitle#1{\long\def\@subtitle{#1}} \def\version#1{\def\@version{#1}} -\def\web#1{\def\@web{#1}} -\def\mail#1{\def\@mail{#1}} +\def\web#1{\def\@web{\url{#1}}} +\def\mail#1{\def\@mail{\href{mailto:#1}{\nolinkurl{#1}}}} \def\email#1{\def\@email{#1}} \def\picture#1{\def\@picture{#1}} \def\picturecopyright#1{\def\@picturecopyright{#1}} diff --git a/patacrep/templates.py b/patacrep/templates.py index c68f78cc..214320eb 100644 --- a/patacrep/templates.py +++ b/patacrep/templates.py @@ -56,6 +56,8 @@ TRANSLATION_MAP_URL = { '}': '\\' + urllib.parse.quote("}"), '%': '\\%', '\\': '\\\\', + '#': '\\#', + '&': '\\&', } def _escape_specials(text, *, chars=None, translation_map=None): diff --git a/test/test_book/special.tex.control b/test/test_book/special.tex.control index 7c8e24ca..8f7d845a 100644 --- a/test/test_book/special.tex.control +++ b/test/test_book/special.tex.control @@ -101,8 +101,8 @@ guitar, \subtitle{\& \% \$ \# \_ \} \{ \textasciitilde{} \textasciicircum{} \textbackslash{}} -\mail{foo@\\\%&$#_~^\%20\%7B\%7D} -\web{http://\\\%&$#_~^\%20\%7B\%7D} +\mail{foo@\\\%\&$\#_~^\%20\%7B\%7D} +\web{http://\\\%\&$\#_~^\%20\%7B\%7D} \picture{img/treble_a} \picturecopyright{Dbolton \url{http://commons.wikimedia.org/wiki/User:Dbolton}} \footer{Generated using Songbook (\url{http://www.patacrep.com})} From 6f3440b10855ea6792beed412a4f4d642ea53537 Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 26 Apr 2016 00:08:32 +0200 Subject: [PATCH 23/45] New feature: Can now explicitely define note names Closes #117 --- patacrep/build.py | 31 ++++++++++++++++++++ patacrep/data/templates/songbook/default.tex | 6 ++-- patacrep/data/templates/songbook_model.yml | 11 ++----- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/patacrep/build.py b/patacrep/build.py index de7bb3ce..ce2ee802 100644 --- a/patacrep/build.py +++ b/patacrep/build.py @@ -29,7 +29,15 @@ GENERATED_EXTENSIONS = [ "_title.sxd", ] +class BookError(errors.SharedError): + """Global book error.""" + def __init__(self, message): + super().__init__() + self.message = message + + def __str__(self): + return self.message # pylint: disable=too-few-public-methods class Songbook: @@ -101,7 +109,11 @@ class Songbook: ) self._config['filename'] = output.name[:-4] + # Processing special options self._config['_bookoptions'] = iter_bookoptions(self._config) + self._config['chords']['_notenames'] = self._process_chord_notation( + self._config['chords']['notation'] + ) renderer.render_tex(output, self._config) @@ -111,6 +123,25 @@ class Songbook: if self.has_errors(): raise errors.SongbookError("Some songs contain errors. Stopping as requested.") + def _process_chord_notation(self, notation): + notation = notation.strip() + if notation in ['solfedge', 'alphascale']: + return notation + names = notation.split(" ") + if len(names) == 7: + return names + error = BookError( + "Option `notation` of section `chords` must be `solfedge`, " + "`alphascale` or a space separated list of exactly seven note " + "names." + ) + self._errors.append(error) + LOGGER.warning(str(error)) + if len(names) < 7: + return names + ["?"] * (7-len(names)) + else: + return names[:7] + def has_errors(self): """Return `True` iff errors have been encountered in the book. diff --git a/patacrep/data/templates/songbook/default.tex b/patacrep/data/templates/songbook/default.tex index d3b6fd34..0e62f0a5 100644 --- a/patacrep/data/templates/songbook/default.tex +++ b/patacrep/data/templates/songbook/default.tex @@ -85,10 +85,12 @@ description: \authsepword{((word))} (* endfor *) -(* if chords.notation=="alphascale" -*) +(* if chords._notenames == "alphascale" -*) \notenamesout{A}{B}{C}{D}{E}{F}{G} -(* else -*) +(* elif chords._notenames == "solfedge" -*) \notenamesout{La}{Si}{Do}{R\'e}{Mi}{Fa}{Sol} +(* else -*) + \notenamesout{(( chords._notenames[0] ))}{(( chords._notenames[1] ))}{(( chords._notenames[2] ))}{(( chords._notenames[3] ))}{(( chords._notenames[4] ))}{(( chords._notenames[5] ))}{(( chords._notenames[6] ))} (* endif *) (* endblock *) diff --git a/patacrep/data/templates/songbook_model.yml b/patacrep/data/templates/songbook_model.yml index a3d3ce1b..af8320f8 100644 --- a/patacrep/data/templates/songbook_model.yml +++ b/patacrep/data/templates/songbook_model.yml @@ -56,12 +56,7 @@ schema: - type: //str value: "ukulele" notation: - type: //any - of: - - type: //str - value: "alphascale" - - type: //str - value: "solfedge" + type: //str authors: type: //rec required: @@ -157,7 +152,7 @@ description: lilypond: "Display lilypond scores" tablatures: "Display tablatures" instrument: "Instrument for the diagrams" - notation: "Chord notation" + notation: "Chord notation. Can be `solfedge`, `alphascale`, or a space separated list of note names." authors: separators: "Separator words between artists" @@ -183,7 +178,7 @@ description: lilypond: "Inclure les partitions lilypond" tablatures: "Inclure les tablatures" instrument: "Instrument pour les diagrammes d'accords" - notation: "Notation des accords" + notation: "Notation des accords. Peut être `solfedge` (DO RE MI...), `alphascale` (A B C...), ou une liste des noms de notes séparés par des espaces, en commençant par LA." authors: separators: "Mots de séparation entre les artistes" From c1e8ac80ed3eda5e823eee70a4a4768798011916 Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 26 Apr 2016 06:30:03 +0200 Subject: [PATCH 24/45] Do not split definition of chord notation between python module and template --- patacrep/build.py | 14 +++++++++----- patacrep/data/templates/songbook/default.tex | 6 ------ patacrep/data/templates/songbook_model.yml | 4 ++-- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/patacrep/build.py b/patacrep/build.py index ce2ee802..f349c02c 100644 --- a/patacrep/build.py +++ b/patacrep/build.py @@ -111,7 +111,7 @@ class Songbook: # Processing special options self._config['_bookoptions'] = iter_bookoptions(self._config) - self._config['chords']['_notenames'] = self._process_chord_notation( + self._config['chords']['_notenames'] = self._get_chord_names( self._config['chords']['notation'] ) @@ -123,13 +123,17 @@ class Songbook: if self.has_errors(): raise errors.SongbookError("Some songs contain errors. Stopping as requested.") - def _process_chord_notation(self, notation): - notation = notation.strip() - if notation in ['solfedge', 'alphascale']: - return notation + def _get_chord_names(self, notation): + """Return a list of chord names, given the user option.""" + if notation == "alphascale": + return ["A", "B", "C", "D", "E", "F", "G"] + if notation == "solfedge": + return ["La", "Si", "Do", r"R\'e", "Mi", "Fa", "Sol"] + names = notation.split(" ") if len(names) == 7: return names + error = BookError( "Option `notation` of section `chords` must be `solfedge`, " "`alphascale` or a space separated list of exactly seven note " diff --git a/patacrep/data/templates/songbook/default.tex b/patacrep/data/templates/songbook/default.tex index 0e62f0a5..1b02b2d3 100644 --- a/patacrep/data/templates/songbook/default.tex +++ b/patacrep/data/templates/songbook/default.tex @@ -85,13 +85,7 @@ description: \authsepword{((word))} (* endfor *) -(* if chords._notenames == "alphascale" -*) - \notenamesout{A}{B}{C}{D}{E}{F}{G} -(* elif chords._notenames == "solfedge" -*) - \notenamesout{La}{Si}{Do}{R\'e}{Mi}{Fa}{Sol} -(* else -*) \notenamesout{(( chords._notenames[0] ))}{(( chords._notenames[1] ))}{(( chords._notenames[2] ))}{(( chords._notenames[3] ))}{(( chords._notenames[4] ))}{(( chords._notenames[5] ))}{(( chords._notenames[6] ))} -(* endif *) (* endblock *) (* block title *) diff --git a/patacrep/data/templates/songbook_model.yml b/patacrep/data/templates/songbook_model.yml index af8320f8..045c0876 100644 --- a/patacrep/data/templates/songbook_model.yml +++ b/patacrep/data/templates/songbook_model.yml @@ -152,7 +152,7 @@ description: lilypond: "Display lilypond scores" tablatures: "Display tablatures" instrument: "Instrument for the diagrams" - notation: "Chord notation. Can be `solfedge`, `alphascale`, or a space separated list of note names." + notation: "Space separated list of chord names, with special values `solfedge` being an alias for `La Si Do Ré Mi Fa Sol`, and `alphascale` for `A B C D E F G`." authors: separators: "Separator words between artists" @@ -178,7 +178,7 @@ description: lilypond: "Inclure les partitions lilypond" tablatures: "Inclure les tablatures" instrument: "Instrument pour les diagrammes d'accords" - notation: "Notation des accords. Peut être `solfedge` (DO RE MI...), `alphascale` (A B C...), ou une liste des noms de notes séparés par des espaces, en commençant par LA." + notation: "Liste des noms de notes, séparés par des espaces, en commençant par LA, sachant que `solfedge` est un alias pour `La Si Do Ré Mi Fa Sol`, et `alphascale` pour `A B C D E F G`." authors: separators: "Mots de séparation entre les artistes" From 51fe10d8c9290cb70aeae3431b4dc8ed06a50293 Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 26 Apr 2016 06:50:41 +0200 Subject: [PATCH 25/45] Fix indentation --- patacrep/data/templates/songbook/default.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patacrep/data/templates/songbook/default.tex b/patacrep/data/templates/songbook/default.tex index 1b02b2d3..b16d0cba 100644 --- a/patacrep/data/templates/songbook/default.tex +++ b/patacrep/data/templates/songbook/default.tex @@ -85,7 +85,7 @@ description: \authsepword{((word))} (* endfor *) - \notenamesout{(( chords._notenames[0] ))}{(( chords._notenames[1] ))}{(( chords._notenames[2] ))}{(( chords._notenames[3] ))}{(( chords._notenames[4] ))}{(( chords._notenames[5] ))}{(( chords._notenames[6] ))} +\notenamesout{(( chords._notenames[0] ))}{(( chords._notenames[1] ))}{(( chords._notenames[2] ))}{(( chords._notenames[3] ))}{(( chords._notenames[4] ))}{(( chords._notenames[5] ))}{(( chords._notenames[6] ))} (* endblock *) (* block title *) From f8e99316701f9f042876869dabaaa8a99f4d39dc Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 26 Apr 2016 07:56:38 +0200 Subject: [PATCH 26/45] Chord names must be given as an array (instead of a space separated list) --- patacrep/build.py | 27 +--------------------- patacrep/data/templates/songbook_model.yml | 16 ++++++++++--- 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/patacrep/build.py b/patacrep/build.py index f349c02c..cd11a1ee 100644 --- a/patacrep/build.py +++ b/patacrep/build.py @@ -29,16 +29,6 @@ GENERATED_EXTENSIONS = [ "_title.sxd", ] -class BookError(errors.SharedError): - """Global book error.""" - - def __init__(self, message): - super().__init__() - self.message = message - - def __str__(self): - return self.message - # pylint: disable=too-few-public-methods class Songbook: """Represent a songbook (.yaml) file. @@ -129,22 +119,7 @@ class Songbook: return ["A", "B", "C", "D", "E", "F", "G"] if notation == "solfedge": return ["La", "Si", "Do", r"R\'e", "Mi", "Fa", "Sol"] - - names = notation.split(" ") - if len(names) == 7: - return names - - error = BookError( - "Option `notation` of section `chords` must be `solfedge`, " - "`alphascale` or a space separated list of exactly seven note " - "names." - ) - self._errors.append(error) - LOGGER.warning(str(error)) - if len(names) < 7: - return names + ["?"] * (7-len(names)) - else: - return names[:7] + return notation def has_errors(self): """Return `True` iff errors have been encountered in the book. diff --git a/patacrep/data/templates/songbook_model.yml b/patacrep/data/templates/songbook_model.yml index 045c0876..2fa193d7 100644 --- a/patacrep/data/templates/songbook_model.yml +++ b/patacrep/data/templates/songbook_model.yml @@ -56,7 +56,17 @@ schema: - type: //str value: "ukulele" notation: - type: //str + type: //any + of: + - type: //str + value: "alphascale" + - type: //str + value: "solfedge" + - type: //arr + contents: //str + length: + min: 7 + max: 7 authors: type: //rec required: @@ -152,7 +162,7 @@ description: lilypond: "Display lilypond scores" tablatures: "Display tablatures" instrument: "Instrument for the diagrams" - notation: "Space separated list of chord names, with special values `solfedge` being an alias for `La Si Do Ré Mi Fa Sol`, and `alphascale` for `A B C D E F G`." + notation: "List of chord names, with special values `solfedge` being an alias for `La Si Do Ré Mi Fa Sol`, and `alphascale` for `A B C D E F G`." authors: separators: "Separator words between artists" @@ -178,7 +188,7 @@ description: lilypond: "Inclure les partitions lilypond" tablatures: "Inclure les tablatures" instrument: "Instrument pour les diagrammes d'accords" - notation: "Liste des noms de notes, séparés par des espaces, en commençant par LA, sachant que `solfedge` est un alias pour `La Si Do Ré Mi Fa Sol`, et `alphascale` pour `A B C D E F G`." + notation: "Liste des noms de notes, en commençant par LA, sachant que `solfedge` est un alias pour `La Si Do Ré Mi Fa Sol`, et `alphascale` pour `A B C D E F G`." authors: separators: "Mots de séparation entre les artistes" From 665f9fa4b925d65754bcb43d4e7febadec7a2a2f Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 26 Apr 2016 08:45:17 +0200 Subject: [PATCH 27/45] Turn method into static method --- patacrep/build.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/patacrep/build.py b/patacrep/build.py index cd11a1ee..3998244d 100644 --- a/patacrep/build.py +++ b/patacrep/build.py @@ -113,7 +113,8 @@ class Songbook: if self.has_errors(): raise errors.SongbookError("Some songs contain errors. Stopping as requested.") - def _get_chord_names(self, notation): + @staticmethod + def _get_chord_names(notation): """Return a list of chord names, given the user option.""" if notation == "alphascale": return ["A", "B", "C", "D", "E", "F", "G"] From dec5d9e973a498b8ccbac6a64b0984bab263a84b Mon Sep 17 00:00:00 2001 From: Louis Date: Tue, 26 Apr 2016 08:45:26 +0200 Subject: [PATCH 28/45] Make help more clear --- patacrep/data/templates/songbook_model.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patacrep/data/templates/songbook_model.yml b/patacrep/data/templates/songbook_model.yml index 2fa193d7..e1418e97 100644 --- a/patacrep/data/templates/songbook_model.yml +++ b/patacrep/data/templates/songbook_model.yml @@ -162,7 +162,7 @@ description: lilypond: "Display lilypond scores" tablatures: "Display tablatures" instrument: "Instrument for the diagrams" - notation: "List of chord names, with special values `solfedge` being an alias for `La Si Do Ré Mi Fa Sol`, and `alphascale` for `A B C D E F G`." + notation: "List of chord names, with special values `solfedge` being an alias for `['La', 'Si', 'Do', 'Ré', 'Mi', 'Fa', 'Sol']`, and `alphascale` for `['A', 'B', 'C', 'D', 'E', 'F', 'G']`." authors: separators: "Separator words between artists" @@ -188,7 +188,7 @@ description: lilypond: "Inclure les partitions lilypond" tablatures: "Inclure les tablatures" instrument: "Instrument pour les diagrammes d'accords" - notation: "Liste des noms de notes, en commençant par LA, sachant que `solfedge` est un alias pour `La Si Do Ré Mi Fa Sol`, et `alphascale` pour `A B C D E F G`." + notation: "Liste des noms de notes, en commençant par LA, sachant que `solfedge` est un alias pour `['La', 'Si', 'Do', 'Ré', 'Mi', 'Fa', 'Sol']`, et `alphascale` pour `['A', 'B', 'C', 'D', 'E', 'F', 'G']`." authors: separators: "Mots de séparation entre les artistes" From 8cfe6becf8b6af26cdad524f776c2e2930053c24 Mon Sep 17 00:00:00 2001 From: Louis Date: Wed, 4 May 2016 17:15:18 +0200 Subject: [PATCH 29/45] [WIP] Image size: write tests --- .../songs/chordpro/latex/content_image | 2 +- patacrep/data/templates/styles/patacrep.sty | 1 + patacrep/songs/chordpro/ast.py | 20 +++++++++ patacrep/songs/chordpro/syntax.py | 39 +++++++++++++++++- test/test_book/syntax.tex.control | 6 ++- test/test_book/syntax_datadir/img/dices.png | Bin 0 -> 182680 bytes .../syntax_datadir/img/image with spaces.png | Bin 0 -> 182680 bytes .../test_book/syntax_datadir/songs/images.csg | 24 +++++++++++ test/test_song/image.csg | 22 ++++++++++ test/test_song/image.csg.source | 18 ++++++++ test/test_song/image.tsg | 1 + 11 files changed, 130 insertions(+), 3 deletions(-) create mode 100644 test/test_book/syntax_datadir/img/dices.png create mode 100644 test/test_book/syntax_datadir/img/image with spaces.png create mode 100644 test/test_book/syntax_datadir/songs/images.csg create mode 100644 test/test_song/image.csg create mode 100644 test/test_song/image.csg.source create mode 100644 test/test_song/image.tsg diff --git a/patacrep/data/templates/songs/chordpro/latex/content_image b/patacrep/data/templates/songs/chordpro/latex/content_image index a567730d..e2007ad2 100644 --- a/patacrep/data/templates/songs/chordpro/latex/content_image +++ b/patacrep/data/templates/songs/chordpro/latex/content_image @@ -1,5 +1,5 @@ (* block image *) -(* set image = content.argument|search_image|path2posix *) +(* set image = content.filename|search_image|path2posix *) (* if image *) \image{(( image ))} (*- endif *) diff --git a/patacrep/data/templates/styles/patacrep.sty b/patacrep/data/templates/styles/patacrep.sty index 8b88af75..4fb4b075 100644 --- a/patacrep/data/templates/styles/patacrep.sty +++ b/patacrep/data/templates/styles/patacrep.sty @@ -7,6 +7,7 @@ \ProvidesPackage{patacrep}[2014/06/17 Patacrep Package, version 1] \RequirePackage{graphicx,xcolor} % +\RequirePackage[space]{grffile} \RequirePackage{epstopdf} % \RequirePackage{fancybox} \RequirePackage{xstring} diff --git a/patacrep/songs/chordpro/ast.py b/patacrep/songs/chordpro/ast.py index 37dbae28..6b577870 100644 --- a/patacrep/songs/chordpro/ast.py +++ b/patacrep/songs/chordpro/ast.py @@ -405,6 +405,26 @@ class Define(Directive): def __str__(self): return None +class Image(Directive): + """An image + + .. attribute:: filename + The filename of the image. + .. attribute:: size + A tuple of ``(width, height)`` of the image. Both can be ``None``. + """ + + def __init__(self, filename, size=None): + self.filename = filename + if size is None: + self.size = (None, None) + else: + self.size = size + super().__init__("image", None) + + def __str__(self): + raise NotImplementedError("TODO4") + class Tab(AST): """Tablature""" diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index 9a7b9feb..08485962 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -2,6 +2,7 @@ import logging import re +import shlex import ply.yacc as yacc @@ -171,7 +172,43 @@ class ChordproParser(Parser): symbols[0] = ast.Error() return self._directives.append(define) - + elif keyword == "image": + splitted = shlex.split(argument) + if len(splitted) == 1: + symbols[0] = ast.Image(splitted[0]) + elif len(splitted) == 2: + match = re.compile( + r""" + ^ + size= + ((?P\d*\.\d+|\d+)(?P%|cm|em|pt))? + x + ((?P\d*\.\d+|\d+)(?P%|cm|em|pt))? + $ + """, + re.VERBOSE + ).match(splitted[1]) + if match is None: + self.error( + line=symbols.lexer.lineno, + message="TODO1", + ) + symbols[0] = ast.Error() + else: + groupdict = match.groupdict() + symbols[0] = ast.Image( + splitted[0], + ( + (groupdict['widthvalue'], groupdict['widthunit']), + (groupdict['heightvalue'], groupdict['heightunit']), + ), + ) + else: + self.error( + line=symbols.lexer.lineno, + message="TODO3", + ) + symbols[0] = ast.Error() else: directive = ast.Directive(keyword, argument) if directive.inline: diff --git a/test/test_book/syntax.tex.control b/test/test_book/syntax.tex.control index af7acb06..f4a8a46f 100644 --- a/test/test_book/syntax.tex.control +++ b/test/test_book/syntax.tex.control @@ -112,9 +112,13 @@ guitar, \endsong +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% songs/./musicnote.csg +TODO Test image sizes + \end{songs} -\end{document} \ No newline at end of file +\end{document} diff --git a/test/test_book/syntax_datadir/img/dices.png b/test/test_book/syntax_datadir/img/dices.png new file mode 100644 index 0000000000000000000000000000000000000000..f088bf46d68ffecb2e51abf22d09bad9e124221f GIT binary patch literal 182680 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 T+` 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≪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 literal 0 HcmV?d00001 diff --git a/test/test_book/syntax_datadir/img/image with spaces.png b/test/test_book/syntax_datadir/img/image with spaces.png new file mode 100644 index 0000000000000000000000000000000000000000..f088bf46d68ffecb2e51abf22d09bad9e124221f GIT binary patch literal 182680 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 T+` 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≪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 literal 0 HcmV?d00001 diff --git a/test/test_book/syntax_datadir/songs/images.csg b/test/test_book/syntax_datadir/songs/images.csg new file mode 100644 index 00000000..1c220bd6 --- /dev/null +++ b/test/test_book/syntax_datadir/songs/images.csg @@ -0,0 +1,24 @@ +{title : Test of image sizes} + +{image: dices.png} +{image: "image with spaces.png"} + +{image: dices.png size=20%x} +{image: "image with spaces.png" size=x20%} +{image: dices.png size=20%x10%} + +{image: dices.png size=20%x} +{image: "image with spaces.png" size=x20%} +{image: dices.png size=20%x10%} + +{image: dices.png size=2cmx} +{image: "image with spaces.png" size=x2cm} +{image: dices.png size=2cmx1cm} + +{image: dices.png size=2emx} +{image: "image with spaces.png" size=x2em} +{image: dices.png size=2emx1em} + +{image: dices.png size=50ptx} +{image: "image with spaces.png" size=x50pt} +{image: dices.png size=50ptx100pt} diff --git a/test/test_song/image.csg b/test/test_song/image.csg new file mode 100644 index 00000000..3467a163 --- /dev/null +++ b/test/test_song/image.csg @@ -0,0 +1,22 @@ +{image: dices.png} +{image: "image with spaces.png"} + +{image: dices.png size=20%x} +{image: "image with spaces.png" size=x20%} +{image: dices.png size=20%x10%} + +{image: dices.png size=20%x} +{image: "image with spaces.png" size=x20%} +{image: dices.png size=20%x10%} + +{image: dices.png size=2cmx} +{image: "image with spaces.png" size=x2cm} +{image: dices.png size=2cmx1cm} + +{image: dices.png size=2emx} +{image: "image with spaces.png" size=x2em} +{image: dices.png size=2emx1em} + +{image: dices.png size=50ptx} +{image: "image with spaces.png" size=x50pt} +{image: dices.png size=50ptx100pt} diff --git a/test/test_song/image.csg.source b/test/test_song/image.csg.source new file mode 100644 index 00000000..0c656573 --- /dev/null +++ b/test/test_song/image.csg.source @@ -0,0 +1,18 @@ +{image: dices.png} +{image: "image with spaces.png"} + +{image: dices.png size=20%x} +{image: "image with spaces.png" size=x20%} +{image: dices.png size=20%x10%} + +{image: dices.png size=2cmx} +{image: "image with spaces.png" size=x2cm} +{image: dices.png size=2cmx1cm} + +{image: dices.png size=2emx} +{image: "image with spaces.png" size=x2em} +{image: dices.png size=2emx1em} + +{image: dices.png size=50ptx} +{image: "image with spaces.png" size=x50pt} +{image: dices.png size=50ptx100pt} diff --git a/test/test_song/image.tsg b/test/test_song/image.tsg new file mode 100644 index 00000000..1333ed77 --- /dev/null +++ b/test/test_song/image.tsg @@ -0,0 +1 @@ +TODO From 7c476a7849f859630733c05ec04f365c9b0f7c2d Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 5 May 2016 09:12:25 +0200 Subject: [PATCH 30/45] More tests --- test/test_song/image.csg.source | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/test/test_song/image.csg.source b/test/test_song/image.csg.source index 0c656573..8eeee847 100644 --- a/test/test_song/image.csg.source +++ b/test/test_song/image.csg.source @@ -1,9 +1,9 @@ {image: dices.png} {image: "image with spaces.png"} -{image: dices.png size=20%x} -{image: "image with spaces.png" size=x20%} -{image: dices.png size=20%x10%} +{image: dices.png size=20%x } +{image: "image with spaces.png" size=x20%} +{image: dices.png size=20%x10%} {image: dices.png size=2cmx} {image: "image with spaces.png" size=x2cm} @@ -16,3 +16,11 @@ {image: dices.png size=50ptx} {image: "image with spaces.png" size=x50pt} {image: dices.png size=50ptx100pt} + +{image: dices.png size=3cmx10%} +{image: "image with spaces.png" size=10%x3cm} +{image: dices.png size=x} + +{image: dices.png error=foo} +{image: "image with spaces.png" dices.png} +{image: dices.png size=2exx3km} From b85a88a72bfc8abf719929cd71a15b95c626acbe Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 5 May 2016 09:28:26 +0200 Subject: [PATCH 31/45] More tests --- test/test_book/syntax_datadir/songs/images.csg | 1 + test/test_song/image.csg.source | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/test/test_book/syntax_datadir/songs/images.csg b/test/test_book/syntax_datadir/songs/images.csg index 1c220bd6..c5e5d399 100644 --- a/test/test_book/syntax_datadir/songs/images.csg +++ b/test/test_book/syntax_datadir/songs/images.csg @@ -1,3 +1,4 @@ +TODO Update with test file from test_song {title : Test of image sizes} {image: dices.png} diff --git a/test/test_song/image.csg.source b/test/test_song/image.csg.source index 8eeee847..dc5c9e32 100644 --- a/test/test_song/image.csg.source +++ b/test/test_song/image.csg.source @@ -17,6 +17,10 @@ {image: "image with spaces.png" size=x50pt} {image: dices.png size=50ptx100pt} +{image: dices.png size=2.5cmx} +{image: "image with spaces.png" size=x2.5cm} +{image: dices.png size=2.5cmx1.5cm} + {image: dices.png size=3cmx10%} {image: "image with spaces.png" size=10%x3cm} {image: dices.png size=x} From 6c29053a6190dc45d726ed5ffc85048cfb9796fb Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 5 May 2016 18:57:58 +0200 Subject: [PATCH 32/45] [WIP] Error works, and chordpro to chordpro image conversion works [CI SKIP] --- .../songs/chordpro/chordpro/content_image | 2 +- patacrep/songs/chordpro/__init__.py | 13 +++++++ patacrep/songs/chordpro/ast.py | 3 -- patacrep/songs/chordpro/syntax.py | 4 +- test/test_song/image with spaces.png | 0 test/test_song/image.csg | 38 ++++++++++++------- test/test_song/image.csg.source | 33 ++++++++-------- test/test_song/image.png | 0 8 files changed, 58 insertions(+), 35 deletions(-) create mode 100644 test/test_song/image with spaces.png create mode 100644 test/test_song/image.png diff --git a/patacrep/data/templates/songs/chordpro/chordpro/content_image b/patacrep/data/templates/songs/chordpro/chordpro/content_image index 4f9bf06c..7398eec3 100644 --- a/patacrep/data/templates/songs/chordpro/chordpro/content_image +++ b/patacrep/data/templates/songs/chordpro/chordpro/content_image @@ -1 +1 @@ -{image: (( content.argument|search_image ))} +{image: "(( content.filename|search_image ))" ((content.size|render_size))} diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index 6f1ca655..07ca17f8 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -60,6 +60,7 @@ class ChordproSong(Song): 'search_partition': self.search_partition, 'escape_specials': self._escape_specials, 'escape_url': self._escape_url, + 'render_size': self._render_size, }) return filters @@ -94,6 +95,18 @@ class ChordproSong(Song): context.vars['content'] = content return context.environment.get_template(content.template()).render(context) + @staticmethod + def _render_size(size): + if size == (None, None): + return "" + text = "size=" + if size[0] != (None, None): + text += "".join(size[0]) + text += "x" + if size[1] != (None, None): + text += "".join(size[1]) + return text + def _escape_specials(self, content, chars=None, *, translation_map=None): if translation_map is None: translation_map = self._translation_map diff --git a/patacrep/songs/chordpro/ast.py b/patacrep/songs/chordpro/ast.py index 6b577870..61298b39 100644 --- a/patacrep/songs/chordpro/ast.py +++ b/patacrep/songs/chordpro/ast.py @@ -422,9 +422,6 @@ class Image(Directive): self.size = size super().__init__("image", None) - def __str__(self): - raise NotImplementedError("TODO4") - class Tab(AST): """Tablature""" diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index 08485962..63322d52 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -191,7 +191,7 @@ class ChordproParser(Parser): if match is None: self.error( line=symbols.lexer.lineno, - message="TODO1", + message="Cannot parse image size '{}'.".format(splitted[1]), ) symbols[0] = ast.Error() else: @@ -206,7 +206,7 @@ class ChordproParser(Parser): else: self.error( line=symbols.lexer.lineno, - message="TODO3", + message="Too many arguments to 'image' directive.", ) symbols[0] = ast.Error() else: diff --git a/test/test_song/image with spaces.png b/test/test_song/image with spaces.png new file mode 100644 index 00000000..e69de29b diff --git a/test/test_song/image.csg b/test/test_song/image.csg index 3467a163..47db149a 100644 --- a/test/test_song/image.csg +++ b/test/test_song/image.csg @@ -1,22 +1,34 @@ -{image: dices.png} -{image: "image with spaces.png"} +{image: image.png } +{image: "image with spaces.png" } -{image: dices.png size=20%x} -{image: "image with spaces.png" size=x20%} -{image: dices.png size=20%x10%} -{image: dices.png size=20%x} +{image: image.png size=20%x} {image: "image with spaces.png" size=x20%} -{image: dices.png size=20%x10%} +{image: image.png size=20%x10%} + -{image: dices.png size=2cmx} +{image: image.png size=2cmx} {image: "image with spaces.png" size=x2cm} -{image: dices.png size=2cmx1cm} +{image: image.png size=2cmx1cm} + -{image: dices.png size=2emx} +{image: image.png size=2emx} {image: "image with spaces.png" size=x2em} -{image: dices.png size=2emx1em} +{image: image.png size=2emx1em} -{image: dices.png size=50ptx} + +{image: image.png size=50ptx} {image: "image with spaces.png" size=x50pt} -{image: dices.png size=50ptx100pt} +{image: image.png size=50ptx100pt} + + +{image: image.png size=2.5cmx} +{image: "image with spaces.png" size=x2.5cm} +{image: image.png size=2.5cmx1.5cm} + + +{image: image.png size=3cmx10%} +{image: "image with spaces.png" size=10%x3cm} +{image: image.png size=x} + + diff --git a/test/test_song/image.csg.source b/test/test_song/image.csg.source index dc5c9e32..6cde5921 100644 --- a/test/test_song/image.csg.source +++ b/test/test_song/image.csg.source @@ -1,30 +1,31 @@ -{image: dices.png} +{image: image.png} {image: "image with spaces.png"} -{image: dices.png size=20%x } +{image: image.png size=20%x } {image: "image with spaces.png" size=x20%} -{image: dices.png size=20%x10%} +{image: image.png size=20%x10%} -{image: dices.png size=2cmx} +{image: image.png size=2cmx} {image: "image with spaces.png" size=x2cm} -{image: dices.png size=2cmx1cm} +{image: image.png size=2cmx1cm} -{image: dices.png size=2emx} +{image: image.png size=2emx} {image: "image with spaces.png" size=x2em} -{image: dices.png size=2emx1em} +{image: image.png size=2emx1em} -{image: dices.png size=50ptx} +{image: image.png size=50ptx} {image: "image with spaces.png" size=x50pt} -{image: dices.png size=50ptx100pt} +{image: image.png size=50ptx100pt} -{image: dices.png size=2.5cmx} +{image: image.png size=2.5cmx} {image: "image with spaces.png" size=x2.5cm} -{image: dices.png size=2.5cmx1.5cm} +{image: image.png size=2.5cmx1.5cm} -{image: dices.png size=3cmx10%} +{image: image.png size=3cmx10%} {image: "image with spaces.png" size=10%x3cm} -{image: dices.png size=x} +{image: image.png size=x} -{image: dices.png error=foo} -{image: "image with spaces.png" dices.png} -{image: dices.png size=2exx3km} +{image: image.png error=foo} +{image: "image with spaces.png" image.png} +{image: "image with spaces.png" image.png image.png} +{image: image.png size=2exx3km} diff --git a/test/test_song/image.png b/test/test_song/image.png new file mode 100644 index 00000000..e69de29b From 29e0ac9f3a620bdf77453afad7cc447922d05964 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 6 May 2016 22:44:02 +0200 Subject: [PATCH 33/45] [WIP][Image size] Refactoring --- .../songs/chordpro/latex/content_image | 2 +- patacrep/songs/chordpro/__init__.py | 30 ++++-- patacrep/songs/chordpro/ast.py | 5 +- patacrep/songs/chordpro/syntax.py | 96 +++++++++++++------ test/test_song/image.csg | 36 ++++--- test/test_song/image.csg.source | 15 +-- 6 files changed, 117 insertions(+), 67 deletions(-) diff --git a/patacrep/data/templates/songs/chordpro/latex/content_image b/patacrep/data/templates/songs/chordpro/latex/content_image index e2007ad2..be75cec6 100644 --- a/patacrep/data/templates/songs/chordpro/latex/content_image +++ b/patacrep/data/templates/songs/chordpro/latex/content_image @@ -1,6 +1,6 @@ (* block image *) (* set image = content.filename|search_image|path2posix *) (* if image *) -\image{(( image ))} +\image[(( content.size|render_size ))]{(( image ))} (*- endif *) (*- endblock *) diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index 07ca17f8..97302de1 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -97,15 +97,7 @@ class ChordproSong(Song): @staticmethod def _render_size(size): - if size == (None, None): - return "" - text = "size=" - if size[0] != (None, None): - text += "".join(size[0]) - text += "x" - if size[1] != (None, None): - text += "".join(size[1]) - return text + raise NotImplementedError() def _escape_specials(self, content, chars=None, *, translation_map=None): if translation_map is None: @@ -216,6 +208,10 @@ class Chordpro2LatexSong(ChordproSong): self.errors.append(new_error) return error.babel + @staticmethod + def _render_size(size): + return "TODO" + class Chordpro2ChordproSong(ChordproSong): """Render chordpro song to chordpro code""" @@ -236,6 +232,22 @@ class Chordpro2ChordproSong(ChordproSong): # pylint: disable=unused-variable return filename + @staticmethod + def _render_size(size): + if size is None: + return "" + if size[0] == "size": + text = "size=" + if size[1] != (None, None): + text += "".join(size[1]) + text += "x" + if size[2] != (None, None): + text += "".join(size[2]) + return text + if size[0] == "scale": + return "scale=" + size[1] + + SONG_RENDERERS = { "tsg": { 'csg': Chordpro2LatexSong, diff --git a/patacrep/songs/chordpro/ast.py b/patacrep/songs/chordpro/ast.py index 61298b39..9e65a7d7 100644 --- a/patacrep/songs/chordpro/ast.py +++ b/patacrep/songs/chordpro/ast.py @@ -416,10 +416,7 @@ class Image(Directive): def __init__(self, filename, size=None): self.filename = filename - if size is None: - self.size = (None, None) - else: - self.size = size + self.size = size super().__init__("image", None) class Tab(AST): diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index 63322d52..074caacb 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -125,6 +125,57 @@ class ChordproParser(Parser): fingers=fingers, ) + def _parse_image_size(self, argument, *, lineno): + if argument is None: + return None + if argument.startswith("size="): + match = re.compile( + r""" + ^ + size= + ((?P\d*\.\d+|\d+)(?P%|cm|em|pt))? + x + ((?P\d*\.\d+|\d+)(?P%|cm|em|pt))? + $ + """, + re.VERBOSE + ).match(argument) + if match is None: + self.error( + line=lineno, + message="Cannot parse image size '{}'.".format(argument), + ) + return None + groupdict = match.groupdict() + return ( + 'size', + (groupdict['widthvalue'], groupdict['widthunit']), + (groupdict['heightvalue'], groupdict['heightunit']), + ) + elif argument.startswith("scale="): + match = re.compile( + r""" + ^ + scale= + (?P\d*\.\d+|\d+) + $ + """, + re.VERBOSE + ).match(argument) + if match is None: + self.error( + line=lineno, + message="Cannot parse image size '{}'.".format(argument), + ) + return None + return ('scale', match.groupdict()['scale']) + self.error( + line=lineno, + message="Cannot parse image size '{}'.".format(argument), + ) + return None + + def p_directive(self, symbols): """directive : LBRACE KEYWORD directive_next RBRACE | LBRACE SPACE KEYWORD directive_next RBRACE @@ -174,41 +225,24 @@ class ChordproParser(Parser): self._directives.append(define) elif keyword == "image": splitted = shlex.split(argument) - if len(splitted) == 1: - symbols[0] = ast.Image(splitted[0]) - elif len(splitted) == 2: - match = re.compile( - r""" - ^ - size= - ((?P\d*\.\d+|\d+)(?P%|cm|em|pt))? - x - ((?P\d*\.\d+|\d+)(?P%|cm|em|pt))? - $ - """, - re.VERBOSE - ).match(splitted[1]) - if match is None: - self.error( - line=symbols.lexer.lineno, - message="Cannot parse image size '{}'.".format(splitted[1]), - ) - symbols[0] = ast.Error() - else: - groupdict = match.groupdict() - symbols[0] = ast.Image( - splitted[0], - ( - (groupdict['widthvalue'], groupdict['widthunit']), - (groupdict['heightvalue'], groupdict['heightunit']), - ), - ) - else: + if len(splitted) < 1: self.error( line=symbols.lexer.lineno, - message="Too many arguments to 'image' directive.", + message="Missing filename for image directive", ) symbols[0] = ast.Error() + else: + if len(splitted) > 2: + self.error( + line=symbols.lexer.lineno, + message="Ignoring extra arguments for image directive: " + " ".join(['"{}"'.format(arg) for arg in splitted[2:]]), + ) + if len(splitted) == 1: + splitted.append(None) + symbols[0] = ast.Image( + splitted[0], + self._parse_image_size(splitted[1], lineno=symbols.lexer.lineno), + ) else: directive = ast.Directive(keyword, argument) if directive.inline: diff --git a/test/test_song/image.csg b/test/test_song/image.csg index 47db149a..83631bff 100644 --- a/test/test_song/image.csg +++ b/test/test_song/image.csg @@ -1,34 +1,40 @@ -{image: image.png } +{lang: en} + +{image: "image.png" } {image: "image with spaces.png" } -{image: image.png size=20%x} -{image: "image with spaces.png" size=x20%} -{image: image.png size=20%x10%} +{image: "image.png" scale=.2} +{image: "image with spaces.png" scale=.20} +{image: "image.png" scale=1.2} -{image: image.png size=2cmx} +{image: "image.png" size=2cmx} {image: "image with spaces.png" size=x2cm} -{image: image.png size=2cmx1cm} +{image: "image.png" size=2cmx1cm} -{image: image.png size=2emx} +{image: "image.png" size=2emx} {image: "image with spaces.png" size=x2em} -{image: image.png size=2emx1em} +{image: "image.png" size=2emx1em} -{image: image.png size=50ptx} +{image: "image.png" size=50ptx} {image: "image with spaces.png" size=x50pt} -{image: image.png size=50ptx100pt} +{image: "image.png" size=50ptx100pt} -{image: image.png size=2.5cmx} +{image: "image.png" size=2.5cmx} {image: "image with spaces.png" size=x2.5cm} -{image: image.png size=2.5cmx1.5cm} +{image: "image.png" size=2.5cmx1.5cm} + +{image: "image.png" size=3cmx10pt} +{image: "image with spaces.png" size=10ptx3cm} +{image: "image.png" size=x} -{image: image.png size=3cmx10%} -{image: "image with spaces.png" size=10%x3cm} -{image: image.png size=x} +{image: "image.png" } +{image: "image with spaces.png" } +{image: "image with spaces.png" } diff --git a/test/test_song/image.csg.source b/test/test_song/image.csg.source index 6cde5921..8cc3a351 100644 --- a/test/test_song/image.csg.source +++ b/test/test_song/image.csg.source @@ -1,9 +1,9 @@ {image: image.png} {image: "image with spaces.png"} -{image: image.png size=20%x } -{image: "image with spaces.png" size=x20%} -{image: image.png size=20%x10%} +{image: image.png scale=.2 } +{image: "image with spaces.png" scale=.20} +{image: image.png scale=1.2} {image: image.png size=2cmx} {image: "image with spaces.png" size=x2cm} @@ -21,11 +21,12 @@ {image: "image with spaces.png" size=x2.5cm} {image: image.png size=2.5cmx1.5cm} -{image: image.png size=3cmx10%} -{image: "image with spaces.png" size=10%x3cm} +{image: image.png size=3cmx10pt} +{image: "image with spaces.png" size=10ptx3cm} {image: image.png size=x} {image: image.png error=foo} -{image: "image with spaces.png" image.png} -{image: "image with spaces.png" image.png image.png} +{image: "image with spaces.png" not_a_size} +{image: "image with spaces.png" too many arguments} {image: image.png size=2exx3km} +{image: } From acd13c8e3d1201e45289aa846644576b673d6a57 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 6 May 2016 22:59:06 +0200 Subject: [PATCH 34/45] [WIP][Image size] LaTeX generation works --- patacrep/songs/chordpro/__init__.py | 12 +++++- test/test_song/image.csg | 1 + test/test_song/image.tsg | 57 ++++++++++++++++++++++++++++- test/test_song/metadata.csg | 2 +- test/test_song/metadata.tsg | 2 +- 5 files changed, 70 insertions(+), 4 deletions(-) diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index 97302de1..1766833b 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -210,7 +210,17 @@ class Chordpro2LatexSong(ChordproSong): @staticmethod def _render_size(size): - return "TODO" + if size is None: + return "" + if size[0] == "size": + sizelist = [] + if size[1] != (None, None): + sizelist.append("width=" + "".join(size[1])) + if size[2] != (None, None): + sizelist.append("height=" + "".join(size[2])) + return ", ".join(sizelist) + if size[0] == "scale": + return "scale=" + size[1] class Chordpro2ChordproSong(ChordproSong): """Render chordpro song to chordpro code""" diff --git a/test/test_song/image.csg b/test/test_song/image.csg index 83631bff..6e4cb846 100644 --- a/test/test_song/image.csg +++ b/test/test_song/image.csg @@ -37,4 +37,5 @@ {image: "image.png" } {image: "image with spaces.png" } {image: "image with spaces.png" } +{image: "image.png" } diff --git a/test/test_song/image.tsg b/test/test_song/image.tsg index 1333ed77..d735095b 100644 --- a/test/test_song/image.tsg +++ b/test/test_song/image.tsg @@ -1 +1,56 @@ -TODO +\selectlanguage{english} + +\beginsong{}[ + by={ + }, +] + + +\image[]{img/image.png} +\image[]{img/image with spaces.png} + + + +\image[scale=.2]{img/image.png} +\image[scale=.20]{img/image with spaces.png} +\image[scale=1.2]{img/image.png} + + + +\image[width=2cm]{img/image.png} +\image[height=2cm]{img/image with spaces.png} +\image[width=2cm, height=1cm]{img/image.png} + + + +\image[width=2em]{img/image.png} +\image[height=2em]{img/image with spaces.png} +\image[width=2em, height=1em]{img/image.png} + + + +\image[width=50pt]{img/image.png} +\image[height=50pt]{img/image with spaces.png} +\image[width=50pt, height=100pt]{img/image.png} + + + +\image[width=2.5cm]{img/image.png} +\image[height=2.5cm]{img/image with spaces.png} +\image[width=2.5cm, height=1.5cm]{img/image.png} + + + +\image[width=3cm, height=10pt]{img/image.png} +\image[width=10pt, height=3cm]{img/image with spaces.png} +\image[]{img/image.png} + + + +\image[]{img/image.png} +\image[]{img/image with spaces.png} +\image[]{img/image with spaces.png} +\image[]{img/image.png} + + +\endsong \ No newline at end of file diff --git a/test/test_song/metadata.csg b/test/test_song/metadata.csg index 322a591b..825b8ece 100644 --- a/test/test_song/metadata.csg +++ b/test/test_song/metadata.csg @@ -16,7 +16,7 @@ {comment: Comment} {guitar_comment: GuitarComment} {partition: metadata_lilypond} -{image: metadata_image} +{image: "metadata_image" } Foo diff --git a/test/test_song/metadata.tsg b/test/test_song/metadata.tsg index 52582de4..09c768bf 100644 --- a/test/test_song/metadata.tsg +++ b/test/test_song/metadata.tsg @@ -20,7 +20,7 @@ Subtitle5}[ \textnote{Comment} \musicnote{GuitarComment} \lilypond{scores/metadata_lilypond} -\image{img/metadata_image} +\image[]{img/metadata_image} From b20cc79b514e2bbe682374d740fdb0458d128046 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 6 May 2016 23:09:22 +0200 Subject: [PATCH 35/45] [WIP][Image size] Seems to work --- patacrep/data/templates/styles/patacrep.sty | 2 +- test/test_book/datadir.tex.control | 8 +-- test/test_book/syntax.tex.control | 66 ++++++++++++++++-- .../img/{dices.png => image.png} | Bin .../test_book/syntax_datadir/songs/images.csg | 41 ++++++----- 5 files changed, 89 insertions(+), 28 deletions(-) rename test/test_book/syntax_datadir/img/{dices.png => image.png} (100%) diff --git a/patacrep/data/templates/styles/patacrep.sty b/patacrep/data/templates/styles/patacrep.sty index 4fb4b075..4413b996 100644 --- a/patacrep/data/templates/styles/patacrep.sty +++ b/patacrep/data/templates/styles/patacrep.sty @@ -6,8 +6,8 @@ \NeedsTeXFormat{LaTeX2e}[1994/06/01] \ProvidesPackage{patacrep}[2014/06/17 Patacrep Package, version 1] -\RequirePackage{graphicx,xcolor} % \RequirePackage[space]{grffile} +\RequirePackage{graphicx,xcolor} % \RequirePackage{epstopdf} % \RequirePackage{fancybox} \RequirePackage{xstring} diff --git a/test/test_book/datadir.tex.control b/test/test_book/datadir.tex.control index 687a6096..bdc8a210 100644 --- a/test/test_book/datadir.tex.control +++ b/test/test_book/datadir.tex.control @@ -111,7 +111,7 @@ Chordpro}[ \lilypond{scores/datadir.ly} -\image{img/datadir.png} +\image[]{img/datadir.png} \endsong @@ -138,7 +138,7 @@ Chordpro}[ \lilypond{scores/datadir2.ly} -\image{img/datadir2.png} +\image[]{img/datadir2.png} \endsong @@ -165,7 +165,7 @@ Chordpro}[ \lilypond{@TEST_FOLDER@/datadir_datadir/songs/./relative.ly} -\image{@TEST_FOLDER@/datadir_datadir/songs/./relative.png} +\image[]{@TEST_FOLDER@/datadir_datadir/songs/./relative.png} \endsong @@ -192,7 +192,7 @@ Chordpro}[ \lilypond{@TEST_FOLDER@/datadir_datadir/songs/./subdir/subdir.ly} -\image{@TEST_FOLDER@/datadir_datadir/songs/./subdir/subdir.png} +\image[]{@TEST_FOLDER@/datadir_datadir/songs/./subdir/subdir.png} \endsong diff --git a/test/test_book/syntax.tex.control b/test/test_book/syntax.tex.control index f4a8a46f..543a30b5 100644 --- a/test/test_book/syntax.tex.control +++ b/test/test_book/syntax.tex.control @@ -2,8 +2,6 @@ - - %% Automatically generated document. %% You may edit this file but all changes will be overwritten. %% If you want to change this document, have a look at @@ -91,6 +89,66 @@ guitar, \addcontentsline{toc}{section}{\songlistname} \begin{songs}{titleidx,authidx} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% songs/./images.csg + +\selectlanguage{english} + +\beginsong{}[ + by={ + }, +] + + +\image[]{img/image.png} +\image[]{img/image with spaces.png} + + + +\image[scale=.2]{img/image.png} +\image[scale=.20]{img/image with spaces.png} +\image[scale=1.2]{img/image.png} + + + +\image[width=2cm]{img/image.png} +\image[height=2cm]{img/image with spaces.png} +\image[width=2cm, height=1cm]{img/image.png} + + + +\image[width=2em]{img/image.png} +\image[height=2em]{img/image with spaces.png} +\image[width=2em, height=1em]{img/image.png} + + + +\image[width=50pt]{img/image.png} +\image[height=50pt]{img/image with spaces.png} +\image[width=50pt, height=100pt]{img/image.png} + + + +\image[width=2.5cm]{img/image.png} +\image[height=2.5cm]{img/image with spaces.png} +\image[width=2.5cm, height=1.5cm]{img/image.png} + + + +\image[width=3cm, height=10pt]{img/image.png} +\image[width=10pt, height=3cm]{img/image with spaces.png} +\image[]{img/image.png} + + + +\image[]{img/image.png} +\image[]{img/image with spaces.png} +\image[]{img/image with spaces.png} +\image[]{img/image.png} + + +\endsong + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% songs/./musicnote.csg @@ -112,10 +170,6 @@ guitar, \endsong -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% songs/./musicnote.csg -TODO Test image sizes - \end{songs} diff --git a/test/test_book/syntax_datadir/img/dices.png b/test/test_book/syntax_datadir/img/image.png similarity index 100% rename from test/test_book/syntax_datadir/img/dices.png rename to test/test_book/syntax_datadir/img/image.png diff --git a/test/test_book/syntax_datadir/songs/images.csg b/test/test_book/syntax_datadir/songs/images.csg index c5e5d399..8cc3a351 100644 --- a/test/test_book/syntax_datadir/songs/images.csg +++ b/test/test_book/syntax_datadir/songs/images.csg @@ -1,25 +1,32 @@ -TODO Update with test file from test_song -{title : Test of image sizes} - -{image: dices.png} +{image: image.png} {image: "image with spaces.png"} -{image: dices.png size=20%x} -{image: "image with spaces.png" size=x20%} -{image: dices.png size=20%x10%} - -{image: dices.png size=20%x} -{image: "image with spaces.png" size=x20%} -{image: dices.png size=20%x10%} +{image: image.png scale=.2 } +{image: "image with spaces.png" scale=.20} +{image: image.png scale=1.2} -{image: dices.png size=2cmx} +{image: image.png size=2cmx} {image: "image with spaces.png" size=x2cm} -{image: dices.png size=2cmx1cm} +{image: image.png size=2cmx1cm} -{image: dices.png size=2emx} +{image: image.png size=2emx} {image: "image with spaces.png" size=x2em} -{image: dices.png size=2emx1em} +{image: image.png size=2emx1em} -{image: dices.png size=50ptx} +{image: image.png size=50ptx} {image: "image with spaces.png" size=x50pt} -{image: dices.png size=50ptx100pt} +{image: image.png size=50ptx100pt} + +{image: image.png size=2.5cmx} +{image: "image with spaces.png" size=x2.5cm} +{image: image.png size=2.5cmx1.5cm} + +{image: image.png size=3cmx10pt} +{image: "image with spaces.png" size=10ptx3cm} +{image: image.png size=x} + +{image: image.png error=foo} +{image: "image with spaces.png" not_a_size} +{image: "image with spaces.png" too many arguments} +{image: image.png size=2exx3km} +{image: } From 5fb090a124fbddd094b5802449c90c97a1192665 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 6 May 2016 23:14:22 +0200 Subject: [PATCH 36/45] pylint --- patacrep/songs/chordpro/__init__.py | 4 ++++ patacrep/songs/chordpro/syntax.py | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index 1766833b..856b361f 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -129,6 +129,10 @@ class Chordpro2HtmlSong(ChordproSong): ) return None + @staticmethod + def _render_size(size): + return "TODO" + class Chordpro2LatexSong(ChordproSong): """Render chordpro song to latex code""" diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index 074caacb..e6d9ca5e 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -180,6 +180,7 @@ class ChordproParser(Parser): """directive : LBRACE KEYWORD directive_next RBRACE | LBRACE SPACE KEYWORD directive_next RBRACE """ + # pylint: disable=too-many-branches if len(symbols) == 5: keyword = symbols[2] argument = symbols[3] @@ -235,7 +236,10 @@ class ChordproParser(Parser): if len(splitted) > 2: self.error( line=symbols.lexer.lineno, - message="Ignoring extra arguments for image directive: " + " ".join(['"{}"'.format(arg) for arg in splitted[2:]]), + message=( + "Ignoring extra arguments for image directive: " + + " ".join(['"{}"'.format(arg) for arg in splitted[2:]]) + ), ) if len(splitted) == 1: splitted.append(None) From 5f05d8c2170ad7a6325f1231130db771af98112a Mon Sep 17 00:00:00 2001 From: Louis Date: Sat, 7 May 2016 16:12:05 +0200 Subject: [PATCH 37/45] `_render_size` is no longer a method of the abstract class --- patacrep/songs/chordpro/__init__.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index 856b361f..2f53005e 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -60,7 +60,6 @@ class ChordproSong(Song): 'search_partition': self.search_partition, 'escape_specials': self._escape_specials, 'escape_url': self._escape_url, - 'render_size': self._render_size, }) return filters @@ -95,10 +94,6 @@ class ChordproSong(Song): context.vars['content'] = content return context.environment.get_template(content.template()).render(context) - @staticmethod - def _render_size(size): - raise NotImplementedError() - def _escape_specials(self, content, chars=None, *, translation_map=None): if translation_map is None: translation_map = self._translation_map @@ -129,10 +124,6 @@ class Chordpro2HtmlSong(ChordproSong): ) return None - @staticmethod - def _render_size(size): - return "TODO" - class Chordpro2LatexSong(ChordproSong): """Render chordpro song to latex code""" @@ -191,6 +182,7 @@ class Chordpro2LatexSong(ChordproSong): parent = super()._filters() parent.update({ 'lang2babel': self.lang2babel, + 'render_size': self._render_size, }) return parent @@ -242,6 +234,13 @@ class Chordpro2ChordproSong(ChordproSong): '\\': '\\\\', } + def _filters(self): + parent = super()._filters() + parent.update({ + 'render_size': self._render_size, + }) + return parent + def search_file(self, filename, extensions=None, *, datadirs=None): # pylint: disable=unused-variable return filename From 60f6060885c8e9aa54062a49ee745cb8ba8feffd Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Sun, 8 May 2016 18:59:42 +0200 Subject: [PATCH 38/45] Try to be more pythonic for size checks Slight behoavior differences between all() and != (None,None): - all() requires ALL terms to be not None (where (None, "cm") would pass != (None,None)) - all() checks for None or 0 or empty string No empty unit is supported (yet) A size of 0 does not really makes sense (and currently is passed since it is the string "0") --- patacrep/songs/chordpro/__init__.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index 2f53005e..cbb09792 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -210,10 +210,11 @@ class Chordpro2LatexSong(ChordproSong): return "" if size[0] == "size": sizelist = [] - if size[1] != (None, None): - sizelist.append("width=" + "".join(size[1])) - if size[2] != (None, None): - sizelist.append("height=" + "".join(size[2])) + width, height = size[1:3] + if all(width): + sizelist.append("width=" + "".join(width)) + if all(height): + sizelist.append("height=" + "".join(height)) return ", ".join(sizelist) if size[0] == "scale": return "scale=" + size[1] @@ -251,11 +252,12 @@ class Chordpro2ChordproSong(ChordproSong): return "" if size[0] == "size": text = "size=" - if size[1] != (None, None): - text += "".join(size[1]) + width, height = size[1:3] + if all(width): + text += "".join(width) text += "x" - if size[2] != (None, None): - text += "".join(size[2]) + if all(height): + text += "".join(height) return text if size[0] == "scale": return "scale=" + size[1] From 85008674bec48f41910096e40ee6668d3cbcbfad Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Sun, 8 May 2016 20:17:10 +0200 Subject: [PATCH 39/45] Always pass french option to babel --- patacrep/data/templates/songbook/songs.tex | 1 + test/test_book/content.tex.control | 1 + test/test_book/datadir.tex.control | 1 + test/test_book/lang_default.tex.control | 1 + test/test_book/lang_en.tex.control | 1 + test/test_book/lang_fr.tex.control | 1 + test/test_book/languages.tex.control | 1 + test/test_book/onthefly/content.onthefly.tex.control | 1 + test/test_book/special.tex.control | 1 + test/test_book/syntax.tex.control | 1 + test/test_book/unicode.tex.control | 1 + 11 files changed, 11 insertions(+) diff --git a/patacrep/data/templates/songbook/songs.tex b/patacrep/data/templates/songbook/songs.tex index 50e23ec4..ec947b60 100644 --- a/patacrep/data/templates/songbook/songs.tex +++ b/patacrep/data/templates/songbook/songs.tex @@ -30,6 +30,7 @@ (* block songbookpreambule *) (( super() )) +\PassOptionsToPackage{french}{babel} (* for lang in _langs|sort -*) \PassOptionsToPackage{(( lang | lang2babel ))}{babel} (* endfor *) diff --git a/test/test_book/content.tex.control b/test/test_book/content.tex.control index 38a79074..81b62e06 100644 --- a/test/test_book/content.tex.control +++ b/test/test_book/content.tex.control @@ -33,6 +33,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} diff --git a/test/test_book/datadir.tex.control b/test/test_book/datadir.tex.control index 687a6096..af6f4f83 100644 --- a/test/test_book/datadir.tex.control +++ b/test/test_book/datadir.tex.control @@ -35,6 +35,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} diff --git a/test/test_book/lang_default.tex.control b/test/test_book/lang_default.tex.control index 40391656..d4cc59b0 100644 --- a/test/test_book/lang_default.tex.control +++ b/test/test_book/lang_default.tex.control @@ -42,6 +42,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \usepackage[english]{babel} \lang{english} diff --git a/test/test_book/lang_en.tex.control b/test/test_book/lang_en.tex.control index 55573ddd..0abeb1a8 100644 --- a/test/test_book/lang_en.tex.control +++ b/test/test_book/lang_en.tex.control @@ -42,6 +42,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \usepackage[english]{babel} \lang{english} diff --git a/test/test_book/lang_fr.tex.control b/test/test_book/lang_fr.tex.control index aca45a48..0e78844c 100644 --- a/test/test_book/lang_fr.tex.control +++ b/test/test_book/lang_fr.tex.control @@ -42,6 +42,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \usepackage[french]{babel} \lang{french} diff --git a/test/test_book/languages.tex.control b/test/test_book/languages.tex.control index a1cfa123..fd31893e 100644 --- a/test/test_book/languages.tex.control +++ b/test/test_book/languages.tex.control @@ -34,6 +34,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \PassOptionsToPackage{spanish}{babel} \PassOptionsToPackage{french}{babel} diff --git a/test/test_book/onthefly/content.onthefly.tex.control b/test/test_book/onthefly/content.onthefly.tex.control index 3ee52e2e..b9041eb7 100644 --- a/test/test_book/onthefly/content.onthefly.tex.control +++ b/test/test_book/onthefly/content.onthefly.tex.control @@ -32,6 +32,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} diff --git a/test/test_book/special.tex.control b/test/test_book/special.tex.control index 8f7d845a..0dbd9614 100644 --- a/test/test_book/special.tex.control +++ b/test/test_book/special.tex.control @@ -43,6 +43,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} \lang{english} diff --git a/test/test_book/syntax.tex.control b/test/test_book/syntax.tex.control index af7acb06..a7518d1d 100644 --- a/test/test_book/syntax.tex.control +++ b/test/test_book/syntax.tex.control @@ -34,6 +34,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} \lang{english} diff --git a/test/test_book/unicode.tex.control b/test/test_book/unicode.tex.control index 38ce6118..5968244d 100644 --- a/test/test_book/unicode.tex.control +++ b/test/test_book/unicode.tex.control @@ -34,6 +34,7 @@ guitar, \usepackage{lmodern} +\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} \lang{english} From a5be3647b387a2cc702e7e78ad544676975e7f0e Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Sun, 8 May 2016 20:32:53 +0200 Subject: [PATCH 40/45] Add german support --- patacrep/latex/__init__.py | 4 +- test/test_book/lang_de.tex.control | 132 +++++++++++++++++++++++++++++ test/test_book/lang_de.yaml | 5 ++ 3 files changed, 138 insertions(+), 3 deletions(-) create mode 100644 test/test_book/lang_de.tex.control create mode 100644 test/test_book/lang_de.yaml diff --git a/patacrep/latex/__init__.py b/patacrep/latex/__init__.py index d2a57fc8..34954a15 100644 --- a/patacrep/latex/__init__.py +++ b/patacrep/latex/__init__.py @@ -16,7 +16,7 @@ LOGGER = logging.getLogger(__name__) DEFAULT_LANGUAGE = "en_us" BABEL_LANGUAGES = OrderedDict(( - ('de_de', 'german'), + ('de_de', 'ngerman'), # german (old), germanb (like german) ('de_at', 'austrian'), ('eo_uy', 'esperanto'), ('en_us', 'english'), # USenglish, american @@ -53,8 +53,6 @@ BABEL_LANGUAGES = OrderedDict(( # ('??_??', 'finnish'), # ('??_??', 'acadian'), # ('??_??', 'galician'), - # ('??_??', 'germanb'), - # ('??_??', 'ngerman'), # ('??_??', 'naustrian'), # ('??_??', 'greek'), # ('??_??', 'polutonikogreek'), diff --git a/test/test_book/lang_de.tex.control b/test/test_book/lang_de.tex.control new file mode 100644 index 00000000..9e2feae1 --- /dev/null +++ b/test/test_book/lang_de.tex.control @@ -0,0 +1,132 @@ + + + + + + +%% Automatically generated document. +%% You may edit this file but all changes will be overwritten. +%% If you want to change this document, have a look at +%% the templating system. +%% +%% Generated using Songbook + +\makeatletter +\def\input@path{ % + {@TEST_FOLDER@/templates/styles/} % + {@DATA_FOLDER@/templates/styles/} % +} +\makeatother + +\documentclass[ + ]{article} + +\usepackage[ +chorded, +pictures, +repeatchords, +importantdiagramonly, +diagrampage, +guitar, + ]{crepbook} + +\usepackage[ + a4paper % paper size + ,includeheadfoot % include header and footer into text size + ,hmarginratio=1:1 % ratio between inner and outer margin (default) + ,outer=1.8cm % outer margin (right) + ,vmarginratio=1:1 % ratio between top and bottom margin + ,bmargin=1.3cm % bottom margin + ]{geometry} + +\usepackage{lmodern} + + +\PassOptionsToPackage{french}{babel} +\usepackage[ngerman]{babel} +\lang{ngerman} + +\usepackage{graphicx} +\graphicspath{ % + {@TEST_FOLDER@/} % + {@DATA_FOLDER@/} % +} + + +\makeatletter +\@ifpackageloaded{hyperref}{}{ + \usepackage{url} + \newcommand{\phantomsection}{} + \newcommand{\hyperlink}[2]{#2} + \newcommand{\href}[2]{\expandafter\url\expandafter{#1}} +} +\makeatother + + +\usepackage{chords} + +\title{Guitar songbook} +\author{The Patacrep Team} + +\newindex{titleidx}{lang_de_title} +\newauthorindex{authidx}{lang_de_auth} + +\authignoreword{unknown} +\authbyword{by} +\authsepword{and} + +\notenamesout{A}{B}{C}{D}{E}{F}{G} + + +\pagestyle{empty}\definecolor{SongNumberBgColor}{HTML}{D1E4AE} +\definecolor{NoteBgColor}{HTML}{D1E4AE} +\definecolor{IndexBgColor}{HTML}{D1E4AE} + +\renewcommand{\snumbgcolor}{SongNumberBgColor} +\renewcommand{\notebgcolor}{NoteBgColor} +\renewcommand{\idxbgcolor}{IndexBgColor} + +\definecolor{tango-green-3}{HTML}{4e9a06} +\definecolor{tango-blue-3}{HTML}{204a87} +\usepackage[ + bookmarks, + bookmarksopen, + hyperfigures=true, + colorlinks=true, + linkcolor=tango-green-3, + urlcolor=tango-blue-3 + ]{hyperref} + + +\subtitle{} +\mail{crep@team-on-fire.com} +\web{http://www.patacrep.com} +\picture{img/treble_a} +\picturecopyright{Dbolton \url{http://commons.wikimedia.org/wiki/User:Dbolton}} +\footer{Generated using Songbook (\url{http://www.patacrep.com})} + + +\begin{document} + +\maketitle + + +\showindex{\songindexname}{titleidx} +\showindex{\authorindexname}{authidx} + +% list of chords +\ifdiagrampage + \phantomsection + \addcontentsline{toc}{section}{\chordlistname} + \chords +\fi +\setcounter{songnum}{1}% + +\phantomsection +\addcontentsline{toc}{section}{\songlistname} + + + + + +\end{document} diff --git a/test/test_book/lang_de.yaml b/test/test_book/lang_de.yaml new file mode 100644 index 00000000..12ba0364 --- /dev/null +++ b/test/test_book/lang_de.yaml @@ -0,0 +1,5 @@ +book: + lang: de + +content: + - sort: \ No newline at end of file From 53d0c29ab53f9de9b1355b9352efb4dd7df6fd5c Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Sun, 8 May 2016 23:09:23 +0200 Subject: [PATCH 41/45] More elegant bugfix --- patacrep/data/templates/songbook/songs.tex | 1 - patacrep/data/templates/styles/patacrep.sty | 8 ++++++-- test/test_book/content.tex.control | 1 - test/test_book/datadir.tex.control | 1 - test/test_book/lang_de.tex.control | 1 - test/test_book/lang_default.tex.control | 1 - test/test_book/lang_en.tex.control | 1 - test/test_book/lang_fr.tex.control | 1 - test/test_book/languages.tex.control | 1 - test/test_book/onthefly/content.onthefly.tex.control | 1 - test/test_book/special.tex.control | 1 - test/test_book/syntax.tex.control | 1 - test/test_book/unicode.tex.control | 1 - 13 files changed, 6 insertions(+), 14 deletions(-) diff --git a/patacrep/data/templates/songbook/songs.tex b/patacrep/data/templates/songbook/songs.tex index ec947b60..50e23ec4 100644 --- a/patacrep/data/templates/songbook/songs.tex +++ b/patacrep/data/templates/songbook/songs.tex @@ -30,7 +30,6 @@ (* block songbookpreambule *) (( super() )) -\PassOptionsToPackage{french}{babel} (* for lang in _langs|sort -*) \PassOptionsToPackage{(( lang | lang2babel ))}{babel} (* endfor *) diff --git a/patacrep/data/templates/styles/patacrep.sty b/patacrep/data/templates/styles/patacrep.sty index 8b88af75..1712cd90 100644 --- a/patacrep/data/templates/styles/patacrep.sty +++ b/patacrep/data/templates/styles/patacrep.sty @@ -400,7 +400,9 @@ \renewcommand{\textnote}[2][]{% \vspace{.1cm} \IfStrEq{}{#1}{\@textnoteold{#2}}{ - \iflanguage{#1}{\@textnoteold{#2}}{} + \IfStrEq{\mainlanguage}{#1}{ + \@textnoteold{#2} + }{} } } @@ -408,7 +410,9 @@ \renewcommand{\musicnote}[2][]{% \vspace{.1cm} \IfStrEq{}{#1}{\@musicnoteold{#2}}{ - \iflanguage{#1}{\@musicnoteold{#2}}{} + \IfStrEq{\mainlanguage}{#1}{ + \@musicnoteold{#2} + }{} } } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/test/test_book/content.tex.control b/test/test_book/content.tex.control index 81b62e06..38a79074 100644 --- a/test/test_book/content.tex.control +++ b/test/test_book/content.tex.control @@ -33,7 +33,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} diff --git a/test/test_book/datadir.tex.control b/test/test_book/datadir.tex.control index af6f4f83..687a6096 100644 --- a/test/test_book/datadir.tex.control +++ b/test/test_book/datadir.tex.control @@ -35,7 +35,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} diff --git a/test/test_book/lang_de.tex.control b/test/test_book/lang_de.tex.control index 9e2feae1..5ed6126b 100644 --- a/test/test_book/lang_de.tex.control +++ b/test/test_book/lang_de.tex.control @@ -42,7 +42,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \usepackage[ngerman]{babel} \lang{ngerman} diff --git a/test/test_book/lang_default.tex.control b/test/test_book/lang_default.tex.control index d4cc59b0..40391656 100644 --- a/test/test_book/lang_default.tex.control +++ b/test/test_book/lang_default.tex.control @@ -42,7 +42,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \usepackage[english]{babel} \lang{english} diff --git a/test/test_book/lang_en.tex.control b/test/test_book/lang_en.tex.control index 0abeb1a8..55573ddd 100644 --- a/test/test_book/lang_en.tex.control +++ b/test/test_book/lang_en.tex.control @@ -42,7 +42,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \usepackage[english]{babel} \lang{english} diff --git a/test/test_book/lang_fr.tex.control b/test/test_book/lang_fr.tex.control index 0e78844c..aca45a48 100644 --- a/test/test_book/lang_fr.tex.control +++ b/test/test_book/lang_fr.tex.control @@ -42,7 +42,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \usepackage[french]{babel} \lang{french} diff --git a/test/test_book/languages.tex.control b/test/test_book/languages.tex.control index fd31893e..a1cfa123 100644 --- a/test/test_book/languages.tex.control +++ b/test/test_book/languages.tex.control @@ -34,7 +34,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \PassOptionsToPackage{spanish}{babel} \PassOptionsToPackage{french}{babel} diff --git a/test/test_book/onthefly/content.onthefly.tex.control b/test/test_book/onthefly/content.onthefly.tex.control index b9041eb7..3ee52e2e 100644 --- a/test/test_book/onthefly/content.onthefly.tex.control +++ b/test/test_book/onthefly/content.onthefly.tex.control @@ -32,7 +32,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} diff --git a/test/test_book/special.tex.control b/test/test_book/special.tex.control index 0dbd9614..8f7d845a 100644 --- a/test/test_book/special.tex.control +++ b/test/test_book/special.tex.control @@ -43,7 +43,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} \lang{english} diff --git a/test/test_book/syntax.tex.control b/test/test_book/syntax.tex.control index a7518d1d..af7acb06 100644 --- a/test/test_book/syntax.tex.control +++ b/test/test_book/syntax.tex.control @@ -34,7 +34,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} \lang{english} diff --git a/test/test_book/unicode.tex.control b/test/test_book/unicode.tex.control index 5968244d..38ce6118 100644 --- a/test/test_book/unicode.tex.control +++ b/test/test_book/unicode.tex.control @@ -34,7 +34,6 @@ guitar, \usepackage{lmodern} -\PassOptionsToPackage{french}{babel} \PassOptionsToPackage{english}{babel} \usepackage[english]{babel} \lang{english} From f4e124333e9d197be09a574d324f904a73f79a9d Mon Sep 17 00:00:00 2001 From: Louis Date: Mon, 9 May 2016 22:12:41 +0200 Subject: [PATCH 42/45] Change syntax of image directive arguments: `{image: foo.png width=3cm height=2cm}` --- patacrep/songs/chordpro/__init__.py | 33 ++---- patacrep/songs/chordpro/ast.py | 4 +- patacrep/songs/chordpro/syntax.py | 100 ++++++++---------- test/test_book/syntax.tex.control | 7 +- .../test_book/syntax_datadir/songs/images.csg | 37 ++++--- test/test_song/image.csg | 35 +++--- test/test_song/image.csg.source | 37 ++++--- test/test_song/image.tsg | 7 +- 8 files changed, 125 insertions(+), 135 deletions(-) diff --git a/patacrep/songs/chordpro/__init__.py b/patacrep/songs/chordpro/__init__.py index cbb09792..8464131f 100644 --- a/patacrep/songs/chordpro/__init__.py +++ b/patacrep/songs/chordpro/__init__.py @@ -206,18 +206,10 @@ class Chordpro2LatexSong(ChordproSong): @staticmethod def _render_size(size): - if size is None: - return "" - if size[0] == "size": - sizelist = [] - width, height = size[1:3] - if all(width): - sizelist.append("width=" + "".join(width)) - if all(height): - sizelist.append("height=" + "".join(height)) - return ", ".join(sizelist) - if size[0] == "scale": - return "scale=" + size[1] + items = [] + for name, value, unit in size: + items.append(name + "=" + value + unit) + return ", ".join(items) class Chordpro2ChordproSong(ChordproSong): """Render chordpro song to chordpro code""" @@ -248,19 +240,10 @@ class Chordpro2ChordproSong(ChordproSong): @staticmethod def _render_size(size): - if size is None: - return "" - if size[0] == "size": - text = "size=" - width, height = size[1:3] - if all(width): - text += "".join(width) - text += "x" - if all(height): - text += "".join(height) - return text - if size[0] == "scale": - return "scale=" + size[1] + items = [] + for name, value, unit in size: + items.append(name + "=" + value + unit) + return " ".join(items) SONG_RENDERERS = { diff --git a/patacrep/songs/chordpro/ast.py b/patacrep/songs/chordpro/ast.py index 9e65a7d7..6f764e34 100644 --- a/patacrep/songs/chordpro/ast.py +++ b/patacrep/songs/chordpro/ast.py @@ -411,11 +411,13 @@ class Image(Directive): .. attribute:: filename The filename of the image. .. attribute:: size - A tuple of ``(width, height)`` of the image. Both can be ``None``. + An iterable of tuples ``(type, float, unit)``. """ def __init__(self, filename, size=None): self.filename = filename + if size is None: + size = [] self.size = size super().__init__("image", None) diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index e6d9ca5e..e300d227 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -125,56 +125,54 @@ class ChordproParser(Parser): fingers=fingers, ) - def _parse_image_size(self, argument, *, lineno): - if argument is None: - return None - if argument.startswith("size="): - match = re.compile( - r""" - ^ - size= - ((?P\d*\.\d+|\d+)(?P%|cm|em|pt))? - x - ((?P\d*\.\d+|\d+)(?P%|cm|em|pt))? - $ - """, - re.VERBOSE - ).match(argument) - if match is None: + def _iter_raw_image_size_arguments(self, arguments, *, lineno): + for item in arguments: + prefix, _, suffix = item.partition("=") + if prefix in ['width', 'height']: + match = re.compile( + r"^(?P(\d*\.\d+|\d+))(?Pcm|em|pt)$", + re.VERBOSE, + ).match(suffix) + if match is not None: + yield (prefix, match.groupdict()['value'], match.groupdict()['unit']) + continue + elif prefix in ['scale']: + match = re.compile( + r"^(?P(\d*\.\d+|\d+))$", + re.VERBOSE, + ).match(suffix) + if match is not None: + yield (prefix, match.groupdict()['value'], "") + continue + self.error( + line=lineno, + message="Image: Ignoring unparsable argument '{}'.".format(item), + ) + + def _iter_image_size_arguments(self, argument, *, lineno): + arguments = set() + for name, value, unit in self._iter_raw_image_size_arguments(argument, lineno=lineno): + if name in arguments: self.error( line=lineno, - message="Cannot parse image size '{}'.".format(argument), + message="Image: Ignoring extra {} argument.".format(name), ) - return None - groupdict = match.groupdict() - return ( - 'size', - (groupdict['widthvalue'], groupdict['widthunit']), - (groupdict['heightvalue'], groupdict['heightunit']), - ) - elif argument.startswith("scale="): - match = re.compile( - r""" - ^ - scale= - (?P\d*\.\d+|\d+) - $ - """, - re.VERBOSE - ).match(argument) - if match is None: + continue + if ( + name == "scale" and ("width" in arguments or "height" in arguments) + ) or ( + name in ["width", "height"] and "scale" in arguments + ): self.error( line=lineno, - message="Cannot parse image size '{}'.".format(argument), + message=( + "Image: Ignoring '{}' argument: Cannot mix scale and " + "width or height argument." + ).format(name), ) - return None - return ('scale', match.groupdict()['scale']) - self.error( - line=lineno, - message="Cannot parse image size '{}'.".format(argument), - ) - return None - + continue + arguments.add(name) + yield name, value, unit def p_directive(self, symbols): """directive : LBRACE KEYWORD directive_next RBRACE @@ -233,19 +231,11 @@ class ChordproParser(Parser): ) symbols[0] = ast.Error() else: - if len(splitted) > 2: - self.error( - line=symbols.lexer.lineno, - message=( - "Ignoring extra arguments for image directive: " + - " ".join(['"{}"'.format(arg) for arg in splitted[2:]]) - ), - ) - if len(splitted) == 1: - splitted.append(None) symbols[0] = ast.Image( splitted[0], - self._parse_image_size(splitted[1], lineno=symbols.lexer.lineno), + list( + self._iter_image_size_arguments(splitted[1:], lineno=symbols.lexer.lineno) + ), ) else: directive = ast.Directive(keyword, argument) diff --git a/test/test_book/syntax.tex.control b/test/test_book/syntax.tex.control index 543a30b5..719dfc2f 100644 --- a/test/test_book/syntax.tex.control +++ b/test/test_book/syntax.tex.control @@ -105,7 +105,7 @@ guitar, -\image[scale=.2]{img/image.png} +\image[scale=2]{img/image.png} \image[scale=.20]{img/image with spaces.png} \image[scale=1.2]{img/image.png} @@ -137,14 +137,17 @@ guitar, \image[width=3cm, height=10pt]{img/image.png} \image[width=10pt, height=3cm]{img/image with spaces.png} -\image[]{img/image.png} +\image[]{img/image.png} \image[]{img/image.png} \image[]{img/image with spaces.png} \image[]{img/image with spaces.png} \image[]{img/image.png} +\image[width=2cm]{img/image.png} +\image[width=2cm]{img/image.png} +\image[width=2cm]{img/image.png} \endsong diff --git a/test/test_book/syntax_datadir/songs/images.csg b/test/test_book/syntax_datadir/songs/images.csg index 8cc3a351..49d843a2 100644 --- a/test/test_book/syntax_datadir/songs/images.csg +++ b/test/test_book/syntax_datadir/songs/images.csg @@ -1,32 +1,35 @@ {image: image.png} {image: "image with spaces.png"} -{image: image.png scale=.2 } +{image: image.png scale=2 } {image: "image with spaces.png" scale=.20} {image: image.png scale=1.2} -{image: image.png size=2cmx} -{image: "image with spaces.png" size=x2cm} -{image: image.png size=2cmx1cm} +{image: image.png width=2cm} +{image: "image with spaces.png" height=2cm} +{image: image.png width=2cm height=1cm} -{image: image.png size=2emx} -{image: "image with spaces.png" size=x2em} -{image: image.png size=2emx1em} +{image: image.png width=2em} +{image: "image with spaces.png" height=2em} +{image: image.png width=2em height=1em} -{image: image.png size=50ptx} -{image: "image with spaces.png" size=x50pt} -{image: image.png size=50ptx100pt} +{image: image.png width=50pt} +{image: "image with spaces.png" height=50pt} +{image: image.png width=50pt height=100pt} -{image: image.png size=2.5cmx} -{image: "image with spaces.png" size=x2.5cm} -{image: image.png size=2.5cmx1.5cm} +{image: image.png width=2.5cm} +{image: "image with spaces.png" height=2.5cm} +{image: image.png width=2.5cm height=1.5cm} -{image: image.png size=3cmx10pt} -{image: "image with spaces.png" size=10ptx3cm} -{image: image.png size=x} +{image: image.png width=3cm height=10pt} +{image: "image with spaces.png" width=10pt height=3cm} +{image: image.png width= height=} {image: image.png error=foo} {image: "image with spaces.png" not_a_size} {image: "image with spaces.png" too many arguments} -{image: image.png size=2exx3km} +{image: image.png width=2ex height=3km} +{image: image.png width=2cm width=3cm} +{image: image.png width=2cm scale=3cm} +{image: image.png width=2cm scale=3} {image: } diff --git a/test/test_song/image.csg b/test/test_song/image.csg index 6e4cb846..9f698456 100644 --- a/test/test_song/image.csg +++ b/test/test_song/image.csg @@ -4,38 +4,41 @@ {image: "image with spaces.png" } -{image: "image.png" scale=.2} +{image: "image.png" scale=2} {image: "image with spaces.png" scale=.20} {image: "image.png" scale=1.2} -{image: "image.png" size=2cmx} -{image: "image with spaces.png" size=x2cm} -{image: "image.png" size=2cmx1cm} +{image: "image.png" width=2cm} +{image: "image with spaces.png" height=2cm} +{image: "image.png" width=2cm height=1cm} -{image: "image.png" size=2emx} -{image: "image with spaces.png" size=x2em} -{image: "image.png" size=2emx1em} +{image: "image.png" width=2em} +{image: "image with spaces.png" height=2em} +{image: "image.png" width=2em height=1em} -{image: "image.png" size=50ptx} -{image: "image with spaces.png" size=x50pt} -{image: "image.png" size=50ptx100pt} +{image: "image.png" width=50pt} +{image: "image with spaces.png" height=50pt} +{image: "image.png" width=50pt height=100pt} -{image: "image.png" size=2.5cmx} -{image: "image with spaces.png" size=x2.5cm} -{image: "image.png" size=2.5cmx1.5cm} +{image: "image.png" width=2.5cm} +{image: "image with spaces.png" height=2.5cm} +{image: "image.png" width=2.5cm height=1.5cm} -{image: "image.png" size=3cmx10pt} -{image: "image with spaces.png" size=10ptx3cm} -{image: "image.png" size=x} +{image: "image.png" width=3cm height=10pt} +{image: "image with spaces.png" width=10pt height=3cm} +{image: "image.png" } {image: "image.png" } {image: "image with spaces.png" } {image: "image with spaces.png" } {image: "image.png" } +{image: "image.png" width=2cm} +{image: "image.png" width=2cm} +{image: "image.png" width=2cm} diff --git a/test/test_song/image.csg.source b/test/test_song/image.csg.source index 8cc3a351..49d843a2 100644 --- a/test/test_song/image.csg.source +++ b/test/test_song/image.csg.source @@ -1,32 +1,35 @@ {image: image.png} {image: "image with spaces.png"} -{image: image.png scale=.2 } +{image: image.png scale=2 } {image: "image with spaces.png" scale=.20} {image: image.png scale=1.2} -{image: image.png size=2cmx} -{image: "image with spaces.png" size=x2cm} -{image: image.png size=2cmx1cm} +{image: image.png width=2cm} +{image: "image with spaces.png" height=2cm} +{image: image.png width=2cm height=1cm} -{image: image.png size=2emx} -{image: "image with spaces.png" size=x2em} -{image: image.png size=2emx1em} +{image: image.png width=2em} +{image: "image with spaces.png" height=2em} +{image: image.png width=2em height=1em} -{image: image.png size=50ptx} -{image: "image with spaces.png" size=x50pt} -{image: image.png size=50ptx100pt} +{image: image.png width=50pt} +{image: "image with spaces.png" height=50pt} +{image: image.png width=50pt height=100pt} -{image: image.png size=2.5cmx} -{image: "image with spaces.png" size=x2.5cm} -{image: image.png size=2.5cmx1.5cm} +{image: image.png width=2.5cm} +{image: "image with spaces.png" height=2.5cm} +{image: image.png width=2.5cm height=1.5cm} -{image: image.png size=3cmx10pt} -{image: "image with spaces.png" size=10ptx3cm} -{image: image.png size=x} +{image: image.png width=3cm height=10pt} +{image: "image with spaces.png" width=10pt height=3cm} +{image: image.png width= height=} {image: image.png error=foo} {image: "image with spaces.png" not_a_size} {image: "image with spaces.png" too many arguments} -{image: image.png size=2exx3km} +{image: image.png width=2ex height=3km} +{image: image.png width=2cm width=3cm} +{image: image.png width=2cm scale=3cm} +{image: image.png width=2cm scale=3} {image: } diff --git a/test/test_song/image.tsg b/test/test_song/image.tsg index d735095b..1ec6a98d 100644 --- a/test/test_song/image.tsg +++ b/test/test_song/image.tsg @@ -11,7 +11,7 @@ -\image[scale=.2]{img/image.png} +\image[scale=2]{img/image.png} \image[scale=.20]{img/image with spaces.png} \image[scale=1.2]{img/image.png} @@ -43,14 +43,17 @@ \image[width=3cm, height=10pt]{img/image.png} \image[width=10pt, height=3cm]{img/image with spaces.png} -\image[]{img/image.png} +\image[]{img/image.png} \image[]{img/image.png} \image[]{img/image with spaces.png} \image[]{img/image with spaces.png} \image[]{img/image.png} +\image[width=2cm]{img/image.png} +\image[width=2cm]{img/image.png} +\image[width=2cm]{img/image.png} \endsong \ No newline at end of file From 346f630bba0cfe80b9b4c38df6001ba9dd7e5b23 Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Mon, 9 May 2016 22:52:48 +0200 Subject: [PATCH 43/45] Improve error messages --- patacrep/songs/chordpro/syntax.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index e300d227..ca03d271 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -144,10 +144,16 @@ class ChordproParser(Parser): if match is not None: yield (prefix, match.groupdict()['value'], "") continue + else: + self.error( + line=lineno, + message="Image: Unknown argument name '{}'.".format(prefix), + ) + continue self.error( line=lineno, - message="Image: Ignoring unparsable argument '{}'.".format(item), - ) + message="Image: Unsupported {} value: '{}'.".format(prefix, suffix), + ) def _iter_image_size_arguments(self, argument, *, lineno): arguments = set() @@ -155,7 +161,7 @@ class ChordproParser(Parser): if name in arguments: self.error( line=lineno, - message="Image: Ignoring extra {} argument.".format(name), + message="Image: Ignoring repeated argument: {}.".format(name), ) continue if ( From cbe34b91b8e68fe301171891e39f09fdeaa6e34a Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Mon, 9 May 2016 22:53:04 +0200 Subject: [PATCH 44/45] Minor refactoring for error checking --- patacrep/songs/chordpro/syntax.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index ca03d271..c4dea4cc 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -157,6 +157,7 @@ class ChordproParser(Parser): def _iter_image_size_arguments(self, argument, *, lineno): arguments = set() + length_names = set(["width", "height"]) for name, value, unit in self._iter_raw_image_size_arguments(argument, lineno=lineno): if name in arguments: self.error( @@ -165,9 +166,9 @@ class ChordproParser(Parser): ) continue if ( - name == "scale" and ("width" in arguments or "height" in arguments) + name == "scale" and arguments.intersection(length_names) ) or ( - name in ["width", "height"] and "scale" in arguments + name in length_names and "scale" in arguments ): self.error( line=lineno, From 99bee51302576fad5969a85a0fa43e02c50a2e13 Mon Sep 17 00:00:00 2001 From: Oliverpool Date: Mon, 9 May 2016 23:05:10 +0200 Subject: [PATCH 45/45] Micro-optimization (just for fun) --- patacrep/songs/chordpro/syntax.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patacrep/songs/chordpro/syntax.py b/patacrep/songs/chordpro/syntax.py index c4dea4cc..a1e3f6e6 100644 --- a/patacrep/songs/chordpro/syntax.py +++ b/patacrep/songs/chordpro/syntax.py @@ -157,7 +157,7 @@ class ChordproParser(Parser): def _iter_image_size_arguments(self, argument, *, lineno): arguments = set() - length_names = set(["width", "height"]) + length_names = frozenset(["width", "height"]) for name, value, unit in self._iter_raw_image_size_arguments(argument, lineno=lineno): if name in arguments: self.error( @@ -166,7 +166,7 @@ class ChordproParser(Parser): ) continue if ( - name == "scale" and arguments.intersection(length_names) + name == "scale" and not length_names.isdisjoint(arguments) ) or ( name in length_names and "scale" in arguments ):