Example #1
0
        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));
        }
Example #2
0
        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());
        }