Пример #1
0
        private static Dictionary <Object, List <Object> > doc2Win; // key is document, value is list of windows

        // -------------------------------------- Public Static Methods -------------------------------------------------------

        /// <summary>
        /// Initialise la partie statique de la classe (la gestion du  mapping entre documents, fenêtres et configurations).
        /// Appelle les <c>Init()</c> statiques des autres classes de configuration.
        /// </summary>
        /// <remarks> Est responsable de la création du répertoire où seront sauvegardées les configs.</remarks>
        /// <param name="errMsgs">Si une erreur se produit, un message est ajouté à la liste.
        /// La liste n'est pas touchée si tout se passe bien. <c>null</c> indique que le message
        /// n'est pas souhaité par l'appelant.</param>
        public static new void Init(List <string> errMsgs = null)
        {
            logger.ConditionalDebug("Init");
            ColConfWin.Init();
            // Ensure that ConfigDirPath folder does exist
            if (!System.IO.Directory.Exists(ConfigDirPath))
            {
                try
                {
                    System.IO.Directory.CreateDirectory(ConfigDirPath);
                    logger.Info("Dossier \'{0}\' créé.", ConfigDirPath);
                }
                catch (Exception e) when(e is IOException || e is UnauthorizedAccessException)
                {
                    errMsgs?.Add("Impossible de créer le répertoire" + ConfigDirPath);
                    logger.Error("Impossible de créer le répertoire {0}. Erreur {1}", ConfigDirPath, e.Message);
                }
            }
            theConfs = new Dictionary <object, Config>();
            doc2Win  = new Dictionary <object, List <object> >();
        }
Пример #2
0
        public void TestFireRuleI()
        {
            AutomLetter     al;
            int             pos;
            string          tstAL;
            TheText         tt;
            List <PhonWord> pws;
            int             wordI;
            string          rTxt;

            ColConfWin.Init();
            TheText.Init();

            Config conf = new Config();

            tstAL = @"'i' : [['ing','n','m','nm','prec_2cons','lldeb','vill','mill','tranquille',
				'ill','@ill','@il','ll','ui','ient_1','ient_2','ie','i_voyelle', '*'],
				{'ing':[{'-':/[bcçdfghjklmnpqrstvwxz]/i,'+':/ng$/i},'i',1],
				'n':[{'+':/n[bcçdfghjklmpqrstvwxz]/i},'e_tilda',2],
				'm':[{'+':/m[bcçdfghjklnpqrstvwxz]/i},'e_tilda',2],
				'nm':[{'+':/[n|m]$/i},'e_tilda',2],
                'prec_2cons':[{'-':/[ptkcbdgfv][lr]/i, '+':/[aäâeéèêëoôöuù]/i},'i_j',1], // précédé de 2 consonnes (en position 3), doit apparaître comme [ij] PAE: rajouté les voyelles
				'lldeb':[{'-':/^/i,'+':/ll/i},'i',1],
				'vill':[{'-':/v/i,'+':/ll/i},'i',1],
				'mill':[{'-':/m/i,'+':/ll/i},'i',1],
				'tranquille':[{'-':/tranqu/i,'+':/ll/i},'i',1],
				'ill':[{'+':/ll/i,'-':/[bcçdfghjklmnpqrstvwxz](u?)/i},'i',1], // précédé éventuellement d'un u et d'une consonne, donne le son [i]
				'@ill':[{'-':/[aeo]/i,'+':/ll/i},'j',3], // par défaut précédé d'une voyelle et suivi de 'll' donne le son [j]
				'@il':[{'-':/[aeou]/i,'+':/l(s?)$/i},'j',2], // par défaut précédé d'une voyelle et suivi de 'l' donne le son [j]
				'll':[{'+':/ll/i},'j',3], // par défaut avec ll donne le son [j]
				'ui':[{'-':/u/i,'+':/ent/i},'i',1], // essuient, appuient
				'ient_1':[this.Regle_ient,'i',1], // règle spécifique pour différencier les verbes du premier groupe 3ème pers pluriel
				'ient_2':[{'+':/ent(s)?$/i},'j',1], // si la règle précédente ne fonctionne pas
				'ie':[{'+':/e(s|nt)?$/i},'i',1], // mots terminés par -ie(s|nt)
				'i_voyelle':[{'+':/[aäâeéèêëoôöuù]/i},'j',1], // i suivi d'une voyelle donne [j]
				'*':[{},'i',1]}]"                ;
            pos   = 0;
            al    = new AutomLetter(tstAL, ref pos);
            tt    = new TheText(@"briefing, berlingot, sapin, imbécile, limbe, afin, prier, ville, paille, triage,
                               appartient, amplifient, glorifient");
            pws   = tt.GetPhonWordList(conf);

            foreach (PhonWord pw in pws)
            {
                pw.ClearPhons();
            }

            // briefing
            wordI = 0;
            pos   = 5;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(6, pos);
            Assert.AreEqual("i", pws[wordI].Phonetique());

            // berlingot
            wordI = 1;
            pos   = 4;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(6, pos);
            Assert.AreEqual("5", pws[wordI].Phonetique());

            // sapin
            wordI = 2;
            pos   = 3;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(5, pos);
            Assert.AreEqual("5", pws[wordI].Phonetique());

            // imbécile
            wordI = 3;
            pos   = 0;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(2, pos);
            Assert.AreEqual("5", pws[wordI].Phonetique());

            // limbe
            wordI = 4;
            pos   = 1;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(3, pos);
            Assert.AreEqual("5", pws[wordI].Phonetique());

            // afin
            wordI = 5;
            pos   = 2;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(4, pos);
            Assert.AreEqual("5", pws[wordI].Phonetique());

            // prier
            wordI = 6;
            pos   = 2;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(3, pos);
            Assert.AreEqual("ij", pws[wordI].Phonetique());

            // ville
            wordI = 7;
            pos   = 1;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(2, pos);
            Assert.AreEqual("i", pws[wordI].Phonetique());

            // paille
            wordI = 8;
            pos   = 2;
            al.FireRule(pws[wordI], ref pos, conf);
            rTxt = pws[wordI].AllStringInfo();
            StringAssert.Matches(rTxt, new Regex(@"Rule: @ill"));
            Assert.AreEqual(5, pos);
            Assert.AreEqual("j", pws[wordI].Phonetique());

            // triage
            wordI = 9;
            pos   = 2;
            al.FireRule(pws[wordI], ref pos, conf);
            rTxt = pws[wordI].AllStringInfo();
            StringAssert.Matches(rTxt, new Regex(@"Rule: prec_2cons"));
            Assert.AreEqual(3, pos);
            Assert.AreEqual("ij", pws[wordI].Phonetique());

            // appartient
            wordI = 10;
            pos   = 6;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(7, pos);
            Assert.AreEqual("j", pws[wordI].Phonetique());

            // amplifient
            wordI = 11;
            pos   = 6;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(7, pos);
            Assert.AreEqual("i", pws[wordI].Phonetique());

            // glorifient
            wordI = 12;
            pos   = 4;
            al.FireRule(pws[wordI], ref pos, conf);
            Assert.AreEqual(5, pos);
            Assert.AreEqual("i", pws[wordI].Phonetique());
        }