public void FriendlyNameMapping()
        {
            using (var file = File.OpenRead(TestDataPaths.JMDict))
                using (var gzip = new GZipStream(file, CompressionMode.Decompress))
                {
                    var jparser = JMDictParser.Create(gzip);
                    CollectionAssert.IsNotEmpty(jparser.FriendlyNames);
                }

            Assert.AreEqual("noun (common) (futsuumeishi)", jmdict.FriendlyDescriptionOf(EdictPartOfSpeech.n));
        }
Exemplo n.º 2
0
        private IEnumerable <Paragraph> Render(IEnumerable <JMDictEntry> entries)
        {
            foreach (var entry in entries)
            {
                var l = new List <Text>();
                {
                    bool first = true;
                    foreach (var kanji in entry.KanjiEntries)
                    {
                        if (!first)
                        {
                            l.Add(new Text(";  "));
                        }
                        first = false;
                        l.Add(new Text(kanji.Kanji));
                        var infoList = kanji.Informational.Materialize();
                        if (infoList.Count != 0)
                        {
                            l.Add(new Text(" (", fontSize: FontSize.Small));
                            bool f = true;
                            foreach (var information in infoList)
                            {
                                if (!f)
                                {
                                    l.Add(new Text(", "));
                                }

                                l.Add(new Text(jdict.FriendlyDescriptionOf(information), fontSize: FontSize.Small));
                                f = false;
                            }
                            l.Add(new Text(")", fontSize: FontSize.Small));
                        }
                    }

                    l.Add(new Text("\n"));
                }
                {
                    bool first = true;
                    foreach (var reading in entry.ReadingEntries)
                    {
                        if (!first)
                        {
                            l.Add(new Text("\n"));
                        }
                        first = false;
                        l.Add(new Text(reading.Reading));
                        var infoList        = reading.ReadingInformation.Materialize();
                        var validForList    = reading.ValidReadingFor.Materialize();
                        var notATrueReading = reading.NotATrueReading;
                        if (notATrueReading || infoList.Count != 0 || validForList.Count != 0)
                        {
                            l.Add(new Text(" (", fontSize: FontSize.Small));
                        }

                        if (notATrueReading)
                        {
                            l.Add(new Text("not a true reading", fontSize: FontSize.Small));
                        }

                        if (infoList.Count != 0)
                        {
                            if (notATrueReading)
                            {
                                l.Add(new Text(", ", fontSize: FontSize.Small));
                            }
                            bool f = true;
                            foreach (var information in infoList)
                            {
                                if (!f)
                                {
                                    l.Add(new Text(", "));
                                }

                                l.Add(new Text(jdict.FriendlyDescriptionOf(information), fontSize: FontSize.Small));
                                f = false;
                            }
                        }

                        if (validForList.Count != 0)
                        {
                            if (notATrueReading || infoList.Count != 0)
                            {
                                l.Add(new Text(", ", fontSize: FontSize.Small));
                            }

                            l.Add(new Text("only applicable to: ", fontSize: FontSize.Small));
                            bool f = true;
                            foreach (var validReading in validForList)
                            {
                                if (!f)
                                {
                                    l.Add(new Text(", "));
                                }

                                l.Add(new Text(validReading, fontSize: FontSize.Small));
                                f = false;
                            }
                        }

                        if (notATrueReading || infoList.Count != 0 || validForList.Count != 0)
                        {
                            l.Add(new Text(")", fontSize: FontSize.Small));
                        }
                    }

                    l.Add(new Text("\n"));
                }
                {
                    foreach (var sense in entry.Senses)
                    {
                        l.Add(new Text(string.Join("/\u200B", sense.PartOfSpeechInfo.Select(pos => jdict.FriendlyDescriptionOf(pos))), fontSize: FontSize.ExtraSmall));
                        l.Add(new Text("\n"));
                        {
                            bool first = true;
                            foreach (var dialect in sense.DialectalInfo)
                            {
                                if (!first)
                                {
                                    l.Add(new Text(", ", fontSize: FontSize.Medium));
                                }
                                first = false;
                                l.Add(new Text(jdict.FriendlyDescriptionOf(dialect), fontSize: FontSize.Medium));
                            }
                            if (!first)
                            {
                                l.Add(new Text("\n"));
                            }
                        }
                        {
                            bool first = true;
                            foreach (var field in sense.FieldData)
                            {
                                if (!first)
                                {
                                    l.Add(new Text(", ", fontSize: FontSize.Medium));
                                }
                                first = false;
                                l.Add(new Text(jdict.FriendlyDescriptionOf(field), fontSize: FontSize.Medium));
                            }
                            if (!first)
                            {
                                l.Add(new Text("\n"));
                            }
                        }
                        {
                            bool first = true;
                            foreach (var misc in sense.Misc)
                            {
                                if (!first)
                                {
                                    l.Add(new Text(", ", fontSize: FontSize.Medium));
                                }
                                first = false;
                                l.Add(new Text(jdict.FriendlyDescriptionOf(misc), fontSize: FontSize.Medium));
                            }
                            if (!first)
                            {
                                l.Add(new Text("\n"));
                            }
                        }
                        foreach (var inf in sense.Informational)
                        {
                            l.Add(new Text(inf, fontSize: FontSize.Medium));
                            l.Add(new Text("\n"));
                        }
                        l.Add(new Text(string.Join("/\u200B", sense.Glosses)));
                        l.Add(new Text("\n"));
                    }
                }
                yield return(new TextParagraph(l));
            }
        }