TerrificNet.ViewEngine.SchemaProviders.HandlebarsViewSchemaProvider.GetSchemaFromTemplateAsync C# (CSharp) Method

GetSchemaFromTemplateAsync() public method

public GetSchemaFromTemplateAsync ( TemplateInfo template ) : Task
template TemplateInfo
return Task
        public Task<JSchema> GetSchemaFromTemplateAsync(TemplateInfo template)
        {
            var extractor = new SchemaExtractor(new HandlebarsParser());
            var helperHandlers = _helperHandlerFactory != null ? _helperHandlerFactory.Create().ToArray() : null;

            // TODO: Use async
            var schema = extractor.Run(template.Id, new StreamReader(template.Open()), _memberLocator, helperHandlers);
            if (schema != null && string.IsNullOrEmpty(schema.Title))
                schema.Title = string.Concat(template.Id, "Model");

            return Task.FromResult(schema);
        }
    }

Usage Example

Beispiel #1
0
		public async Task TemplateEngineShouldUseSameNamingConventionForBinding()
		{
			var cacheProvider = new MemoryCacheProvider();
			var handlerFactory = new Mock<IHelperHandlerFactory>();

			handlerFactory.Setup(f => f.Create()).Returns(Enumerable.Empty<IHelperHandler>());

			var namingRule = new NamingRule();
			var schemaProvider = new HandlebarsViewSchemaProvider(null, new MemberLocatorFromNamingRule(namingRule));
			var codeGenerator = new JsonSchemaCodeGenerator(namingRule);
			const string input = "<p>{{name}}</p><p>{{first_name}}</p>";
			var templateInfo = new StringTemplateInfo("views/test", input);

			var schema = await schemaProvider.GetSchemaFromTemplateAsync(templateInfo).ConfigureAwait(false);
			var modelType = codeGenerator.Compile(schema);

			var viewEngine = new VeilViewEngine(cacheProvider, handlerFactory.Object, namingRule);

			var view = await viewEngine.CreateViewAsync(templateInfo, modelType).ConfigureAwait(false);

			var model = Activator.CreateInstance(modelType);

			modelType.GetProperty("Name").SetValue(model, "{{name}}");
			modelType.GetProperty("FirstName").SetValue(model, "{{first_name}}");

			var writer = new StringWriter();
			view.Render(model, new RenderingContext(writer));
			var stringResult = writer.ToString();

			Assert.AreEqual(input, stringResult);
		}
All Usage Examples Of TerrificNet.ViewEngine.SchemaProviders.HandlebarsViewSchemaProvider::GetSchemaFromTemplateAsync