public static Tokenizer GetFor(DemoLanguage language) { var startFinder = RegionStartFinders[language]; var endFinder = RegionEndFinders[language]; return(new Tokenizer(startFinder, endFinder)); }
public Demo GetDemo(DemoLanguage language, string categoryName, string demoName) { if (CategoriesForLanguages.ContainsKey(language) == false) { throw new InvalidOperationException($"There are no categories for language: {language}."); } var categoriesForLanguage = CategoriesForLanguages[language]; var category = categoriesForLanguage.SingleOrDefault(x => string.Equals(x.Slug, categoryName, StringComparison.OrdinalIgnoreCase)); if (category == null) { throw new InvalidOperationException($"Category {categoryName} was not found."); } var demo = category.Demos.SingleOrDefault(x => string.Equals(x.Slug, demoName, StringComparison.OrdinalIgnoreCase)); if (demo == null) { throw new InvalidOperationException($"Demo {demoName} was not found in category {categoryName}."); } return(demo); }
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 CategoriesForLanguage GetCategoriesForLanguage(DemoLanguage language) { var categories = CategoriesForLanguages[language]; var categoriesForLanguages = categories.Select(ToCategoryForLanguage).ToList(); return(new CategoriesForLanguage { Language = language, Categories = categoriesForLanguages }); }
public IActionResult GetDemo(DemoLanguage language, string categoryName, string demoName) { var demo = _demoContainer.GetDemo(language, categoryName, demoName); if (demo == null) { return(NotFound()); } var dto = DemoDto.FromModel(demo); dto.StudioUrl = GetStudioUrl(demo); return(Ok(dto)); }
public IActionResult GetDemo(DemoLanguage language, string categoryName, string demoName) { try { var demo = _demoContainer.GetDemo(language, categoryName, demoName); var dto = DemoDto.FromModel(demo); dto.StudioUrl = GetStudioUrl(demo); return(Ok(dto)); } catch (InvalidOperationException e) { _logger.LogError(e, "An error occured during demo fetching."); return(NotFound()); } }
private void ParseLanguage(DemoLanguage language, string sourceFolder) { var parserSettings = new ParserSettings { SourceCodeFolder = sourceFolder, Language = language }; var parser = new Parser(parserSettings); try { var result = parser.Run(); CategoriesForLanguages[language] = result.ToList(); } catch (Exception e) { _logger.LogError(e, "Error during source code parsing."); } }
protected DemoCodeBuilder GetBuilder(string filePath, DemoLanguage language) => DemoCodeBuilder.Initialize(filePath, language);