plint

French poetry validator
git clone https://a3nm.net/git/plint/
Log | Files | Refs | README

commit b505e9fe27b028373ef0796894cc3a21e8358b5f
parent ce65011d4f10511d96ceeba9e570eddc99d4102e
Author: Antoine Amarilli <a3nm@a3nm.net>
Date:   Tue, 13 Mar 2012 16:00:43 +0100

move html generation stuff in a subdirectory

Diffstat:
bottom.html | 3---
form.html | 52----------------------------------------------------
make_poem.pl | 52----------------------------------------------------
make_poem.sh | 6------
poem2html/bottom.html | 3+++
poem2html/form.html | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
poem2html/make_poem.pl | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
poem2html/make_poem.sh | 6++++++
poem2html/style.css | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
poem2html/top.html | 14++++++++++++++
top.html | 14--------------
11 files changed, 244 insertions(+), 127 deletions(-)

diff --git a/bottom.html b/bottom.html @@ -1,3 +0,0 @@ - </div> - </body> -</html> diff --git a/form.html b/form.html @@ -1,52 +0,0 @@ -<p> -Écrivez votre poème ici. La casse, les symboles et l'espacement sont -sans importance. Les lignes vides seront ignorées. -</p> -<p> -Écrivez ici le format suivi par votre poème. Chaque ligne du format -correspond à un vers (ie. une ligne non-vide). Une ligne peut indiquer -quatre éléments séparés par une espace : la métrique, l'identifiant de -rime, l'identifiant de genre, et le type de rime. Le premier est -obligatoire, les trois derniers sont facultatifs. -</p> -<p> -La métrique indique le nombre de syllabes du vers, et la position des -hémistiches éventuelles. Il s'agit de totaux de syllabes, séparés par -'/' pour indiquer les hémistiches. Par exemple, "6/6" est un alexandrin -classique, "12" est un alexandrin sans hémistiche. -</p> -<p> -L'identifiant de rime sert à regrouper les vers qui doivent rimer -ensemble. Les vers ayant le même identifiant doivent rimer. Pour -préciser le type de rime attendue, il est possible de terminer -l'identifiant par ':' suivie d'une liste d'entiers séparée par des '|' -indiquant les types possibles pour cette rime. Une rime est acceptable -si elle remplit l'un des critères. Le premier entier indique le nombre -de phonèmes communs nécessaires (maximum 4, défaut 1), une rime étant -acceptée pour ce critère si et seulement si le plus grand suffixe commun -de la prononciation des vers étiquetés comprend ce nombre de phonèmes, -ainsi qu'un phonème vocalique obligatoirement : ainsi, une valeur de 1, -2 ou 3 nécessite au minimum une rime pauvre, suffisante ou riche -respectivement. Le second entier indique le nombre de caractères communs -nécessaires pour une rime pour l'œil, ou -1 pour interdire (défaut -1). -Le troisième entier indique le nombre de phonèmes vocaliques nécessaires -pour une rime par assonance, qui ignore les phonèmes consonantiques -(maximum 1, défaut -1).</p> -<p> -L'identifiant de rime féminine sert à regrouper les vers qui doivent -avoir une rime de même genre. Les conventions supplémentaires sont que -deux identifiants de casse inversée (tels que "ex" et "EX") ont des -genres opposés obligatoirement, et que "m" et "f" sont obligatoirement -masculin et féminin respectivement.</p> -</p> -<p> -Si des identifiants ne sont pas spécifiés, alors la contrainte -correspondante n'est pas spécifiée. -</p> -<p> -Une fois le format épuisé, il est lu à nouveau à partir du début, -jusqu'à la fin du poème. Les identifiants de rime et de genre sont -réinitialisés (ie. peuvent prendre n'importe quelle valeur), sauf s'ils -commencent par '!'. Il n'est pas interdit que le poème et le format ne -terminent pas simultanément. -</p> diff --git a/make_poem.pl b/make_poem.pl @@ -1,52 +0,0 @@ -#!/usr/bin/perl - -use HTML::Entities; - -my $actor; -my $indent; -my $first = 1; -my %actions; - -while (<STDIN>) { - chop; - if (/^<([^>]*)> \/me (.*)$/) { - if ($1 ne $actor) { - $actions{$1} = $2; - } else { - my $did = encode_entities($2, '<>&"'); - print "</p>\n"; - print "<p class=\"did\">Il $did</p>\n"; - print "<p class=\"speech\">\n"; - } - } elsif (/^<([^>]*)> (.*)$/) { - if ($1 ne $actor) { - print "</p>\n" unless $first; - $first = 0; - $actor = $1; - my $eactor = encode_entities($actor, '<>&"'); - print "<p class=\"actor\"><span class=\"actor\">$eactor</span>"; - if (exists $actions{$1}) { - my $did = encode_entities($actions{$1}, '<>&"'); - print ", <span class=\"did\">$did</span>"; - delete $actions{$1}; - } - print "</p>\n"; - print "<p class=\"speech\">\n"; - } - my $rawverse = $2; - if ($2 =~ m/^ *\.\.\./) { - $indent++; - } else { - $indent = 0; - } - my $verse = encode_entities($rawverse, '<>&"'); - if ($indent) { - my $offset = 4 * $indent . "em"; - print "<span style=\"margin-left: $offset;\">$verse</span><br />\n"; - } else { - print "$verse<br />\n"; - } - } -} - -print "</p>\n" unless $first; diff --git a/make_poem.sh b/make_poem.sh @@ -1,6 +0,0 @@ -#!/bin/bash - -cat top.html > www/index.html -cat poem | ./make_poem.pl >> www/index.html -cat bottom.html >> www/index.html -cp style.css www/ diff --git a/poem2html/bottom.html b/poem2html/bottom.html @@ -0,0 +1,3 @@ + </div> + </body> +</html> diff --git a/poem2html/form.html b/poem2html/form.html @@ -0,0 +1,52 @@ +<p> +Écrivez votre poème ici. La casse, les symboles et l'espacement sont +sans importance. Les lignes vides seront ignorées. +</p> +<p> +Écrivez ici le format suivi par votre poème. Chaque ligne du format +correspond à un vers (ie. une ligne non-vide). Une ligne peut indiquer +quatre éléments séparés par une espace : la métrique, l'identifiant de +rime, l'identifiant de genre, et le type de rime. Le premier est +obligatoire, les trois derniers sont facultatifs. +</p> +<p> +La métrique indique le nombre de syllabes du vers, et la position des +hémistiches éventuelles. Il s'agit de totaux de syllabes, séparés par +'/' pour indiquer les hémistiches. Par exemple, "6/6" est un alexandrin +classique, "12" est un alexandrin sans hémistiche. +</p> +<p> +L'identifiant de rime sert à regrouper les vers qui doivent rimer +ensemble. Les vers ayant le même identifiant doivent rimer. Pour +préciser le type de rime attendue, il est possible de terminer +l'identifiant par ':' suivie d'une liste d'entiers séparée par des '|' +indiquant les types possibles pour cette rime. Une rime est acceptable +si elle remplit l'un des critères. Le premier entier indique le nombre +de phonèmes communs nécessaires (maximum 4, défaut 1), une rime étant +acceptée pour ce critère si et seulement si le plus grand suffixe commun +de la prononciation des vers étiquetés comprend ce nombre de phonèmes, +ainsi qu'un phonème vocalique obligatoirement : ainsi, une valeur de 1, +2 ou 3 nécessite au minimum une rime pauvre, suffisante ou riche +respectivement. Le second entier indique le nombre de caractères communs +nécessaires pour une rime pour l'œil, ou -1 pour interdire (défaut -1). +Le troisième entier indique le nombre de phonèmes vocaliques nécessaires +pour une rime par assonance, qui ignore les phonèmes consonantiques +(maximum 1, défaut -1).</p> +<p> +L'identifiant de rime féminine sert à regrouper les vers qui doivent +avoir une rime de même genre. Les conventions supplémentaires sont que +deux identifiants de casse inversée (tels que "ex" et "EX") ont des +genres opposés obligatoirement, et que "m" et "f" sont obligatoirement +masculin et féminin respectivement.</p> +</p> +<p> +Si des identifiants ne sont pas spécifiés, alors la contrainte +correspondante n'est pas spécifiée. +</p> +<p> +Une fois le format épuisé, il est lu à nouveau à partir du début, +jusqu'à la fin du poème. Les identifiants de rime et de genre sont +réinitialisés (ie. peuvent prendre n'importe quelle valeur), sauf s'ils +commencent par '!'. Il n'est pas interdit que le poème et le format ne +terminent pas simultanément. +</p> diff --git a/poem2html/make_poem.pl b/poem2html/make_poem.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl + +use HTML::Entities; + +my $actor; +my $indent; +my $first = 1; +my %actions; + +while (<STDIN>) { + chop; + if (/^<([^>]*)> \/me (.*)$/) { + if ($1 ne $actor) { + $actions{$1} = $2; + } else { + my $did = encode_entities($2, '<>&"'); + print "</p>\n"; + print "<p class=\"did\">Il $did</p>\n"; + print "<p class=\"speech\">\n"; + } + } elsif (/^<([^>]*)> (.*)$/) { + if ($1 ne $actor) { + print "</p>\n" unless $first; + $first = 0; + $actor = $1; + my $eactor = encode_entities($actor, '<>&"'); + print "<p class=\"actor\"><span class=\"actor\">$eactor</span>"; + if (exists $actions{$1}) { + my $did = encode_entities($actions{$1}, '<>&"'); + print ", <span class=\"did\">$did</span>"; + delete $actions{$1}; + } + print "</p>\n"; + print "<p class=\"speech\">\n"; + } + my $rawverse = $2; + if ($2 =~ m/^ *\.\.\./) { + $indent++; + } else { + $indent = 0; + } + my $verse = encode_entities($rawverse, '<>&"'); + if ($indent) { + my $offset = 4 * $indent . "em"; + print "<span style=\"margin-left: $offset;\">$verse</span><br />\n"; + } else { + print "$verse<br />\n"; + } + } +} + +print "</p>\n" unless $first; diff --git a/poem2html/make_poem.sh b/poem2html/make_poem.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +cat top.html > www/index.html +cat poem | ./make_poem.pl >> www/index.html +cat bottom.html >> www/index.html +cp style.css www/ diff --git a/poem2html/style.css b/poem2html/style.css @@ -0,0 +1,117 @@ +body { + background-color: #ccc; + font-family: Arial, Helvetica, sans-serif; +} + +h1,.subtitle { + font-family: monospace; + text-align: center; + margin-bottom: 0.5em; + margin-right: 2.5em; +} + +hr { + margin-right: 5em; +} + +.separator { + margin-top: 2.5em; + width: 50%; + margin-right: 10em; +} + +#top { + margin-top: 0; + margin-bottom: 3em; +} + +#container { + border: 1px solid #333; + background-color: white; + margin: auto; + padding-top: 1em; + padding-bottom: 1em; + padding-left: 5em; +} + +.stanza { + margin-bottom: 1.25em; + margin-top: 1.25em; +} + +#footer, .dedication { + text-align: right; +} + +.dedication { + font-style: italic; + margin-bottom: 1.8em; + margin-right: 4em; +} + +#footer { + margin-top: 3em; + margin-right: 1em; +} + +.ref { + font-style: oblique; +} + +#header { + margin-bottom: 3em; +} + +h2 { + font-size: 150%; + margin-bottom: 0.2em; + margin-top: 1.5em; + letter-spacing: 1px; + font-variant: small-caps; +} + +h3 { + font-size: 100%; + margin-top: 1.5em; +} + +h2, h3 { + font-family: Georgia, "Times New Roman", Times, serif; +} + +.ref { + text-align: left; + margin-left: 0; +} + +#container { + max-width: 28em; +} + +.line { + margin-top: 0.45em; + margin-bottom: 0.45em; +} + +span.actor { + font-variant: small-caps; + margin-left: 2em; + margin-bottom: 0.3em; +} + +.speech { + margin-top: 0.3em; +} + +.subtitle { + font-size: 70%; +} + +.did { + font-style: italic; +} + +p.did { + margin-left: 2em; +} + diff --git a/poem2html/top.html b/poem2html/top.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<html dir="ltr" xml:lang="en-US" lang="en-US" xmlns="http://www.w3.org/1999/xhtml"> + <head> + <title>#alexandrins</title> + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> + <meta name="author" content="a3_nm" /> + <meta name="description" content="Poèmes, par a3_nm" /> + <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> + </head> + <body> + <div id="container"> + <h1>#alexandrins</h1> + <hr id="top" /> + diff --git a/top.html b/top.html @@ -1,14 +0,0 @@ -<!DOCTYPE html> -<html dir="ltr" xml:lang="en-US" lang="en-US" xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>#alexandrins</title> - <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> - <meta name="author" content="a3_nm" /> - <meta name="description" content="Poèmes, par a3_nm" /> - <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> - </head> - <body> - <div id="container"> - <h1>#alexandrins</h1> - <hr id="top" /> -