private LoadResult MapToLoadResult([NotNull] RazorTemplateLoadResult razorTemplateLoadResult) { if (razorTemplateLoadResult == null) { throw new ArgumentNullException(nameof(razorTemplateLoadResult)); } var detail = string.Join("\n", razorTemplateLoadResult.Errors ?? new string[0]); Error loadError; switch (razorTemplateLoadResult.Status) { case RazorTemplateLoadResult.LoadResultStatus.Success: return(LoadResult.CreateSuccessResult()); case RazorTemplateLoadResult.LoadResultStatus.CodeCompilationFailed: loadError = new RazorTemplateError(RazorTemplateErrorCodes.CodeCompilationError, detail); break; case RazorTemplateLoadResult.LoadResultStatus.CodeGenerationFailed: loadError = new RazorTemplateError(RazorTemplateErrorCodes.CodeGenerationError, detail); break; default: loadError = new RazorTemplateError(RazorTemplateErrorCodes.GeneralRazorTemplateError, detail); break; } return(LoadResult.CreateFailResult(loadError)); }
public LoadResult Load([NotNull] Stream templateStream) { if (templateStream == null) { throw new ArgumentNullException(nameof(templateStream)); } if (_loadedTemplate != null) { throw new InvalidOperationException("Load can only be called once"); } if (!templateStream.CanRead || !templateStream.CanSeek) { throw new ArgumentException("The supplied stream must be readable and seekable", nameof(templateStream)); } _xmlDeclarationInfo = _xmlDeclarationParser.Parse(templateStream); XmlTemplateLoadResults xmlTemplateLoadResults = _templateLoader.LoadTemplate(templateStream); if (xmlTemplateLoadResults.Success) { _loadedTemplate = xmlTemplateLoadResults.LoadedTemplate; IEnumerable <Error> preferencesLoadErrors = _templatePreferencesLoader.LoadPreferences(_loadedTemplate); if (preferencesLoadErrors.Any()) { return(LoadResult.CreateFailResult(preferencesLoadErrors)); } } //TODO: make result returning more general - this is just another mapping from one result to another return(xmlTemplateLoadResults.TemplateLoadErrors.Any() ? LoadResult.CreateFailResult(xmlTemplateLoadResults.TemplateLoadErrors) : LoadResult.CreateSuccessResult()); }