public async Task <List <RenderedSlide> > RenderProject(Project project, IProgress <int> progress) { List <RenderedSlide> slides = new List <RenderedSlide>(); try { await Task.Run(() => { SlideRenderer sr = new SlideRenderer(project); progress.Report(0); int completedslidecount = 0; Parallel.ForEach(project.Slides, new ParallelOptions() { MaxDegreeOfParallelism = 4 }, (Slide s) => { slides.Add(sr.RenderSlide(s, Messages)); Interlocked.Increment(ref completedslidecount); int prog = (int)(completedslidecount / (double)project.Slides.Count * 100); progress.Report(prog); }); }); } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Master Renderer Exception"); } return(slides.OrderBy(s => s.Number).ToList()); }
public void RendersYaml() { const string frontMatter = "title: Pass"; const string markdown = "# Pass"; var target = new SlideRenderer(); var actual = target.Render(frontMatter, markdown); Assert.Equal("Pass", actual.Metadata["title"]); }
public void LeavesArbitraryTags() { const string frontMatter = "title: Pass"; const string markdown = "<sub>2</sub><script>hack();</script>"; var target = new SlideRenderer(); var actual = target.Render(frontMatter, markdown); Assert.Equal("<p><sub>2</sub><script>hack();</script></p>", actual.Html.Trim()); }
public void DisablesScriptTags() { const string frontMatter = "title: Pass"; const string markdown = "<script>hack();</script>"; var target = new SlideRenderer(); var actual = target.Render(frontMatter, markdown); Assert.Equal("<script>hack();</script>", actual.Html.Trim()); }
public void RendersH1Tag() { const string frontMatter = "title: Pass"; const string markdown = "# Pass"; var target = new SlideRenderer(); var actual = target.Render(frontMatter, markdown); Assert.Equal("<h1>Pass</h1>", actual.Html.Trim()); }
public void OneTimeSetUp() { Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); videoAnnotationsClient = Mock.Of <IUlearnVideoAnnotationsClient>(); slideRenderer = new SlideRenderer(videoAnnotationsClient, null, null, null); loader = new XmlSlideLoader(); courseSettings = new CourseSettings(CourseSettings.DefaultSettings); courseSettings.Scoring.Groups.Add("ScoringGroup1", new ScoringGroup { Id = "ScoringGroup1" }); unit = new Unit(UnitSettings.CreateByTitle("Unit title", courseSettings), new DirectoryInfo(testDataDirectory)); }
public ExerciseStatisticsController(IWebCourseManager courseManager, IUserSolutionsRepo userSolutionsRepo, UlearnDb db, IUsersRepo usersRepo, IUserSolutionsRepo solutionsRepo, IUserQuizzesRepo userQuizzesRepo, IVisitsRepo visitsRepo, IGroupsRepo groupsRepo, SlideRenderer slideRenderer, ICourseRolesRepo courseRolesRepo, ICoursesRepo coursesRepo) : base(courseManager, db, usersRepo) { this.coursesRepo = coursesRepo; this.courseRolesRepo = courseRolesRepo; this.userSolutionsRepo = userSolutionsRepo; this.solutionsRepo = solutionsRepo; this.userQuizzesRepo = userQuizzesRepo; this.visitsRepo = visitsRepo; this.groupsRepo = groupsRepo; this.slideRenderer = slideRenderer; }
public CoursesController(IWebCourseManager courseManager, UlearnDb db, ICoursesRepo coursesRepo, IUsersRepo usersRepo, ICourseRolesRepo courseRolesRepo, IUnitsRepo unitsRepo, IUserSolutionsRepo solutionsRepo, IUserQuizzesRepo userQuizzesRepo, IVisitsRepo visitsRepo, IGroupsRepo groupsRepo, IGroupMembersRepo groupMembersRepo, IGroupAccessesRepo groupAccessesRepo, SlideRenderer slideRenderer, ITempCoursesRepo tempCoursesRepo) : base(courseManager, db, usersRepo) { this.coursesRepo = coursesRepo; this.courseRolesRepo = courseRolesRepo; this.unitsRepo = unitsRepo; this.solutionsRepo = solutionsRepo; this.userQuizzesRepo = userQuizzesRepo; this.visitsRepo = visitsRepo; this.groupsRepo = groupsRepo; this.groupMembersRepo = groupMembersRepo; this.groupAccessesRepo = groupAccessesRepo; this.slideRenderer = slideRenderer; this.tempCoursesRepo = tempCoursesRepo; }