/// <summary> /// Validate slide. We guarantee that Validate() will be called after BuildUp() /// </summary> public virtual void Validate(SlideLoadingContext context) { var slideLoadingContext = new SlideBuildingContext(context, this); foreach (var block in Blocks) { block.Validate(slideLoadingContext); } }
public Slide Load(byte[] fileContent, SlideLoadingContext context) { var slideFile = context.SlideFile ?? new FileInfo("<internal>"); var slideType = DetectSlideType(fileContent, slideFile.Name); var slide = (Slide)fileContent.DeserializeXml(slideType); slide.BuildUp(context); slide.Validate(context); return(slide); }
/// <summary> /// Building slide and blocks, fill properties, initialize some values. Any work we need to do before work with slide. /// </summary> public virtual void BuildUp(SlideLoadingContext context) { Meta?.FixPaths(context.SlideFile); Info = new SlideInfo(context.Unit, context.SlideFile); if (Blocks == null) { Blocks = new SlideBlock[0]; } /* Validate block types. We should do it before building up blocks */ CheckBlockTypes(); /* ... and build blocks */ var slideLoadingContext = new SlideBuildingContext(context, this); Blocks = Blocks.SelectMany(b => b.BuildUp(slideLoadingContext, ImmutableHashSet <string> .Empty)).ToArray(); DefineBlockTypes(); }
public SlideBuildingContext(SlideLoadingContext slideContext, Slide slide) : this(slideContext.CourseId, slideContext.Unit, slideContext.CourseSettings, slideContext.CourseDirectory, slide) { }
/// <summary> /// Loads slide from XML file /// </summary> /// <returns>Slide, QuizSlide or ExerciseSlide object</returns> public Slide Load(SlideLoadingContext context) { var fileContent = context.SlideFile.ReadAllContent(); return(Load(fileContent, context)); }