public override List<ItemDic> GeneraDic(Dictionary<string, string> dades, 
     Dictionary<string, string> excepcions, Marques filtre, Entrada.Speller speller)
 {
     List<ItemDic> llista = new List<ItemDic>();
     llista.Add(new ItemDic(dades["arrel"]));
     return llista;
 }
 private void MostraDadesDic(Entrada entrada)
 {
     dadesDic.Clear();
     dadesDic.AppendText("Línies dins .dic:\r\n");
     foreach (string linia in Entrada.GeneraLiniesDic(entrada, new Marques(true), Entrada.Speller.HUNSPELL, Cat.Cmp))
         dadesDic.AppendText(String.Format("    {0}\r\n", linia));
 }
 private void MostraDadesEntrada(Entrada entrada)
 {
     dadesEntrada.Clear();
     string[] claus;
     claus = new string[entrada.Dades.Count];
     entrada.Dades.Keys.CopyTo(claus, 0);
     Array.Sort(claus);
     foreach (string clau in claus)
     {
         if (clau == "línia")
             continue;
         dadesEntrada.AppendText(string.Format("{0}: {1}\n", clau, entrada.Dades[clau]));
     }
     if (entrada.Excepcions != null)
     {
         dadesEntrada.AppendText("\n");
         Dictionary<string, string> exc = entrada.Excepcions.Contingut.Valors(new Marques(true));
         claus = new string[exc.Count];
         exc.Keys.CopyTo(claus, 0);
         Array.Sort(claus);
         foreach (string clau in claus)
             dadesEntrada.AppendText(string.Format("{0}: {1}\n", clau, exc[clau]));
     }
 }
 public override List<Mot> GeneraMots(Entrada entrada, Marques filtre, bool nomesAfixos)
 {
     List<Mot> llista = new List<Mot>();
     llista.Add(new Mot(entrada.Arrel, null, null));
     return llista;
 }
 public override Entrada IdentificaEntrada(string linia)
 {
     Dictionary<string, string> dades = new Dictionary<string,string>();
     Match match;
     foreach (string tros in trossosLinia.Split(linia))
     {
         match = clauIgualValor.Match(tros);
         if (!match.Success)
             throw new Exception(String.Format("S'esperava xxx=yyy (rebut: \"{0}\")", tros));
         dades[match.Groups[1].Value] = match.Groups[2].Value;
     }
     if (!dades.ContainsKey("ent"))
         throw new Exception("No ent!");
     string ent = dades["ent"];
     if (ignoraEntrada.IsMatch(ent))
         return null;
     match = netejaFinal.Match(ent);
     string arrel = match.Success ? match.Groups[1].Value : ent;
     match = netejaMig.Match(ent);
     if (match.Success)
         arrel = match.Groups[1].Value + match.Groups[2].Value;
     dades["arrel"] = arrel;
     dades["línia"] = linia;
     Entrada entrada = new Entrada(this, dades);
     entrada.Excepcions = Excepcio(entrada.Ent);
     return entrada;
 }
 /// <summary>
 /// Genera les línies d'un fitxer .dic per a una entrada.
 /// </summary>
 /// <param name="entrada">L'entrada a partir de la qual volem generar.</param>
 /// <param name="identificador">Un identificador per als paradigmes.</param>
 /// <param name="filtre">Les marques que volem incloure al resultat.</param>
 /// <param name="speller">El client per al qual generarem les línies .dic.</param>
 /// <param name="comparador">La funció de comparació.</param>
 /// <returns>Una llista de línies amb el format adequat, ordenada segons el comparador.</returns>
 public static string[] GeneraLiniesDic(Entrada entrada, Marques filtre, 
     Speller speller, Comparison<string> comparador)
 {
     List<Entrada> entrades = new List<Entrada>();
     entrades.Add(entrada);
     return GeneraLiniesDic(entrades, filtre, speller, comparador);
 }
 /// <summary>
 /// Torna la llista de mots corresponents a una entrada.
 /// Es passa l'entrada com a paràmetre perquè moltes entrades poden compartir un paradigma.
 /// </summary>
 /// <param name="entrada">L'entrada de la qual volem generar els mots.</param>
 /// <param name="nomesAfixos">
 /// Si és true, només genera amb les regles que tenen la propietat EsAfix.
 /// Si és false, genera amb totes les regles possibles.
 /// </param>
 /// <returns>Una llista de mots.</returns>
 public virtual List<Mot> GeneraMots(Entrada entrada, Marques filtre, bool nomesAfixos)
 {
     throw new Exception("Sense implementar");
 }
 /// <summary>
 /// Torna la llista d'ítems del diccionari corresponents a una entrada.
 /// Es passa l'entrada com a paràmetre perquè moltes entrades poden compartir un paradigma.
 /// </summary>
 /// <param name="dades">Les dades de l'entrada.</param>
 /// <param name="excepcions">Informació sobre excepcions.</param>
 /// <param name="filtre">Les marques per filtrar el resultat</param>
 /// <param name="speller">El format del corrector.</param>
 /// <returns>Una llista amb els ítems.</returns>
 public virtual List<ItemDic> GeneraDic(Dictionary<string,string> dades, 
     Dictionary<string, string> excepcions, Marques filtre, Entrada.Speller speller)
 {
     throw new Exception("Sense implementar");
 }
 private void MostraExemple(Entrada entrada)
 {
     MostraDadesEntrada(entrada);
     MostraDadesDic(entrada);
     string[] tot = Mot.LlistaPlana(entrada.GeneraMots(Marques.totes, false), Cat.Cmp, true).Split(' ');
     string comu = null;
     foreach (string un in tot)
     {
         string[] trossos = un.Split('=');
         if (trossos.Length != 2)
             continue;
         string info = trossos[0];
         if (comu == null)
             comu = info;
         else
         {
             int i = 0;
             while (i < info.Length && i < comu.Length && info[i] == comu[i])
                 ++i;
             comu = info.Substring(0, i);
         }
     }
     int midaComu = 0;
     Dictionary<string, string> dades = null;
     if (comu != null)
     {
         midaComu = comu.Length;
         dades = new Dictionary<string, string>();
         foreach (string un in tot)
         {
             string[] trossos = un.Split('=');
             string info = trossos[0].Substring(midaComu);
             string formes = trossos[1];
             dades[info] = formes;
         }
     }
     else
         comu = "";
     switch (comu)
     {
         case "VERB.":
             MostraHtml("verb", dades);
             break;
         case "NOM.F.":
             MostraHtml("nomfem", dades);
             break;
         case "NOM.M.":
             MostraHtml("nommasc", dades);
             break;
         case "NOM.":
             MostraHtml("nommascfem", dades);
             break;
         default:
             navegadorWeb.DocumentText = string.Format("=== \"{0}\" ===<br>\r\n{1}", entrada.Arrel, String.Join("<br>\r\n", tot));
             break;
     }
 }
 public override List<Mot> GeneraMots(Entrada entrada, Marques filtre, bool nomesAfixos)
 {
     List<ItemDic> items = Entrada.GeneraItemsDic(entrada, filtre, Entrada.Speller.HUNSPELL, Cat.Cmp);
     List<Mot> llista = GeneraMots(items, filtre, nomesAfixos);
     return llista;
 }
 public override List<ItemDic> GeneraDic(Dictionary<string, string> dades, 
     Dictionary<string, string> excepcions, Marques filtre, Entrada.Speller speller)
 {
     List<ItemDic> llista = new List<ItemDic>();
     Genera(dades, excepcions, filtre, llista);
     return llista;
 }