Exemplo n.º 1
0
        /// <summary>
        /// Constructs a instance of Hogan translator
        /// </summary>
        /// <param name="createJsEngineInstance">Delegate that creates an instance of JS engine</param>
        /// <param name="hoganConfig">Configuration settings of Hogan translator</param>
        public HoganTranslator(Func <IJsEngine> createJsEngineInstance, HoganSettings hoganConfig)
        {
            UseNativeMinification = hoganConfig.UseNativeMinification;
            Variable    = hoganConfig.Variable;
            Namespace   = hoganConfig.Namespace;
            SectionTags = hoganConfig.SectionTags
                          .Cast <SectionTagRegistration>()
                          .Select(s => new SectionTag(s.OpeningTagName, s.ClosingTagName))
                          .ToList()
            ;
            Delimiters = hoganConfig.Delimiters;

            if (string.IsNullOrWhiteSpace(Variable))
            {
                throw new Core.EmptyValueException(Strings.Translators_TemplateVariableNotSpecified);
            }

            if (createJsEngineInstance == null)
            {
                string jsEngineName = hoganConfig.JsEngine.Name;
                if (string.IsNullOrWhiteSpace(jsEngineName))
                {
                    throw new ConfigurationErrorsException(
                              string.Format(CoreStrings.Configuration_JsEngineNotSpecified,
                                            "hogan",
                                            @"
  * JavaScriptEngineSwitcher.Msie
  * JavaScriptEngineSwitcher.V8
  * JavaScriptEngineSwitcher.ChakraCore",
                                            "MsieJsEngine")
                              );
                }

                createJsEngineInstance = () => JsEngineSwitcher.Instance.CreateEngine(jsEngineName);
            }
            _createJsEngineInstance = createJsEngineInstance;
        }
		/// <summary>
		/// Constructs a instance of Hogan-translator
		/// </summary>
		/// <param name="createJsEngineInstance">Delegate that creates an instance of JavaScript engine</param>
		/// <param name="hoganConfig">Configuration settings of Hogan-translator</param>
		public HoganTranslator(Func<IJsEngine> createJsEngineInstance, HoganSettings hoganConfig)
		{
			UseNativeMinification = hoganConfig.UseNativeMinification;
			Variable = hoganConfig.Variable;
			Namespace = hoganConfig.Namespace;
			SectionTags = hoganConfig.SectionTags
				.Cast<SectionTagRegistration>()
				.Select(s => new SectionTag(s.OpeningTagName, s.ClosingTagName))
				.ToList()
				;
			Delimiters = hoganConfig.Delimiters;

			if (string.IsNullOrWhiteSpace(Variable))
			{
				throw new Core.EmptyValueException(Strings.Translators_TemplateVariableNotSpecified);
			}

			if (createJsEngineInstance == null)
			{
				string jsEngineName = hoganConfig.JsEngine.Name;
				if (string.IsNullOrWhiteSpace(jsEngineName))
				{
					throw new ConfigurationErrorsException(
						string.Format(CoreStrings.Configuration_JsEngineNotSpecified,
							"hogan",
							@"
  * JavaScriptEngineSwitcher.Msie
  * JavaScriptEngineSwitcher.V8",
							"MsieJsEngine")
					);
				}

				createJsEngineInstance = (() =>
					JsEngineSwitcher.Current.CreateJsEngineInstance(jsEngineName));
			}
			_createJsEngineInstance = createJsEngineInstance;
		}