public void can_handle_multiple_regions() { var code = "this is some\n" + "void t() {\n" + " #region mybum\n" + " int x \n " + " #region nestedregion1\n" + " var s = fred\n" + "#endregion\n" + " #region nestedregion2\n" + " var s = fred\n" + "#endregion\n" + " #endregion\n" + "}"; var c = new RegionParser(); var result = c.GetRegions(code); Assert.IsNotNull(result); Assert.AreEqual("mybum", result.First().Name); var expected = new string[] {"nestedregion1", "nestedregion2"}; var actual = result.First().NestedRegions.Select(x => x.Name); var actual2 = result.SelectMany(x => x.NestedRegions); CollectionAssert.AreEqual(expected, actual.ToList()); }
public void can_handle_multiple_regions() { var code = "this is some\n" + "void t() {\n" + " #region mybum\n" + " int x \n " + " #region nestedregion1\n" + " var s = fred\n" + "#endregion\n" + " #region nestedregion2\n" + " var s = fred\n" + "#endregion\n" + " #endregion\n" + "}"; var c = new RegionParser(); var result = c.GetRegions(code); Assert.IsNotNull(result); Assert.AreEqual("mybum", result.First().Name); var expected = new string[] { "nestedregion1", "nestedregion2" }; var actual = result.First().NestedRegions.Select(x => x.Name); var actual2 = result.SelectMany(x => x.NestedRegions); CollectionAssert.AreEqual(expected, actual.ToList()); }
public static DemoCodeBuilder Initialize(string filePath, DemoLanguage language) { var tokenizer = TokenizerFactory.GetFor(language); var parser = new RegionParser(filePath, tokenizer); var regions = parser.GetRegions().ToList(); return(new DemoCodeBuilder(filePath, regions)); }
private List <CodeRegion> Act(string filePath) { var tokenizer = TokenizerFactory.GetFor(DemoLanguage.Java); var parser = new RegionParser(filePath, tokenizer); var result = parser.GetRegions(); return(result.ToList()); }
void ISvgRenderer.SetClip(Region region, CombineMode combineMode) { if (_boundables.Count == 0) { return; } if (combineMode != CombineMode.Intersect && combineMode != CombineMode.Replace) { throw new NotImplementedException(); } // reset current clip if (combineMode == CombineMode.Replace || region == null) { _innerGraphics.PopState(); _innerGraphics.PushState(); } _innerGraphics.Transform = Matrix3x2.Multiply(_currentTransform, _initialTransform); if (combineMode == CombineMode.Replace || _currentClip == null || region == null) { _currentClip = region; } else if (_currentClip != region) { _currentClip = _currentClip.Clone(); _currentClip.Intersect(region); } // set default clip if (_currentClip == null) { return; } RectangleF bounds; foreach (var clipper in RegionParser.ParseRegion(_currentClip, ((IGraphicsProvider)this).GetGraphics(), out bounds)) { if (clipper is RectangleF) { var rect = (RectangleF)clipper; if (rect != _boundables.Peek().Bounds) { _innerGraphics.IntersectClip(Convert(rect)); } } else if (clipper is GraphicsPath) { var path = (GraphicsPath)clipper; _innerGraphics.IntersectClip(Convert(path)); } } }
public void ShouldExtractVariableStatements() { const string Code = "var x = 10;"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(1); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual(Code); }
public void ShouldExtractBlock() { const string Code = "if (true) { some code; }"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(1); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual(Code); }
public void ShouldExtractExpressionsInParantheses() { const string Code = "(10 + 5 * ( 4 - 8) )"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(1); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual(Code); }
public void ShouldExtractForLoops() // for loops have ';' { const string Code = "for(var i = 0; i < 3; i++) { Foo(); }"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(1); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual(Code); }
public void ShouldExtractBlockCodeThatBeginsWithLeftCurlyBrackets() { const string Code = "{ Foo(); ) }"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(1); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual(Code); }
public void ShouldExtractDoWhileAsSingleBlock() { const string Code = "do { } while (true);"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(1); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual(Code); }
public void TestFile() { const string FilePath = @"D:\Work\BOA.Kernel\Dev\BOA.Kernel.CardGeneral\DebitCard\BOA.Engine.DebitCard\Utility\Validation.cs"; var data = new RegionParserTestData { SourceText = File.ReadAllText(FilePath) }; RegionParser.Parse(data); Assert.IsTrue(data.Regions.Count > 0); }
public void ShouldExtractMultipleIfElseAsSingleBlock() { const string Code = "if { } else if { } else if { } else { }"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(1); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual(Code); }
private static IEnumerable <SerialInfo> GetSerials(IEnumerable <IDictionary <string, string> > cmpMatches, string platformId) { return(from entry in cmpMatches.AsParallel() where entry.ContainsKey("serial") let name = entry["name"] let serials = platformId.StartsWith("NINTENDO") ? Regex.Replace(entry["serial"], "[A-Z]*?-[A-Z]-", string.Empty) : entry["serial"] // sanitize nintendo serials let region = RegionParser.ParseRegion(name) select new SerialInfo(platformId, name, region, serials)); }
public void ShouldExtractComplexVariableStatement() { const string Code = "var version = File.ReadAllText(\"src/CommonAssemblyInfo.cs\").Split(new[] { \"AssemblyInformationalVersion(\\\"\" }, 2, StringSplitOptions.None).ElementAt(1).Split(new[] { '\"' }).First();"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(1); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual(Code); }
private static IEnumerable <RomInfo> GetEntries(XDocument xmlDat, string platformId) { return(from game in xmlDat.Root.Elements("game").AsParallel() from rom in game.Elements("rom").AsParallel() where rom.Attribute("size").Value != "0" let crc = rom.Attribute("crc").Value.ToUpperInvariant() let md5 = rom.Attribute("md5").Value.ToUpperInvariant() let sha1 = rom.Attribute("sha1").Value.ToUpperInvariant() let filename = rom.Attribute("name").Value let region = RegionParser.ParseRegion(filename) let mimetype = DatParser.GetMimeType(filename, platformId) where mimetype != null select new RomInfo(platformId, crc, md5, sha1, region, mimetype, filename)); }
public void TestLargeFile() { const string FilePath = @"D:\Work\BOA.BusinessModules\Dev\BOA.CardGeneral.DebitCard\BOA.Orchestration.CardGeneral.DebitCard\CardTransactionListForm.cs"; var data = new RegionParserTestData { SourceText = File.ReadAllText(FilePath) }; RegionParser.Parse(data); Assert.IsTrue(data.Regions.Count > 0); Log.Push(new ArgumentException("xxx")); }
public void can_find_simple_regions() { var code = "this is some\n" + "void t() {\n" + " #region mybum\n" + " int x " + " #endregion\n" + "}"; var c = new RegionParser(); var result = c.GetRegions(code); Assert.IsNotNull(result); }
public void can_find_simple_regions() { var code = "this is some\n" + "void t() {\n" + " #region mybum\n" + " int x " + " #endregion\n" + "}"; var c = new RegionParser(); var result = c.GetRegions(code); Assert.IsNotNull(result); }
/// <summary> /// 新方法-加载所有规则 /// </summary> public void LoadRules() { var files = Directory.GetFiles(config.RulefilesPath, "*.rule"); if (files == null || files.Length == 0) { throw new Exception("rule文件不存在"); } List <Region> regions = new List <Region>(); string fileName = string.Empty; StringBuilder text = new StringBuilder(); files.ToList().ForEach(file => { fileName = Path.GetFileNameWithoutExtension(file); var fileText = File.ReadAllText(file); config.FileRegion[fileName] = RegionParser.ParseRegions(fileText.ToString()); regions.AddRange(config.FileRegion[fileName]); text.AppendLine(fileText); }); if (regions == null || regions.Count == 0) { throw new Exception("region不存在"); } regions.ForEach(region => { var rules = RuleParser.ParseRules(region.RegionContent); if (regions == null || regions.Count == 0) { throw new Exception(string.Format("region '{0}' 无法找到rule", region.RegionName)); } rules.ForEach(rule => { rule.RegionName = region.RegionName; }); rules.ForEach(rule => { var key = string.Format("{0}.{1}", rule.RegionName, rule.RuleName); config.RuleDefinations[key] = rule; }); }); }
public void ShouldExtractComplexMethods() { const string Code = "var bau = Require<Bau>();\n\nbau\n.Task(\"default\").DependsOn(string.IsNullOrWhiteSpace(ci) ? new[] { \"unit\", \"component\", \"pack\" } : new[] { \"unit\", \"component\", \"accept\", \"pack\" });\n"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(2); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual("var bau = Require<Bau>();"); region = result[1]; Code.Substring(region.Offset, region.Length).ShouldEqual("bau\n.Task(\"default\").DependsOn(string.IsNullOrWhiteSpace(ci) ? new[] { \"unit\", \"component\", \"pack\" } : new[] { \"unit\", \"component\", \"accept\", \"pack\" });"); }
public void ShouldExtractInvalidDoWhileAsTwoBlocks() { const string Code = "do { } if (true);"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(2); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual("do { }"); region = result[1]; Code.Substring(region.Offset, region.Length).ShouldEqual("if (true);"); }
public void ShouldExtractMultipleBlocks() { const string Code = "using(var s = File.Open(\"test.cs\")){ } public Foo(int x) { return x }"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(2); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual("using(var s = File.Open(\"test.cs\")){ }"); region = result[1]; Code.Substring(region.Offset, region.Length).ShouldEqual("public Foo(int x) { return x }"); }
public void ParseMultipleRegions() { var parser = new RegionParser(); var source = new StringBuilder(); source.AppendLine(@"using System;"); source.AppendLine(@"using System.Collections.Generic;"); source.AppendLine(@""); source.AppendLine(@"namespace EntityFrameworkCore.Generator.Core.Tests"); source.AppendLine(@"{"); source.AppendLine(@" public partial class User"); source.AppendLine(@" {"); source.AppendLine(@" public User()"); source.AppendLine(@" {"); source.AppendLine(@" #region Generated Initializes"); source.AppendLine(@" Created = DateTimeOffset.UtcNow;"); source.AppendLine(@" Updated = DateTimeOffset.UtcNow;"); source.AppendLine(@" UserRoles = new HashSet<UserRole>();"); source.AppendLine(@" #endregion"); source.AppendLine(@" }"); source.AppendLine(@""); source.AppendLine(@" #region Generated Properties"); source.AppendLine(@" public Guid Id { get; set; }"); source.AppendLine(@" public string EmailAddress { get; set; }"); source.AppendLine(@" public DateTimeOffset Created { get; set; }"); source.AppendLine(@" public DateTimeOffset Updated { get; set; }"); source.AppendLine(@" #endregion"); source.AppendLine(@""); source.AppendLine(@" #region Generated Relationships"); source.AppendLine(@" public virtual ICollection<UserRole> UserRoles { get; set; }"); source.AppendLine(@" #endregion"); source.AppendLine(@" }"); source.AppendLine(@"}"); var result = parser.ParseRegions(source.ToString()); result.Should().NotBeNull(); result.Count.Should().Be(3); var first = result.Values.First(); first.Should().NotBeNull(); first.Name.Should().Be("Generated Initializes"); }
/// <summary> /// 原方法-加载所有规则 /// </summary> public void LoadRules0() { var files = System.IO.Directory.GetFiles(config.RulefilesPath, "*.rule"); if (files == null || files.Length == 0) { throw new Exception("rule文件不存在"); } StringBuilder text = new StringBuilder(); files.ToList().ForEach(file => { var fileText = System.IO.File.ReadAllText(file); text.AppendLine(fileText); }); List <Region> regions = RegionParser.ParseRegions(text.ToString()); if (regions == null || regions.Count == 0) { throw new Exception("region不存在"); } regions.ForEach(region => { var rules = RuleParser.ParseRules(region.RegionContent); if (regions == null || regions.Count == 0) { throw new Exception(string.Format("region '{0}' 无法找到rule", region.RegionName)); } rules.ForEach(rule => { rule.RegionName = region.RegionName; }); rules.ForEach(rule => { var key = string.Format("{0}.{1}", rule.RegionName, rule.RuleName); config.RuleDefinations[key] = rule; }); }); }
public void ShouldExtractMultipleStatements() { const string Code = "var x = 123;Action a = () => x++;Console.WriteLine(x);"; var parser = new RegionParser(); var result = parser.Parse(Code); result.Count().ShouldEqual(3); var region = result[0]; Code.Substring(region.Offset, region.Length).ShouldEqual("var x = 123;"); region = result[1]; Code.Substring(region.Offset, region.Length).ShouldEqual("Action a = () => x++;"); region = result[2]; Code.Substring(region.Offset, region.Length).ShouldEqual("Console.WriteLine(x);"); }
public void can_handle_nested_regions() { var code = "this is some\n" + "void t() {\n" + " #region mybum\n" + " int x \n" + " #region nestedregion1\n" + " var s = fred\n" + "#endregion\n" + " #endregion\n" + "}"; var c = new RegionParser(); var result = c.GetRegions(code); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count()); Assert.AreEqual("mybum", result.First().Name); Assert.AreEqual("nestedregion1", result.First().NestedRegions.First().Name); }
public void can_handle_nested_regions() { var code = "this is some\n" + "void t() {\n" + " #region mybum\n" + " int x \n" + " #region nestedregion1\n" + " var s = fred\n" + "#endregion\n" + " #endregion\n" + "}"; var c = new RegionParser(); var result = c.GetRegions(code); Assert.IsNotNull(result); Assert.AreEqual(1, result.Count()); Assert.AreEqual("mybum", result.First().Name); Assert.AreEqual("nestedregion1", result.First().NestedRegions.First().Name); }
public void SimpleCall() { const string sourceText = @" var checkResponse = boCardStatusChecker.CheckCardStatus(data); if (!checkResponse.Success) { returnObject.Results.AddRange(checkResponse.Results); return returnObject; } "; var data = new RegionParserTestData { SourceText = sourceText }; RegionParser.Parse(data); Assert.AreEqual("boCardStatusChecker.CheckCardStatus(data);", data.Regions?[0]?.Text); }
protected virtual void MergeOutput(string fullPath, string outputContent) { var outputRegions = RegionParser.ParseRegions(outputContent); var originalContent = File.ReadAllText(fullPath); var originalRegions = RegionParser.ParseRegions(originalContent); var originalBuilder = new StringBuilder(originalContent); int offset = 0; foreach (var pair in outputRegions) { var outputRegion = pair.Value; if (!originalRegions.TryGetValue(pair.Key, out var originalRegion)) { // log error continue; } int startIndex = originalRegion.StartIndex + offset; int beforeReplace = originalBuilder.Length; int length = (originalRegion.EndIndex + offset) - startIndex; originalBuilder.Remove(startIndex, length); originalBuilder.Insert(startIndex, outputRegion.Content); int afterReplace = originalBuilder.Length; offset = offset + (afterReplace - beforeReplace); } var finalContent = originalBuilder.ToString(); if (originalContent == finalContent) { return; } File.WriteAllText(fullPath, finalContent); }
public void SimpleCallWithKnownMethod() { const string sourceText = @" var checkResponse = boCardStatusChecker.CheckCardStatus(data); if (!checkResponse.Success) { returnObject.Results.AddRange(checkResponse.Results); return returnObject; } var x = checkResponse.Value.GetValueOrDefault(); "; var data = new RegionParserTestData { SourceText = sourceText }; RegionParser.Parse(data); Assert.AreEqual("var x = boCardStatusChecker.CheckCardStatus(data).GetValueOrDefault();", data.Regions?[0]?.Text); }
public void ParseRegions() { var parser = new RegionParser(); var source = new StringBuilder(); source.AppendLine(@"using System;"); source.AppendLine(@"using System.Collections.Generic;"); source.AppendLine(@""); source.AppendLine(@"namespace EntityFrameworkCore.Generator.Core.Tests"); source.AppendLine(@"{"); source.AppendLine(@" public partial class User"); source.AppendLine(@" {"); source.AppendLine(@" #region Generated Properties"); source.AppendLine(@" public Guid Id { get; set; }"); source.AppendLine(@" #endregion"); source.AppendLine(@" }"); source.AppendLine(@"}"); var result = parser.ParseRegions(source.ToString()); result.Should().NotBeNull(); result.Count.Should().Be(1); var first = result.Values.First(); first.Should().NotBeNull(); first.Name.Should().Be("Generated Properties"); var content = new StringBuilder(); content.AppendLine(@"#region Generated Properties"); content.AppendLine(@" public Guid Id { get; set; }"); content.AppendLine(@" #endregion"); first.Content.Should().Be(content.ToString()); }
public override async Task ProcessDataAsync() { var scrapedSaleAnnounces = new List <TransportSaleAnnounce>(); while (ItemsCountForStep > scrapedSaleAnnounces.Count) { try { var urlForScrapping = UrlForScrapping + $"&start={ScrappingPage}"; var htmlDocument = await DataLoader.LoadHtmlDocumentAsync(urlForScrapping); var previewOffers = StructureExtractor.GetPreviewOfferStructure(htmlDocument, ScrappingPage).ToList(); for (int i = 0; i < previewOffers.Count; i++) { tryAgain: try { var sourceLink = SourceLinkParser.GetLink(previewOffers[i], BaseUrl); var detailedHtmlDocument = await DataLoader.LoadHtmlDocumentAsync(sourceLink); var detailedOfferNode = StructureExtractor.GetDetailedOfferStructure(detailedHtmlDocument); var(brandId, modelId) = BrandModelParser.ParseForDetailed(detailedOfferNode); var saleAnnounce = new TransportSaleAnnounce() { SourceLink = sourceLink, TransmissionTypeId = TransmissionTypeParser.ParseForDetailed(detailedOfferNode), AdNumber = OfferNumberParser.ParseForDetailed(detailedOfferNode), BodyTypeId = BodyTypeParser.ParseForDetailed(detailedOfferNode), CityId = RegionParser.ParseForDetailed(detailedOfferNode).Id, Description = DescriptionParser.ParseForDetailed(detailedOfferNode), DriveUnitId = DriveUnitParser.ParseForDetailed(detailedOfferNode), EngineVolumetric = EngineVolumetricParser.ParseForDetailed(detailedOfferNode), FuelTypeId = FuelTypeParser.ParseForDetailed(detailedOfferNode), PreviewImageLink = ImageLinkParser.ParseForPreview(previewOffers[i]), Mileage = MileageParser.ParseForDetailed(detailedOfferNode), BrandId = brandId, VehicleTypeId = VehicleTypeParser.ParseForDetailed(detailedOfferNode), ModelId = modelId, PriceInDollars = PriceParser.ParseForDetailed(detailedOfferNode), UpdateOfferTime = PublishDateParser.ParseForDetailed(detailedOfferNode), Year = YearParser.ParseForDetailed(detailedOfferNode), CreatedAt = DateTime.Now, SourceProviderId = (int)SourceProviderEnum.RST }; var carConditionIds = CarConditionParser.ParseForPreview(previewOffers[i]); foreach (var carConditionId in carConditionIds) { saleAnnounce.TransportConditions.Add(new TransportConditionInSaleAnnounce() { TransportConditionId = carConditionId }); } scrapedSaleAnnounces.Add(saleAnnounce); UnitOfWork.TransportSaleAnnouncesRepository.Add(saleAnnounce); await UnitOfWork.SaveChangesAsync(); ScrappingPage++; } catch (WebException) { goto tryAgain; } } } catch (Exception ex) { _logger.LogError($"{ex.Message}\n{ex.StackTrace}"); } } //await UnitOfWork.TransportSaleAnnouncesRepository.InsertRangeSaleAnnounces(scrapedSaleAnnounces); }