public void SaveTranslation(string path) { IAsset file = new Asset(path); TypeScriptTranslator translator = new TypeScriptTranslator(); var compiled = translator.Translate(file); var normalScript = path.Replace("." + FileExtension, ".js"); using (var compiledScript = File.CreateText(HostingEnvironment.MapPath(normalScript))) { compiledScript.Write(compiled.Content); compiledScript.Close(); } }
public IEnumerable<Exception> ValidateTranslation(string path) { var retVal = new List<Exception>(); try { IAsset file = new Asset(path); TypeScriptTranslator translator = new TypeScriptTranslator(); translator.Translate(file); } catch (AssetTranslationException ex) { retVal.Add(ex); } return retVal; }
public void FillingOfDependenciesIsCorrect() { // Arrange var virtualFileSystemMock = new Mock<IVirtualFileSystemWrapper>(); string jqueryTsAssetVirtualPath = UrlHelpers.Combine(SCRIPTS_DIRECTORY_VIRTUAL_PATH, "jquery.d.ts"); virtualFileSystemMock .Setup(fs => fs.FileExists(jqueryTsAssetVirtualPath)) .Returns(true) ; virtualFileSystemMock .Setup(fs => fs.GetFileTextContent(jqueryTsAssetVirtualPath)) .Returns("") ; string iTranslatorBadgeTsAssetVirtualPath = UrlHelpers.Combine(SCRIPTS_DIRECTORY_VIRTUAL_PATH, "ITranslatorBadge.d.ts"); virtualFileSystemMock .Setup(fs => fs.FileExists(iTranslatorBadgeTsAssetVirtualPath)) .Returns(true) ; virtualFileSystemMock .Setup(fs => fs.GetFileTextContent(iTranslatorBadgeTsAssetVirtualPath)) .Returns(@"interface ITranslatorBadge { getText(): string; setText(text: string): void; show(): void; hide(): void; }") ; string translatorBadgeTsAssetVirtualPath = UrlHelpers.Combine(SCRIPTS_DIRECTORY_VIRTUAL_PATH, "TranslatorBadge.ts"); virtualFileSystemMock .Setup(fs => fs.FileExists(translatorBadgeTsAssetVirtualPath)) .Returns(true) ; virtualFileSystemMock .Setup(fs => fs.GetFileTextContent(translatorBadgeTsAssetVirtualPath)) .Returns(@"/// <reference path=""jquery.d.ts"" /> /* /// <reference path=""typings/knockout/knockout.d.ts"" /> */ /// <reference path=""//netdna.bootstrapcdn.com/bootstrap/3.0.0/typings/bootstrap.d.ts"" /> /// <reference path=""ITranslatorBadge.d.ts"" /> class TranslatorBadge implements ITranslatorBadge { public $badgeElem: any; public $linkElem: any; constructor (public elementId: string) { this.$badgeElem = jQuery(""#"" + elementId); this.$linkElem = this.$badgeElem.find(""A:first""); } public getText(): string { return this.$linkElem.text(); } public setText(text: string): void { this.$linkElem.text(text); } public show(): void { this.$badgeElem.show(0); } public hide(): void { this.$badgeElem.hide(0); } }") ; string coloredTranslatorBadgeTsAssetVirtualPath = UrlHelpers.Combine(SCRIPTS_DIRECTORY_VIRTUAL_PATH, "ColoredTranslatorBadge.ts"); virtualFileSystemMock .Setup(fs => fs.FileExists(coloredTranslatorBadgeTsAssetVirtualPath)) .Returns(true) ; virtualFileSystemMock .Setup(fs => fs.GetFileTextContent(coloredTranslatorBadgeTsAssetVirtualPath)) .Returns(@"/// <reference path=""jquery.d.ts"" /> /// <reference path=""TranslatorBadge.ts"" /> class ColoredTranslatorBadge extends TranslatorBadge { public getTextColor(): string { return this.$linkElem.css(""color""); } public setTextColor(color: string): void { this.$linkElem.css(""color"", color); } public getBorderColor(): string { return this.$badgeElem.css(""border-color""); } public setBorderColor(color: string) { this.$badgeElem.css(""border-color"", color); } }") ; Func<IJsEngine> createJsEngineInstance = () => (new Mock<IJsEngine>()).Object; IVirtualFileSystemWrapper virtualFileSystemWrapper = virtualFileSystemMock.Object; var relativePathResolver = new MockRelativePathResolver(); var tsConfig = new TypeScriptSettings(); var tsTranslator = new TypeScriptTranslator(createJsEngineInstance, virtualFileSystemWrapper, relativePathResolver, tsConfig); const string assetContent = @"/// <reference path=""ColoredTranslatorBadge.ts"" /> var TS_BADGE_TEXT = ""TypeScript""; var TS_BADGE_COLOR = ""#0074C1""; var tsBadge = new ColoredTranslatorBadge(""ts""); tsBadge.setText(TS_BADGE_TEXT); tsBadge.setTextColor(TS_BADGE_COLOR); tsBadge.setBorderColor(TS_BADGE_COLOR);"; string assetUrl = UrlHelpers.Combine(SCRIPTS_DIRECTORY_URL, "TestTypeScript.ts"); TsScript script = tsTranslator.PreprocessScript(assetContent, assetUrl); var dependencies = new DependencyCollection(); // Act tsTranslator.FillDependencies(assetUrl, script, dependencies); // Assert Assert.AreEqual(4, dependencies.Count); Dependency coloredTranslatorBadgeTsAsset = dependencies[0]; Dependency jqueryTsAsset = dependencies[1]; Dependency translatorBadgeTsAsset = dependencies[2]; Dependency iTranslatorBadgeTsAsset = dependencies[3]; Assert.AreEqual(coloredTranslatorBadgeTsAssetVirtualPath, coloredTranslatorBadgeTsAsset.Url); Assert.AreEqual(true, coloredTranslatorBadgeTsAsset.IsObservable); Assert.AreEqual(jqueryTsAssetVirtualPath, jqueryTsAsset.Url); Assert.AreEqual(true, jqueryTsAsset.IsObservable); Assert.AreEqual(translatorBadgeTsAssetVirtualPath, translatorBadgeTsAsset.Url); Assert.AreEqual(true, translatorBadgeTsAsset.IsObservable); Assert.AreEqual(iTranslatorBadgeTsAssetVirtualPath, iTranslatorBadgeTsAsset.Url); Assert.AreEqual(true, iTranslatorBadgeTsAsset.IsObservable); }
public static void RegisterBundles(BundleCollection bundles) { // bundles.IgnoreList.Clear(); // AddDefaultIgnorePatterns(bundles.IgnoreList); //NOTE: it's bundles.DirectoryFilter in Microsoft.AspNet.Web.Optimization.1.1.3 and not bundles.IgnoreList var engine = new V8JsEngine(); var uglySettings = new UglifySettings(); uglySettings.Js.CodeGeneration.Beautify = true; bundles.UseCdn = false; var uglifyJsMinifier = new UglifyJsMinifier(() => engine, uglySettings) { CompressionOptions = { Angular = true }, ParsingOptions = new ParsingOptions { Strict = true }, CodeGenerationOptions = new CodeGenerationOptions() }; var lessTranslator = new LessTranslator(); var cssTransformer = new CssTransformer(new CleanCssMinifier(), new ITranslator[] { lessTranslator }); var tsTranslater = new TypeScriptTranslator(); var jsTransformer = new JsTransformer(uglifyJsMinifier, new List<ITranslator> { tsTranslater }); var jsBundle = new CustomScriptBundle("~/bundles/js"); jsBundle.IncludeDirectory("~/scripts", "*.js", true); jsBundle.IncludeDirectory("~/scripts", "*.map", true); bundles.IgnoreList.Ignore("angular-mocks.js"); bundles.IgnoreList.Ignore("angular-scenario.js"); // jsBundle.IncludeDirectory("~/scripts/angular-dialog-service-5.1.2", "*.js", true); jsBundle.Builder = new DefaultBundleBuilder(); jsBundle.Orderer = new JsBundlerOrderer(); jsBundle.Transforms.Add(jsTransformer); bundles.Add(jsBundle); var typeScriptBundle = new CustomScriptBundle("~/bundles/ts"); //// Typescript generatred locally via visual studio and checked in - not done on the fly typeScriptBundle.IncludeDirectory("~/app", "*.js", true); typeScriptBundle.Transforms.Add(jsTransformer); typeScriptBundle.Builder = new DefaultBundleBuilder(); typeScriptBundle.Orderer = new JsBundlerOrderer(); bundles.Add(typeScriptBundle); var lessCssBundle = new Bundle("~/bundles/less"); lessCssBundle.Include("~/Content/bootstrap/bootstrap.less"); lessCssBundle.Builder = new DefaultBundleBuilder(); lessCssBundle.Transforms.Add(cssTransformer); lessCssBundle.Orderer = new DefaultBundleOrderer(); bundles.Add(lessCssBundle); var cssBundle = new StyleBundle("~/bundles/css"); cssBundle.IncludeDirectory("~/Content/Bootstrap", "*.css", false); cssBundle.IncludeDirectory("~/Content/", "*.css", false); cssBundle.IncludeDirectory("~/Content/css", "*.css", false); cssBundle.Builder = new DefaultBundleBuilder(); cssBundle.Transforms.Add(cssTransformer); cssBundle.Orderer = new PushToTopOrderer("bootstrap"); bundles.Add(cssBundle); var publicCssBundle = new StyleBundle("~/bundles/public/css"); publicCssBundle.IncludeDirectory("~/Content/public", "*.css", true); publicCssBundle.Builder = new DefaultBundleBuilder(); publicCssBundle.Transforms.Add(cssTransformer); publicCssBundle.Orderer = new PushToTopOrderer("bootstrap"); bundles.Add(publicCssBundle); }