예제 #1
0
        public void Test()
        {
            var parcer = new EurekahedgeLockupParcer();


            Assert.AreEqual("Soft; 24; Months; 5;", parcer.Parce("Yes (1st 2yrs firm lock-up; soft lock-up of 5% exit fee)").ToTestString());
            Assert.AreEqual("Hard; 50; Days; ;", parcer.Parce("Yes (50days)").ToTestString());
            Assert.AreEqual("Hard; 6; Months; ;", parcer.Parce("Yes (six months)").ToTestString());
            Assert.AreEqual("Hard; 9; Months; ;", parcer.Parce("Yes (Nine months)").ToTestString());
            Assert.AreEqual("Hard; 12; Months; ;", parcer.Parce("Yes (year 1 hard lock-up  year 2 & 3 soft lock-up)").ToTestString());
            Assert.AreEqual("; ; ; ;", parcer.Parce("No (for Class A; Yes for Class B & C)").ToTestString());
            Assert.AreEqual("Hard; 12; Months; ;", parcer.Parce("Yes (Class A: No; Class B: Yes (1 year))").ToTestString());
            Assert.AreEqual("Soft; ; ; 4;", parcer.Parce("No (Soft-lock with 4% early redemption fee)").ToTestString());
            //Assert.AreEqual("Soft; 1; Months; 10;", parcer.Parce("Yes (10% redemption limit per month)").ToTestString());

            foreach (Tuple <string, string> sample in samples)
            {
                Assert.AreEqual(sample.Item2, parcer.Parce(sample.Item1).ToTestString());
            }
        }
        private void LoadFiles()
        {
            try
            {
                //var sw = Stopwatch.StartNew();


                //var inputTextes = Enumerable.Repeat(GetTextes().Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList(), 1000)
                var inputTextes = GetTextes().Where(x => !string.IsNullOrEmpty(x)).Distinct().ToList();

                //inputTextes = Enumerable.Repeat(inputTextes, 200).SelectMany(x => x).ToList();

                /*
                 * var fileInfosAll = inputTextes.
                 *  Select(x => new
                 *      {
                 *          lockUp = parcer.Parce(x),
                 *          parceResult = parcer.Replace(x),
                 *          text = x,
                 *      }).
                 *  //GroupBy(x => !string.IsNullOrEmpty(x.parceResult) ? x.parceResult : x.text).
                 *  GroupBy(x => !string.IsNullOrEmpty(x.parceResult) ? x.parceResult : x.text).
                 *  Select(x => new
                 *      {
                 *          text = x.Key,
                 *          sourceText = string.Join(Environment.NewLine, x.Select(y => y.text).Distinct()),
                 *          firstSourceText = x.First().text,
                 *          firstLockUp = x.First().lockUp,
                 *          count = x.Count(),
                 *      }).
                 *  ToList();
                 */

                var sw = Stopwatch.StartNew();

                EurekahedgeLockupParcer parcer = new EurekahedgeLockupParcer();
                var fileInfosAll = inputTextes
                                   .Select(x => new
                {
                    lockUp      = parcer.Parce(x),
                    parceResult = parcer.Replace(x),
                    text        = x,
                })
                                   //.Where(x => x.lockUp.Warning)

                                   /*.GroupBy(x => x.parceResult)
                                    * .Select(x => new
                                    * {
                                    *  text = x.First().parceResult,
                                    *  //text = x.text,
                                    *  sourceText = x.First().text,
                                    *  firstSourceText = x.First().text,
                                    *  firstLockUp = x.First().lockUp,
                                    *  count = x.Count(),
                                    * })
                                    */
                                   .Select(x => new
                {
                    text = x.parceResult,
                    //text = x.text,
                    sourceText      = x.text,
                    firstSourceText = x.text,
                    firstLockUp     = x.lockUp,
                    count           = 1,
                })
                                   .ToList();

                var fileInfos = fileInfosAll
                                .Take(100)
                                .ToList();

                sw.Stop();
                TimeSpan timeParsing = sw.Elapsed;

                textes        = fileInfos.Select(x => x.text).ToList();
                files         = fileInfos.Select(x => $"{x.text}[{x.count}]").ToList();
                parsedRegions = fileInfos.Select(x => x.sourceText).ToList();
                dataSets      = fileInfos.Select(x => x.text).ToList();

                File.WriteAllLines(EurekahedgeResult, fileInfosAll.Select(x => $"{x.text}\t{x.firstSourceText}\t{x.firstLockUp.ToTestString()}\t{x.count}"));

                FilesDescription = $"All lines: {inputTextes.Count}; All parced lines: {fileInfosAll.Count}; Time: {timeParsing:mm\\:ss}";
            }
            catch (Exception e)
            {
                Debug.Fail("LoadFiles");
                Console.WriteLine(e);
                throw;
            }
        }