/// <summary>
        /// Translates a code of assets written on Handlebars to JS code
        /// </summary>
        /// <param name="assets">Set of assets with code written on Handlebars</param>
        /// <returns>Set of assets with translated code</returns>
        public IList <IAsset> Translate(IList <IAsset> assets)
        {
            if (assets == null)
            {
                throw new ArgumentNullException(
                          nameof(assets),
                          string.Format(CoreStrings.Common_ArgumentIsNull, nameof(assets))
                          );
            }

            if (assets.Count == 0)
            {
                return(assets);
            }

            var assetsToProcessing = assets.Where(a => a.AssetTypeCode == Constants.AssetTypeCode.Handlebars).ToList();

            if (assetsToProcessing.Count == 0)
            {
                return(assets);
            }

            CompilationOptions options = CreateCompilationOptions();

            using (var handlebarsCompiler = new HandlebarsCompiler(_createJsEngineInstance, options))
            {
                foreach (var asset in assetsToProcessing)
                {
                    InnerTranslate(asset, handlebarsCompiler);
                }
            }

            return(assets);
        }
Beispiel #2
0
        public void TestCompiler()
        {
            //lazy test
            var hc       = new HandlebarsCompiler();
            var template = hc.Precompile("asdf {{asdf}}", false);

            Assert.IsNotNull(template);
            Assert.IsTrue(template.IndexOf("asdf") > 0);
        }
        public HandlebarsEnvironment(HandlebarsConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            _compiler = new HandlebarsCompiler(configuration);

            Configuration = configuration;
            RegisterBuiltinHelpers();
        }
        /// <summary>
        /// Translates a code of asset written on Handlebars to JS code
        /// </summary>
        /// <param name="asset">Asset with code written on Handlebars</param>
        /// <returns>Asset with translated code</returns>
        public IAsset Translate(IAsset asset)
        {
            if (asset == null)
            {
                throw new ArgumentException(CoreStrings.Common_ValueIsEmpty, "asset");
            }

            CompilationOptions options = CreateCompilationOptions();

            using (var handlebarsCompiler = new HandlebarsCompiler(_createJsEngineInstance, options))
            {
                InnerTranslate(asset, handlebarsCompiler);
            }

            return(asset);
        }
        /// <summary>
        /// Translates a code of asset written on Handlebars to JS code
        /// </summary>
        /// <param name="asset">Asset with code written on Handlebars</param>
        /// <returns>Asset with translated code</returns>
        public IAsset Translate(IAsset asset)
        {
            if (asset == null)
            {
                throw new ArgumentNullException(
                          nameof(asset),
                          string.Format(CoreStrings.Common_ArgumentIsNull, nameof(asset))
                          );
            }

            CompilationOptions options = CreateCompilationOptions();

            using (var handlebarsCompiler = new HandlebarsCompiler(_createJsEngineInstance, options))
            {
                InnerTranslate(asset, handlebarsCompiler);
            }

            return(asset);
        }
        private void InnerTranslate(IAsset asset, HandlebarsCompiler handlebarsCompiler)
        {
            string newContent;
            string assetUrl = asset.Url;

            try
            {
                newContent = handlebarsCompiler.Compile(asset.Content, assetUrl);
            }
            catch (HandlebarsCompilationException e)
            {
                throw new AssetTranslationException(
                          string.Format(CoreStrings.Translators_TranslationSyntaxError,
                                        INPUT_CODE_TYPE, OUTPUT_CODE_TYPE, assetUrl, e.Message));
            }
            catch (Exception e)
            {
                throw new AssetTranslationException(
                          string.Format(CoreStrings.Translators_TranslationFailed,
                                        INPUT_CODE_TYPE, OUTPUT_CODE_TYPE, assetUrl, e.Message));
            }

            asset.Content = newContent;
        }
		private void InnerTranslate(IAsset asset, HandlebarsCompiler handlebarsCompiler)
		{
			string newContent;
			string assetVirtualPath = asset.VirtualPath;

			try
			{
				newContent = handlebarsCompiler.Compile(asset.Content, assetVirtualPath);
			}
			catch (HandlebarsCompilingException e)
			{
				throw new AssetTranslationException(
					string.Format(CoreStrings.Translators_TranslationSyntaxError,
						INPUT_CODE_TYPE, OUTPUT_CODE_TYPE, assetVirtualPath, e.Message));
			}
			catch (Exception e)
			{
				throw new AssetTranslationException(
					string.Format(CoreStrings.Translators_TranslationFailed,
						INPUT_CODE_TYPE, OUTPUT_CODE_TYPE, assetVirtualPath, e.Message));
			}

			asset.Content = newContent;
		}
		/// <summary>
		/// Translates a code of assets written on Handlebars to JS-code
		/// </summary>
		/// <param name="assets">Set of assets with code written on Handlebars</param>
		/// <returns>Set of assets with translated code</returns>
		public IList<IAsset> Translate(IList<IAsset> assets)
		{
			if (assets == null)
			{
				throw new ArgumentException(CoreStrings.Common_ValueIsEmpty, "assets");
			}

			if (assets.Count == 0)
			{
				return assets;
			}

			var assetsToProcessing = assets.Where(a => a.AssetTypeCode == Constants.AssetTypeCode.Handlebars).ToList();
			if (assetsToProcessing.Count == 0)
			{
				return assets;
			}

			CompilationOptions options = CreateCompilationOptions();

			using (var handlebarsCompiler = new HandlebarsCompiler(_createJsEngineInstance, options))
			{
				foreach (var asset in assetsToProcessing)
				{
					InnerTranslate(asset, handlebarsCompiler);
				}
			}

			return assets;
		}
		/// <summary>
		/// Translates a code of asset written on Handlebars to JS-code
		/// </summary>
		/// <param name="asset">Asset with code written on Handlebars</param>
		/// <returns>Asset with translated code</returns>
		public IAsset Translate(IAsset asset)
		{
			if (asset == null)
			{
				throw new ArgumentException(CoreStrings.Common_ValueIsEmpty, "asset");
			}

			CompilationOptions options = CreateCompilationOptions();

			using (var handlebarsCompiler = new HandlebarsCompiler(_createJsEngineInstance, options))
			{
				InnerTranslate(asset, handlebarsCompiler);
			}

			return asset;
		}