Example #1
0
 public void Listi()
 {
     Vortoj?.ForEach(v => {
         Console.WriteLine(
             $"{v.PlenaVorto} - {Sintaksanalizilo.infinitivoNomoDe(v.PlenaVorto).Value} - {v.Signifo}");
     });
 }
Example #2
0
        public VortoRespondo?Vorto(string vorto)
        {
            var respondo = Indekso.GetValueOrDefault(vorto, null);

            if (respondo == null)
            {
                return(null);
            }

            var vorttipo = Sintaksanalizilo.infinitivoNomoDe(vorto).Value;
            var silaboj  = Malinflektado.dividiKunFinaĵo(vorto);

            string?sintakso = null;

            if (respondo is Modifanto modifanto)
            {
                var sb = new StringBuilder(respondo.Vorto.Length);
                sb.AppendFormat("<v> {0}", modifanto.Vorto);
                sb.AppendJoin("", modifanto.AldonaĵajTipoj.Select((_, i) => $" &lt;x<sub>{i}</sub>&gt;"));
                sintakso = sb.ToString();
            }

            if (silaboj.IsError)
            {
                throw new Exception(silaboj.ErrorValue);
            }

            var inflekcioj = Malinflektado.iujInflekciojDe(vorto);

            return(new VortoRespondo(respondo.Vorto)
            {
                Noto = respondo.Noto != null
               ? string.Format(respondo.Noto, "a<sub>1</sub>", "a<sub>2</sub>", "a<sub>3</sub>")
               : null,
                Radikoj = respondo.Radikoj.ToList(),
                Signifo = respondo.Signifo,
                Vorttipo = vorttipo,
                Silaboj = silaboj.ResultValue,
                Gloso = respondo.Gloso,
                InflektitajFormoj = FSharpOption <FSharpMap <Vorttipo.Inflekcio, string> > .get_IsSome(inflekcioj)
               ? inflekcioj.Value.Select(p => (p.Key.ToString(), p.Value))
                                    .ToDictionary(p => p.Item1, p => p.Value)
               : null,
                Ujoj = respondo is Verbo verbo ? verbo.ArgumentajNotoj : null,
                FrazaSignifo = respondo is Verbo verbo2
               ? string.Format(verbo2.FrazaSignifo, "a<sub>1</sub>", "a<sub>2</sub>", "a<sub>3</sub>")
               : null,
                Sintakso = sintakso,
                ModifeblajVorttipoj = respondo is Modifanto m?m.ModifeblajTipoj.Select(PriskribiVorttipanMallongaĵon) : null,
                                          AldonaĵajInflekcioj = respondo is Modifanto m2?m2.AldonaĵajTipoj.Select(PriskribiVorttipanMallongaĵon) : null,
            });