예제 #1
0
        /// <summary>
        /// Registers resolvers to be used when generating compilers
        /// </summary>
        /// <param name="resolvers">The resolvers to register</param>
        public static void RegisterResolvers
        (
            params INettleResolver[] resolvers
        )
        {
            Validate.IsNotNull(resolvers);

            lock (_engineLock)
            {
                foreach (var resolver in resolvers)
                {
                    var registered = _resolvers.Any
                                     (
                        r => r.GetType() == resolver.GetType()
                                     );

                    if (false == registered)
                    {
                        _resolvers.Add(resolver);
                    }
                }

                _compiler = null;
            }
        }
        /// <summary>
        /// Renders a template with a given model
        /// </summary>
        /// <param name="templateContent">The template content</param>
        /// <param name="model">The model</param>
        /// <returns>The rendered content</returns>
        public string Render
        (
            string templateContent,
            object model
        )
        {
            if (_nettleCompiler == null)
            {
                var generator = new NettleCompilerGenerator
                                (
                    new ConcatenateQueryCellsFunction(),
                    new GetQueryCellValueFunction(),
                    new GcdFunction(),
                    new AsRatioFunction()
                                );

                _nettleCompiler = generator.Generate();
            }

            var template = _nettleCompiler.Compile
                           (
                templateContent
                           );

            return(template
                   (
                       model
                   ));
        }
예제 #3
0
        /// <summary>
        /// Gets a Nettle compiler instance
        /// </summary>
        /// <returns>The compiler</returns>
        public static INettleCompiler GetCompiler()
        {
            if (_compiler == null)
            {
                lock (_engineLock)
                {
                    _compiler = GenerateCompiler();
                }
            }

            return(_compiler);
        }
예제 #4
0
        public DemoForm()
        {
            InitializeComponent();

            var dataResolver = new NettleDataResolver();

            var connectionString = ConfigurationManager.AppSettings
                                   [
                "DatabaseConnectionString"
                                   ];

            if (false == String.IsNullOrEmpty(connectionString))
            {
                dataResolver.ConnectionRepository.AddConnection
                (
                    new SqlClientConnection
                    (
                        "Demo",
                        connectionString
                    )
                );
            }

            NettleEngine.RegisterResolvers
            (
                new DefaultNettleResolver(),
                new NettleWebResolver(),
                new NettleNCalcResolver(),
                dataResolver
            );

            _compiler = NettleEngine.GetCompiler();

            _compiler.AutoRegisterViews
            (
                "../../Templates"
            );
        }