commit 3d39d38bc2ac95c11493ace4f98a046075bf276c
parent c97e04483dd536774e84a75b87099173df80be11
Author: Antoine Amarilli <a3nm@a3nm.net>
Date: Sun, 18 Aug 2019 13:32:17 +0200
use argparse
Diffstat:
4 files changed, 69 insertions(+), 59 deletions(-)
diff --git a/TODO b/TODO
@@ -1,37 +1,13 @@
== Ongoing ==
-- fix the test (wrong version of frhyme)
+- update the localization
- migrate the readme to markdown
-- ship the occurrence files directly
- turn should_be_accepted into a test
- Produce error reports first in a structured format (JSON) and translate that
into text or into HTML
- expand the corpus of classical poetry: more Racine, more other authors
(Boileau, Corneille, Prudhomme, etc.)
-possible sources: https://dramacode.github.io/ and
-corneille_surena https://fr.wikisource.org/wiki/Sur%C3%A9na
-corneille_pulcherie https://fr.wikisource.org/wiki/Pulch%C3%A9rie
-corneille_tite_et_berenice https://fr.wikisource.org/wiki/Tite_et_B%C3%A9r%C3%A9nice
-corneille_attila https://fr.wikisource.org/wiki/Attila
-corneille_othon https://fr.wikisource.org/wiki/Othon/Texte_entier
-corneille_sophonisbe https://fr.wikisource.org/wiki/Sophonisbe_(Corneille)
-corneille_sertorius https://fr.wikisource.org/wiki/Sertorius
-corneille_toison_dor https://fr.wikisource.org/wiki/La_Toison_d%E2%80%99or_(Corneille)
-corneille_nicomede https://fr.wikisource.org/wiki/Nicom%C3%A8de
-corneille_don_sanche_daragon https://fr.wikisource.org/wiki/Don_Sanche_d%E2%80%99Aragon
-corneille_heraclius https://fr.wikisource.org/wiki/H%C3%A9raclius_empereur_d%E2%80%99Orient
-corneille_theodore https://fr.wikisource.org/wiki/Th%C3%A9odore_vierge_et_martyre
-corneille_rodogune https://fr.wikisource.org/wiki/Th%C3%A9odore_vierge_et_martyre
-corneille_menteur_suite https://fr.wikisource.org/wiki/La_Suite_du_Menteur
-corneille_menteur https://fr.wikisource.org/wiki/Le_Menteur
-corneille_pompee https://fr.wikisource.org/wiki/Pomp%C3%A9e
-corneille_polyeucte https://fr.wikisource.org/wiki/Polyeucte/%C3%89dition_Masson,_1887
-corneille_cinna https://fr.wikisource.org/wiki/Cinna_ou_la_Cl%C3%A9mence_d%E2%80%99Auguste
-corneille_horace https://fr.wikisource.org/wiki/Horace_(Corneille)
-corneille_cid https://fr.wikisource.org/wiki/Le_Cid
-corneille_comedie_des_tuileries https://fr.wikisource.org/wiki/La_Com%C3%A9die_des_Tuileries
-
- fix problems in the new works
- Train diaresesis.json on new works
- check that diaeresis:permissive is indeed more permissive
@@ -87,6 +63,33 @@ corneille_comedie_des_tuileries https://fr.wikisource.org/wiki/La_Com%C3%A9die_d
== Other possible sources ==
+The following could be easily integrated, either from
+https://dramacode.github.io/ or from the indicated URL:
+
+corneille_surena https://fr.wikisource.org/wiki/Sur%C3%A9na
+corneille_pulcherie https://fr.wikisource.org/wiki/Pulch%C3%A9rie
+corneille_tite_et_berenice https://fr.wikisource.org/wiki/Tite_et_B%C3%A9r%C3%A9nice
+corneille_attila https://fr.wikisource.org/wiki/Attila
+corneille_othon https://fr.wikisource.org/wiki/Othon/Texte_entier
+corneille_sophonisbe https://fr.wikisource.org/wiki/Sophonisbe_(Corneille)
+corneille_sertorius https://fr.wikisource.org/wiki/Sertorius
+corneille_toison_dor https://fr.wikisource.org/wiki/La_Toison_d%E2%80%99or_(Corneille)
+corneille_nicomede https://fr.wikisource.org/wiki/Nicom%C3%A8de
+corneille_don_sanche_daragon https://fr.wikisource.org/wiki/Don_Sanche_d%E2%80%99Aragon
+corneille_heraclius https://fr.wikisource.org/wiki/H%C3%A9raclius_empereur_d%E2%80%99Orient
+corneille_theodore https://fr.wikisource.org/wiki/Th%C3%A9odore_vierge_et_martyre
+corneille_rodogune https://fr.wikisource.org/wiki/Th%C3%A9odore_vierge_et_martyre
+corneille_menteur_suite https://fr.wikisource.org/wiki/La_Suite_du_Menteur
+corneille_menteur https://fr.wikisource.org/wiki/Le_Menteur
+corneille_pompee https://fr.wikisource.org/wiki/Pomp%C3%A9e
+corneille_polyeucte https://fr.wikisource.org/wiki/Polyeucte/%C3%89dition_Masson,_1887
+corneille_cinna https://fr.wikisource.org/wiki/Cinna_ou_la_Cl%C3%A9mence_d%E2%80%99Auguste
+corneille_horace https://fr.wikisource.org/wiki/Horace_(Corneille)
+corneille_cid https://fr.wikisource.org/wiki/Le_Cid
+corneille_comedie_des_tuileries https://fr.wikisource.org/wiki/La_Com%C3%A9die_des_Tuileries
+
+Other ideas (trickier):
+
- https://fr.wikisource.org/wiki/Imitation_de_J%C3%A9sus-Christ/Texte_entier
- https://fr.wikisource.org/wiki/Po%C3%A9sies_diverses_(Corneille)
- corneille_andromede https://fr.wikisource.org/wiki/Androm%C3%A8de (but much free verse)
diff --git a/plint/__main__.py b/plint/__main__.py
@@ -2,19 +2,17 @@
from plint import localization, error, template, diaeresis
import sys
+import argparse
-def run():
+def run(ocontext=None, weight=None, offset=0):
is_ok = True
f2 = None
n_syllables = None
- offset = 0
- if len(sys.argv) >= 4:
- f2 = open(sys.argv[3], 'w')
- if len(sys.argv) >= 5:
- n_syllables = int(sys.argv[4])
- if len(sys.argv) == 6:
- offset = int(sys.argv[5])
+ if ocontext:
+ f2 = open(ocontext, 'w')
+ if weight:
+ n_syllables = int(weight)
should_end = False
while True:
line = sys.stdin.readline()
@@ -33,26 +31,27 @@ def run():
def main():
global template
localization.init_locale()
- if len(sys.argv) < 2 or len(sys.argv) > 6:
- print("Usage: %s TEMPLATE [DFILE [OCONTEXT [NSYL [OFFSET]]]]" % sys.argv[0],
- file=sys.stderr)
- print("Check stdin according to TEMPLATE, report errors on stdout",
- file=sys.stderr)
- print("For internal use:",
- file=sys.stderr)
- print("DFILE is the diaeresis file, OCONTEXT is the context output file",
- file=sys.stderr)
- print("NSYL is the assigned weight to the last chunk (diaeresis training)",
- file=sys.stderr)
- print("OFFSET is to add after the last chunk (diaeresis training)",
- file=sys.stderr)
- sys.exit(2)
- template_name = sys.argv[1]
- if len(sys.argv) > 2:
- diaeresis_name = sys.argv[2]
- else:
- diaeresis_name = "../data/diaeresis.json"
- diaeresis.set_diaeresis(diaeresis_name)
+ parser = argparse.ArgumentParser(
+ description="Check poem on stdin according to a template")
+ parser.add_argument("template",
+ help="the file containing the template for the input poem",
+ type=str)
+ parser.add_argument("--diaeresis", type=str,
+ help="diaeresis training: diaeresis file to use",
+ default="../data/diaeresis.json")
+ parser.add_argument("--ocontext", type=str,
+ help="diaeresis training: output file where to write the contexts",
+ default=None)
+ parser.add_argument("--weight", type=int,
+ help="diaeresis training: fixed weight for a specific chunk",
+ default=None)
+ parser.add_argument("--offset", type=int,
+ help="diaeresis training: position of the specific chunk from the end",
+ default=0)
+ args = parser.parse_args()
+
+ template_name = args.template
+ diaeresis.set_diaeresis(args.diaeresis)
f = open(template_name)
x = f.read()
f.close()
@@ -61,7 +60,7 @@ def main():
except error.TemplateLoadError as e:
print("Could not load template %s: %s" % (template_name, e.msg), file=sys.stderr)
sys.exit(2)
- ok = run()
+ ok = run(ocontext=args.ocontext, weight=args.weight, offset=args.offset)
sys.exit(0 if ok else 1)
diff --git a/test.sh b/test.sh
@@ -15,7 +15,7 @@ for a in plint/test_data/*.tpl; do
echo "$a" >> test_temp.txt
if [[ $a == *cyrano_full* ]]
then
- python3 -m plint $(pwd)/$a ../data/diaeresis_cyrano.json < $(pwd)/${a%.tpl} &>> test_temp.txt
+ python3 -m plint $(pwd)/$a --diaeresis=../data/diaeresis_cyrano.json < $(pwd)/${a%.tpl} &>> test_temp.txt
else
./test_one.sh $(basename "${a%.tpl}") &>> test_temp.txt
fi
diff --git a/train_diaeresis/train_diaeresis.sh b/train_diaeresis/train_diaeresis.sh
@@ -10,14 +10,22 @@ cd .. # go in the main folder
if [ -f $DIR/diaeresis_verbs/final_syneresis -a -f $DIR/diaeresis_verbs/final_diaeresis ]
then
cat $DIR/diaeresis_verbs/final_syneresis | grep -vE -- '-vous$|-nous$' |
- python3 -m plint <(echo 12) $DIR/diaeresis_empty.json $DIR/final_syneresis.ctx 1 0
+ python3 -m plint <(echo 12) \
+ --diaeresis=$DIR/diaeresis_empty.json --ocontext=$DIR/final_syneresis.ctx\
+ --weight=1 --offset=0
cat $DIR/diaeresis_verbs/final_syneresis | grep -E -- '-vous$|-nous$' |
- python3 -m plint <(echo 12) $DIR/diaeresis_empty.json $DIR/final_syneresis2.ctx 1 1
+ python3 -m plint <(echo 12) \
+ --diaeresis=$DIR/diaeresis_empty.json --ocontext=$DIR/final_syneresis2.ctx\
+ --weight=1 --offset=1
cat $DIR/final_syneresis.ctx $DIR/final_syneresis2.ctx | sponge $DIR/final_syneresis.ctx
cat $DIR/diaeresis_verbs/final_diaeresis | grep -vE -- '-vous$|-nous$' |
- python3 -m plint <(echo 12) $DIR/diaeresis_empty.json $DIR/final_diaeresis.ctx 2 0
+ python3 -m plint <(echo 12) \
+ --diaeresis=$DIR/diaeresis_empty.json --ocontext=$DIR/final_diaeresis.ctx\
+ --weight=2 --offset=0
cat $DIR/diaeresis_verbs/final_diaeresis | grep -E -- '-vous$|-nous$' |
- python3 -m plint <(echo 12) $DIR/diaeresis_empty.json $DIR/final_diaeresis2.ctx 2 1
+ python3 -m plint <(echo 12) \
+ --diaeresis=$DIR/diaeresis_empty.json --ocontext=$DIR/final_diaeresis2.ctx\
+ --weight=2 --offset=1
cat $DIR/final_diaeresis.ctx $DIR/final_diaeresis2.ctx | sponge $DIR/final_diaeresis.ctx
fi