public static void RegisterBundles(BundleCollection bundles) { var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); var js = new ScriptBundle("~/bundles/js").Include( "~/Scripts/jquery-{version}.js", "~/Scripts/bootstrap.js", "~/Scripts/less.min.js", "~/Scripts/moment.js", "~/Scripts/main.js", "~/Scripts/jquery.quick.pagination.min.js", "~/Scripts/bootstrap-fileupload.min.js" ); js.Transforms.Add(jsTransformer); js.Orderer = nullOrderer; bundles.Add(js); var css = new StyleBundle("~/bundles/css").Include( "~/Content/less/bootstrap.less", "~/Content/styles.css", "~/Content/custom.css", "~/Content/bootstrap-fileupload.min.css" ); css.Transforms.Add(cssTransformer); css.Orderer = nullOrderer; bundles.Add(css); }
public static void RegisterBundles(BundleCollection bundles) { bundles.UseCdn = true; var nullBuilder = new NullBuilder(); var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); /*Common Styles */ var commonStylesBundle = new Bundle("~/Bundles/CommonStyles"); commonStylesBundle.Include("~/Content/bootstrap.css"); commonStylesBundle.Builder = nullBuilder; commonStylesBundle.Transforms.Add(cssTransformer); commonStylesBundle.Orderer = nullOrderer; bundles.Add(commonStylesBundle); /*App Css */ var appStylesBundle = new Bundle("~/Bundles/AppStyles"); appStylesBundle.Include( "~/App/css/base.css", "~/App/css/custom.css"); appStylesBundle.Builder = nullBuilder; appStylesBundle.Transforms.Add(cssTransformer); appStylesBundle.Orderer = nullOrderer; bundles.Add(appStylesBundle); }
public LoopTransformer(JsTransformer transformer, StatementSyntax loop, int loopDepth, StatementSyntax body) { this.transformer = transformer; idioms = transformer.idioms; this.loopDepth = loopDepth; this.body = body; loopNode = loop; }
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 public static void RegisterBundles(BundleCollection bundles) { BundleTable.EnableOptimizations = false; bundles.UseCdn = true; var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); var cssBundle = new CustomStyleBundle("~/bundles/css"); cssBundle.Include("~/Content/Site.less", "~/Content/bootstrap/bootstrap.less"); cssBundle.Transforms.Add(cssTransformer); cssBundle.Orderer = nullOrderer; bundles.Add(cssBundle); var jqueryBundle = new CustomScriptBundle("~/bundles/jquery"); jqueryBundle.Include("~/Scripts/jquery-{version}.js"); jqueryBundle.Transforms.Add(jsTransformer); jqueryBundle.Orderer = nullOrderer; bundles.Add(jqueryBundle); var jqueryvalBundle = new CustomScriptBundle("~/bundles/jqueryval"); jqueryvalBundle.Include("~/Scripts/jquery.validate*"); jqueryvalBundle.Transforms.Add(jsTransformer); jqueryvalBundle.Orderer = nullOrderer; bundles.Add(jqueryvalBundle); // Use the development version of Modernizr to develop with and learn from. Then, when you're // ready for production, use the build tool at http://modernizr.com to pick only the tests you need. var modernizrBundle = new CustomScriptBundle("~/bundles/modernizr"); modernizrBundle.Include("~/Scripts/modernizr-*"); modernizrBundle.Transforms.Add(jsTransformer); modernizrBundle.Orderer = nullOrderer; bundles.Add(modernizrBundle); var bootstrapBundle = new CustomScriptBundle("~/bundles/bootstrap"); bootstrapBundle.Include("~/Scripts/bootstrap.js", "~/Scripts/respond.js"); bootstrapBundle.Transforms.Add(jsTransformer); bootstrapBundle.Orderer = nullOrderer; bundles.Add(bootstrapBundle); var angularBundle = new CustomScriptBundle("~/bundles/angular"); angularBundle.Include("~/Scripts/angular*"); angularBundle.Transforms.Add(jsTransformer); angularBundle.Orderer = nullOrderer; bundles.Add(angularBundle); }
public static void RegisterBundles(BundleCollection bundles) { var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); var commonStylesBundle = new Bundle("~/Bundles/Styles"); commonStylesBundle.Include( "~/stylesheets/screen.css"); commonStylesBundle.Transforms.Add(cssTransformer); commonStylesBundle.Orderer = nullOrderer; bundles.Add(commonStylesBundle); //var modernizrBundle = new Bundle("~/Bundles/Modernizr"); //modernizrBundle.Include("~/Scripts/modernizr-2.*"); //modernizrBundle.Transforms.Add(jsTransformer); //modernizrBundle.Orderer = nullOrderer; //bundles.Add(modernizrBundle); var commonScriptsBundle = new Bundle("~/Bundles/ProjectAether"); commonScriptsBundle.Include(//"~/ProjectAether/libs/knockout.debug.js", "~/libs/underscore.js", "~/libs/underscore-ko-1.1.0.js", "~/libs/hash/jshashset.js", "~/libs/hash/jshashtable.js", "~/app/helper.js") .IncludeDirectory("~/app", "*.js", true); commonScriptsBundle.Transforms.Add(jsTransformer); commonScriptsBundle.Orderer = nullOrderer; bundles.Add(commonScriptsBundle); var testScriptsBundle = new Bundle("~/Bundles/Tests"); testScriptsBundle.Include(//"~/ProjectAether/libs/knockout.debug.js", "~/libs/underscore.js", "~/libs/underscore-ko-1.1.0.js", "~/libs/hash/jshashset.js", "~/libs/hash/jshashtable.js", "~/app/helper.js") .IncludeDirectory("~/tests/app", "*.js", true); testScriptsBundle.Transforms.Add(jsTransformer); testScriptsBundle.Orderer = nullOrderer; bundles.Add(testScriptsBundle); }
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 public static void RegisterBundles(BundleCollection bundles) { bundles.UseCdn = true; var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); #region Script Bundle var jqueryBundle = new CustomScriptBundle("~/bundles/jquery"); jqueryBundle.Include("~/Scripts/jquery-{version}.js"); jqueryBundle.Transforms.Add(jsTransformer); jqueryBundle.Orderer = nullOrderer; bundles.Add(jqueryBundle); var jqueryvalBundle = new CustomScriptBundle("~/bundles/jqueryval"); jqueryvalBundle.Include("~/Scripts/jquery.validate*"); jqueryvalBundle.Transforms.Add(jsTransformer); jqueryvalBundle.Orderer = nullOrderer; bundles.Add(jqueryvalBundle); var modernizrBundle = new CustomScriptBundle("~/bundles/modernizr"); modernizrBundle.Include("~/Scripts/modernizr-*"); modernizrBundle.Transforms.Add(jsTransformer); modernizrBundle.Orderer = nullOrderer; bundles.Add(modernizrBundle); var bootstrapBundle = new CustomScriptBundle("~/bundles/bootstrap"); bootstrapBundle.Include("~/Scripts/bootstrap.js", "~/Scripts/respond.js"); bootstrapBundle.Transforms.Add(jsTransformer); bootstrapBundle.Orderer = nullOrderer; bundles.Add(bootstrapBundle); var createjsBundle = new CustomScriptBundle("~/bundles/createjs"); createjsBundle.Include("~/Scripts/createjs-2013.12.12.min.js"); createjsBundle.Transforms.Add(jsTransformer); createjsBundle.Orderer = nullOrderer; bundles.Add(createjsBundle); #endregion Script Bundle #region Style Bundle var cssBundle = new CustomStyleBundle("~/bundles/css"); cssBundle.Include( "~/Content/bootstrap/bootstrap.less", "~/Content/Site.css"); cssBundle.Transforms.Add(cssTransformer); cssBundle.Orderer = nullOrderer; bundles.Add(cssBundle); #endregion Style Bundle }
public BaseStateGenerator(Func <BaseStateGenerator, JsTransformer> transformer, CSharpSyntaxNode node, JsBlockStatement stateMachineBody, Idioms idioms, IMethodSymbol method, Action <BaseStateGenerator, JsTransformer> nodeAcceptor = null) { if (nodeAcceptor == null) { nodeAcceptor = (stateGenerator, jsTransformer) => node.Accept(stateGenerator); } this.transformer = transformer(this); this.node = node; this.stateMachineBody = stateMachineBody; this.method = method; this.idioms = idioms; this.nodeAcceptor = nodeAcceptor; }
// For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725 public static void RegisterBundles(BundleCollection bundles) { var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var cssMinifier = new CssMinify(); var jsMinifier = new JsMinify(); var nullOrderer = new NullOrderer(); // Script Bundles // const string jQueryCdnPath = "http://code.jquery.com/jquery-1.9.1.min.js"; bundles.Add(new ScriptBundle("~/bundles/global") .Include("~/Content/custom/scripts/global.js")); bundles.Add(new ScriptBundle("~/bundles/admin") //.Include("~/Content/scripts/jquery-autogrow-textarea.js") .Include("~/Content/scripts/ace/ace.js") .Include("~/Content/scripts/ace/theme-clouds.js") .Include("~/Content/scripts/ace/mode-html.js")); // Style Bundles var mainBundle = new Bundle("~/Content/global") .Include("~/Content/font-awesome/css/font-awesome.min.css") .Include("~/Content/custom/less/custom.less") .Include("~/Content/custom/less/shCoreDefault.less") .Include("~/Content/custom/less/shThemeDefault.less"); mainBundle.Transforms.Add(cssTransformer); mainBundle.Transforms.Add(cssMinifier); mainBundle.Orderer = nullOrderer; bundles.Add(mainBundle); var adminBundle = new Bundle("~/Content/admin"); adminBundle.Transforms.Add(cssTransformer); mainBundle.Transforms.Add(cssMinifier); adminBundle.Orderer = nullOrderer; bundles.Add(adminBundle); //BundleTable.EnableOptimizations = true; // executing this line will force bundling and minification by overwriting whatever stands in web.config // #if DEBUG // BundleTable.EnableOptimizations = false; // #endif }
public static void RegisterBundles(BundleCollection bundles) { var cssTransformer = new CssTransformer(new YuiCssMinifier()); var jsTransformer = new JsTransformer(new UglifyJsMinifier()); var nullOrderer = new NullOrderer(); // Lib CSS Bundle libCss = new Bundle("~/bundles/css_lib").IncludeDirectory("~/Content/css/lib/aui", "*.css"); //libCss.Transforms.Add(cssTransformer); bundles.Add(libCss); // App CSS Bundle appCss = new Bundle("~/bundles/css_app").Include("~/Content/css/app/bootstrap.less", new CssRewriteUrlTransform()); appCss.Transforms.Add(cssTransformer); bundles.Add(appCss); // // App CSS // Bundle appCss = new Bundle("~/bundles/css_app").Include("~/Content/less/app/bootstrap.less", new CssRewriteUrlTransform()); // appCss.Transforms.Add(cssTransformer); // bundles.Add(appCss); // Lib JS Bundle libJs = new Bundle("~/bundles/js_lib").Include( "~/Scripts/jquery-{version}.js", "~/Content/js/lib/aui/aui-all.js"); libJs.Transforms.Add(jsTransformer); libJs.Orderer = nullOrderer; bundles.Add(libJs); #if (DEBUG && !DEBUGMINIFIED) BundleTable.EnableOptimizations = false; #else BundleTable.EnableOptimizations = true; #endif }
public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-1.*")); bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include( "~/Scripts/jquery-ui*", "~/Scripts/jquery.ui*")); bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.unobtrusive*", "~/Scripts/jquery.validate*")); bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( "~/Scripts/modernizr-*")); bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css")); bundles.Add(new StyleBundle("~/Content/themes/base/css").Include( "~/Content/themes/base/jquery.ui.core.css", "~/Content/themes/base/jquery.ui.resizable.css", "~/Content/themes/base/jquery.ui.selectable.css", "~/Content/themes/base/jquery.ui.accordion.css", "~/Content/themes/base/jquery.ui.autocomplete.css", "~/Content/themes/base/jquery.ui.button.css", "~/Content/themes/base/jquery.ui.dialog.css", "~/Content/themes/base/jquery.ui.slider.css", "~/Content/themes/base/jquery.ui.tabs.css", "~/Content/themes/base/jquery.ui.datepicker.css", "~/Content/themes/base/jquery.ui.progressbar.css", "~/Content/themes/base/jquery.ui.theme.css")); // MyJs bundles.Add(new Bundle("~/MyJs").Include( "~/Scripts/jquery.nailthumb.1.1.js", "~/Scripts/jquery.mousewheel.js", "~/Scripts/jquery.jscrollpane.js", "~/Scripts/jquery.ba-bbq.js", "~/Scripts/jquery.ba-resize.js" )); // MyCss bundles.Add(new Bundle("~/Content/MyCss").Include( "~/Content/jquery.nailthumb.1.1.css", "~/Content/jquery.jscrollpane1.css" )); var jsTransformer = new JsTransformer(); var cssTransformer = new CssTransformer(); var nullOrderer = new NullOrderer(); var cssMinify = new CssMinify(); var jsMinify = new JsMinify(); // MyCoffee var bundle = new Bundle("~/MyCoffee").Include( "~/Scripts/EntryRenderer.coffee", "~/Scripts/HomePresenter.coffee", "~/Scripts/Application.coffee" ); bundle.Transforms.Add(jsTransformer); if ("true".Equals(ConfigurationManager.AppSettings["CoffeeMinify"])) { bundle.Transforms.Add(jsMinify); } bundle.Orderer = nullOrderer; bundles.Add(bundle); // MySass bundle = new Bundle("~/Content/MySass").Include( "~/Content/enews.sass" ); bundle.Transforms.Add(cssTransformer); if ("true".Equals(ConfigurationManager.AppSettings["SassMinify"])) { bundle.Transforms.Add(cssMinify); } bundle.Orderer = nullOrderer; bundles.Add(bundle); }
public static void RegisterBundles(BundleCollection bundles) { try { var ignoreCompilationDebug = Settings.GetSetting("ignoreCompilationDebug") == "True" || string.IsNullOrEmpty(Settings.GetSetting("ignoreCompilationDebug")); if (ignoreCompilationDebug) { BundleTable.EnableOptimizations = true; } var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); var doc = XDocument.Load(HttpContext.Current.Server.MapPath(Config.BundlesConfigPath)); foreach (string bundleType in "script,style".Split(',')) { foreach (var bundleElement in doc.Descendants(bundleType + "Bundle")) { var bundle = new Bundle(bundleElement.Attribute("virtualPath").Value); var bundleHasFiles = false; var dontMinify = bundleElement.Attribute("disableMinification") != null?bundleElement.Attribute("disableMinification").Value == true.ToString() : false; foreach (var includeElement in bundleElement.Elements()) { var filePath = includeElement.Attribute("virtualPath").Value; string fullPath = null; try { fullPath = HttpContext.Current.Server.MapPath(filePath); } catch (Exception ex) { LogHelper.Warn <Exception>("Optmius skipped '" + filePath + "' in Bundle '" + bundle.Path + "' as the file path was invalid. Only application relative URLs (~/url) are allowed."); } if (fullPath != null) { bundle.Include(filePath); bundleHasFiles = true; } } if (bundleHasFiles) { if (bundleType == "script") { bundle.Transforms.Add(jsTransformer); if (!dontMinify) { bundle.Transforms.Add(new JsMinify()); } } else { bundle.Transforms.Add(cssTransformer); if (!dontMinify) { bundle.Transforms.Add(new CssMinify()); } } bundle.Orderer = nullOrderer; bundles.Add(bundle); } } } } catch (Exception e) { LogHelper.Error(typeof(BundleCollection), "Error adding bundles: " + e.ToString(), e); } }
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 public static void RegisterBundles(BundleCollection bundles) { BundleTable.EnableOptimizations = false; bundles.UseCdn = true; var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); var cssBundle = new CustomStyleBundle("~/bundles/css"); cssBundle.Include("~/Content/Site.less", "~/Content/bootstrap/bootstrap.less"); cssBundle.Transforms.Add(cssTransformer); cssBundle.Orderer = nullOrderer; bundles.Add(cssBundle); var jqueryBundle = new CustomScriptBundle("~/bundles/jquery"); jqueryBundle.Include("~/Scripts/jquery-{version}.js"); jqueryBundle.Transforms.Add(jsTransformer); jqueryBundle.Orderer = nullOrderer; bundles.Add(jqueryBundle); var signalRBundle = new CustomScriptBundle("~/bundles/jquery-signalR"); jqueryBundle.Include("~/Scripts/jquery.signalR-{version}.js", "~/Scripts/jquery.signalR-{version}.min.js"); jqueryBundle.Transforms.Add(jsTransformer); jqueryBundle.Orderer = nullOrderer; bundles.Add(signalRBundle); var jqueryvalBundle = new CustomScriptBundle("~/bundles/jqueryval"); jqueryvalBundle.Include("~/Scripts/jquery.validate*"); jqueryvalBundle.Transforms.Add(jsTransformer); jqueryvalBundle.Orderer = nullOrderer; bundles.Add(jqueryvalBundle); // Use the development version of Modernizr to develop with and learn from. Then, when you're // ready for production, use the build tool at http://modernizr.com to pick only the tests you need. var modernizrBundle = new CustomScriptBundle("~/bundles/modernizr"); modernizrBundle.Include("~/Scripts/modernizr-*"); modernizrBundle.Transforms.Add(jsTransformer); modernizrBundle.Orderer = nullOrderer; bundles.Add(modernizrBundle); var bootstrapBundle = new CustomScriptBundle("~/bundles/bootstrap"); bootstrapBundle.Include("~/Scripts/bootstrap.js", "~/Scripts/bootstrap.min.js", "~/Scripts/respond.js"); bootstrapBundle.Transforms.Add(jsTransformer); bootstrapBundle.Orderer = nullOrderer; bundles.Add(bootstrapBundle); var bootstrapLess = new CustomStyleBundle("~/bundles/bootstrapLess"); bootstrapLess.Include("~/Content/bootstrap/bootstrap.less"); bootstrapLess.Transforms.Add(cssTransformer); bootstrapLess.Orderer = nullOrderer; bundles.Add(bootstrapLess); //Google Map CSS bundle var googMapCSS = new CustomStyleBundle("~/bundles/googMapCSS"); googMapCSS.Include("~/Content/Map/GOOG/*.css"); googMapCSS.Transforms.Add(cssTransformer); googMapCSS.Orderer = nullOrderer; bundles.Add(googMapCSS); //Google Map JS bundle var googMapJS = new CustomScriptBundle("~/bundles/googMapJS"); googMapJS.Include("~/Content/Map/GOOG/*.js"); googMapJS.Transforms.Add(jsTransformer); googMapJS.Orderer = nullOrderer; bundles.Add(googMapJS); //Open Layers Map CSS bundle var olMapCSS = new CustomStyleBundle("~/bundles/olMapCSS"); olMapCSS.Include("~/Content/Map/OL/*.css"); olMapCSS.Transforms.Add(cssTransformer); olMapCSS.Orderer = nullOrderer; bundles.Add(olMapCSS); //Open Layers Map JS bundle var olMapJS = new CustomScriptBundle("~/bundles/olMapJS"); olMapJS.Include("~/Content/Map/OL/*.js"); olMapJS.Transforms.Add(jsTransformer); olMapJS.Orderer = nullOrderer; bundles.Add(olMapJS); //Angular Scripts Bundle var angularJS = new CustomScriptBundle("~/bundles/angular"); angularJS.Include("~/Scripts/angular-route.js"); angularJS.Include("~/Scripts/angular-resource.js"); angularJS.Include("~/Scripts/angular-animate.js"); angularJS.Include("~/Scripts/angular.js"); angularJS.Include("~/Controllers/app/js/admin_page/admin_page.app.js"); angularJS.Include("~/Controllers/app/js/admin_page/controllers/admin.ctrl.js"); angularJS.Transforms.Add(jsTransformer); angularJS.Orderer = nullOrderer; bundles.Add(angularJS); var detailView = new CustomStyleBundle("~/bundles/detailsCSS"); detailView.Include("~/Content/detailViewResources/dv.css"); detailView.Transforms.Add(cssTransformer); detailView.Orderer = nullOrderer; bundles.Add(detailView); var detailViewJS = new CustomScriptBundle("~/bundles/detailsJS"); detailViewJS.Include("~/Content/detailViewResources/dv.js"); detailViewJS.Transforms.Add(jsTransformer); detailViewJS.Orderer = nullOrderer; bundles.Add(detailViewJS); var sim = new CustomScriptBundle("~/bundles/sim"); sim.Include("~/Scripts/proj4.js"); sim.Include("~/Content/NestScripts/reporter.js"); sim.Include("~/Content/NestScripts/simulation.js"); sim.Include("~/Content/NestScripts/vehicle.js"); bundles.Add(sim); //Font Awesome //var fa = new CustomStyleBundle("~/bundles/fontawesome"); //fa.Include("~/Content/font-awesome-4.3.0/css/font-awesome.min.css"); //fa.Include("~/Content/font-awesome-4.3.0/fonts/font-awesome.webfont.woff"); //bundles.Add(fa); }
public Idioms(JsTransformer transformer) { this.transformer = transformer; }
public static void RegisterBundles(BundleCollection bundles) { var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); // jQuery var jqueryUiCss = new Bundle("~/bundles/jqueryuicss").Include( "~/Content/themes/base/jquery.ui.core.css", "~/Content/themes/base/jquery.ui.resizable.css", "~/Content/themes/base/jquery.ui.selectable.css", "~/Content/themes/base/jquery.ui.accordion.css", "~/Content/themes/base/jquery.ui.autocomplete.css", "~/Content/themes/base/jquery.ui.button.css", "~/Content/themes/base/jquery.ui.dialog.css", "~/Content/themes/base/jquery.ui.slider.css", "~/Content/themes/base/jquery.ui.tabs.css", "~/Content/themes/base/jquery.ui.datepicker.css", "~/Content/themes/base/jquery.ui.progressbar.css", "~/Content/themes/base/jquery.ui.theme.css"); jqueryUiCss.Transforms.Add(cssTransformer); jqueryUiCss.Transforms.Add(new CssMinify()); jqueryUiCss.Orderer = nullOrderer; bundles.Add(jqueryUiCss); var jq = new Bundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js", "~/Scripts/jquery-ui-{version}.js"); jq.Transforms.Add(jsTransformer); jq.Orderer = nullOrderer; bundles.Add(jq); var js = new Bundle("~/bundles/js").Include( "~/Scripts/bootstrap.min.js", "~/Scripts/Prettify/prettify.js", "~/Scripts/application.js"); js.Transforms.Add(jsTransformer); js.Orderer = nullOrderer; bundles.Add(js); var jqueryVal = new Bundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.unobtrusive*", "~/Scripts/jquery.validate*"); jqueryVal.Transforms.Add(jsTransformer); jqueryVal.Orderer = nullOrderer; bundles.Add(jqueryVal); // Css var css = new Bundle("~/bundles/css").Include( "~/Content/less/bootstrap.less", "~/Content/less/responsive.less", "~/Content/Prettify/prettify.css", "~/Content/docs.css", "~/Content/icons.css"); css.Transforms.Add(cssTransformer); css.Transforms.Add(new CssMinify()); css.Orderer = nullOrderer; bundles.Add(css); BundleTable.EnableOptimizations = true; }
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); }
public JavaScriptReferenceHandler() { Transform = new JsTransformer(); }
public static void RegisterBundles(BundleCollection bundles) { BundleTable.EnableOptimizations = true; var yuisetting = new YuiSettings(); #if DEBUG yuisetting.JsMinifier.DisableOptimizations = true; yuisetting.JsMinifier.CompressionType = CompressionType.None; #endif var cssTransformer = new CssTransformer(new YuiCssMinifier()); var jsTransformer = new JsTransformer(new YuiJsMinifier(yuisetting)); var nullOrderer = new NullOrderer(); // internal css var cssBundle = new Bundle("~/css/all"); cssBundle.Include( "~/Content/css/Reset.css", "~/Content/css/common.css", "~/Content/css/Site.css", "~/Content/css/internal.css"); cssBundle.IncludeDirectory("~/Content/css/fileuploader", "*.css"); cssBundle.IncludeDirectory("~/Content/css/jgrowl", "*.css"); cssBundle.IncludeDirectory("~/Content/css/jqueryui", "*.css"); cssBundle.IncludeDirectory("~/Content/css/prettyLoader", "*.css"); cssBundle.Transforms.Add(cssTransformer); cssBundle.Orderer = nullOrderer; bundles.Add(cssBundle); // external css var cssextBundle = new Bundle("~/css/ext"); cssextBundle.Include( "~/Content/css/Reset.css", "~/Content/css/common.css", "~/Content/css/external.css", "~/Content/css/Site.css", "~/Content/css/jgrowl/jquery.jgrowl.css", "~/Content/css/prettyLoader/prettyLoader.css" ); cssextBundle.Transforms.Add(cssTransformer); cssextBundle.Orderer = nullOrderer; bundles.Add(cssextBundle); // common css var csscommonBundle = new Bundle("~/css/common"); csscommonBundle.Include( "~/Content/css/Reset.css", "~/Content/css/common.css"); csscommonBundle.Transforms.Add(cssTransformer); csscommonBundle.Orderer = nullOrderer; bundles.Add(csscommonBundle); // email css var cssemailBundle = new Bundle("~/css/email"); cssemailBundle.Include( "~/Content/css/Reset.css", "~/Content/css/common.css", "~/Content/css/email/email.css"); cssemailBundle.Transforms.Add(cssTransformer); cssemailBundle.Orderer = nullOrderer; bundles.Add(cssemailBundle); // jquery js var jqueryBundle = new Bundle("~/js/jquery"); jqueryBundle.Include("~/Scripts/jquery-1.8.1.js"); jqueryBundle.Transforms.Add(jsTransformer); jqueryBundle.Orderer = nullOrderer; bundles.Add(jqueryBundle); var jscoreBundle = new Bundle("~/js/core"); jscoreBundle.IncludeDirectory("~/Scripts/core", "*.js"); #if DEBUG jscoreBundle.Include("~/Scripts/debug_true.js"); #else jscoreBundle.Include("~/Scripts/debug_false.js"); #endif jscoreBundle.Transforms.Add(jsTransformer); jscoreBundle.Orderer = nullOrderer; bundles.Add(jscoreBundle); var jsextBundle = new Bundle("~/js/extend"); jsextBundle.IncludeDirectory("~/Scripts/extend", "*.js"); jsextBundle.Transforms.Add(jsTransformer); jsextBundle.Orderer = nullOrderer; bundles.Add(jsextBundle); }
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 public static void RegisterBundles(BundleCollection bundles) { BundleTable.EnableOptimizations = false; bundles.UseCdn = true; var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); var cssBundle = new CustomStyleBundle("~/bundles/css"); cssBundle.Include("~/Content/Site.less", "~/Content/bootstrap.css"); cssBundle.Transforms.Add(cssTransformer); cssBundle.Orderer = nullOrderer; bundles.Add(cssBundle); var momemtBundle = new CustomScriptBundle("~/bundles/moment"); momemtBundle.Include("~/Scripts/moment.js", "~/Scripts/moment-with-locales.js"); momemtBundle.Transforms.Add(jsTransformer); momemtBundle.Orderer = nullOrderer; bundles.Add(momemtBundle); bundles.Add(new StyleBundle("~/Content/GridCss").Include( "~/Content/WebGrid.css") ); bundles.Add(new StyleBundle("~/Content/PrintStyles").Include( "~/Content/PrintStyles.css")); bundles.Add(new ScriptBundle("~/Scripts/ShowHide").Include( "~/Scripts/ShowHide.js")); bundles.Add(new ScriptBundle("~/Scripts/RedRows").Include( "~/Scripts/RedRows.js")); var jqueryBundle = new CustomScriptBundle("~/bundles/jquery"); jqueryBundle.Include("~/Scripts/jquery-{version}.js"); jqueryBundle.Transforms.Add(jsTransformer); jqueryBundle.Orderer = nullOrderer; bundles.Add(jqueryBundle); var jqueryvalBundle = new CustomScriptBundle("~/bundles/jqueryval"); jqueryvalBundle.Include("~/Scripts/jquery.validate*"); jqueryvalBundle.Transforms.Add(jsTransformer); jqueryvalBundle.Orderer = nullOrderer; bundles.Add(jqueryvalBundle); var modernizrBundle = new CustomScriptBundle("~/bundles/modernizr"); modernizrBundle.Include("~/Scripts/modernizr-*"); modernizrBundle.Transforms.Add(jsTransformer); modernizrBundle.Orderer = nullOrderer; bundles.Add(modernizrBundle); var bootstrapBundle = new CustomScriptBundle("~/bundles/bootstrap"); bootstrapBundle.Include("~/Scripts/bootstrap.js", "~/Scripts/respond.js"); bootstrapBundle.Transforms.Add(jsTransformer); bootstrapBundle.Orderer = nullOrderer; bundles.Add(bootstrapBundle); }
public async Task Compile() { projectName = project.AssemblyName; Compilation compilation = await Profiler.Time("Getting initial project compilation", async() => await project.GetCompilationAsync()); Context.Update(project.Solution, project, compilation, new ReflectionCache(project, compilation)); // If this is the runtime prjoect, declare the array to hold all the GetAssembly functions (this .js file // will be loaded first, and we only want to bother creating the array once.) if (projectName == "mscorlib") { var global = new JsBlockStatement(); jsCompilationUnit.Global = global; var assemblies = Js.Variable(SpecialNames.Assemblies, Js.Array()); global.Local(assemblies); // This ensures that Function.$typeName returns `Function` -- this is important when using // a type function as a generic argument, since otherwise when we try to get a // unique key for the permuatation of type args including a type function, we would get // an empty string for that arg, which would break the cache. jsCompilationUnit.Body.Assign(Js.Reference("Function").Member(SpecialNames.TypeName), Js.Primitive("Function")); } // Declare assembly variable var assemblyVariable = Js.Variable("$" + projectName.MaskSpecialCharacters() + "$Assembly", Js.Null()); jsCompilationUnit.Body.Local(assemblyVariable); // Declare array to store all anonymous types var anonymousTypes = Js.Variable(compilation.Assembly.GetAssemblyAnonymousTypesArray(), Js.Array()); jsCompilationUnit.Body.Local(anonymousTypes); // Declare array to store all the type functions in the assembly var assemblyTypes = Js.Variable(compilation.Assembly.GetAssemblyTypesArray(), Js.Array()); jsCompilationUnit.Body.Local(assemblyTypes); // Build $GetAssemblyMethod, which lazily creates a new Assembly instance var globalIdioms = new Idioms(null); var getAssembly = Js.Function(); getAssembly.Body.If( assemblyVariable.GetReference().EqualTo(Js.Null()), assemblyVariable.GetReference().Assign(globalIdioms.CreateAssembly(compilation.Assembly, assemblyTypes.GetReference())) ); getAssembly.Body.Return(assemblyVariable.GetReference()); jsCompilationUnit.Body.Assign( Js.Reference(compilation.Assembly.GetAssemblyMethodName()), getAssembly); // Declare $assembly variable jsCompilationUnit.Body.Local(SpecialNames.Assembly, Js.Reference(compilation.Assembly.GetAssemblyMethodName())); jsCompilationUnit.Body.Assign(Js.Reference(SpecialNames.Assembly).Member(SpecialNames.AssemblyTypesArray), assemblyTypes.GetReference()); // Add $GetAssemblyMethod to global assemblies array jsCompilationUnit.Body.Express(Js.Reference(SpecialNames.Assemblies).Member("push").Invoke(Js.Reference(SpecialNames.Assembly))); // Builds out all the namespace objects. Types live inside namepsaces, which are represented as // nested Javascript objects. For example, System.Text.StringBuilder is represented (in part) as: // // System = {}; // System.Text = {}; // System.Text.StringBuilder = function() { ... } // // This allows access to classes using dot notation in the expected way. Profiler.Time("Transforming namespaces", () => { var namespaceTransformer = new NamespaceTransformer(jsCompilationUnit.Body); foreach (var syntaxTree in compilation.SyntaxTrees) { var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); compilationUnit.Accept(namespaceTransformer); } }); var actions = new List <Tuple <INamedTypeSymbol, Action> >(); Profiler.Time("Get diagnostics", () => { var diagnostics = compilation.GetDiagnostics(); foreach (var diagnostic in diagnostics) { if (diagnostic.Severity == DiagnosticSeverity.Error) { Console.WriteLine("// " + diagnostic); } } }); // Check for partial classes Profiler.Time("Reassemble partial classes", () => { var partialClassReassembler = new PartialClassReassembler(project, compilation); compilation = partialClassReassembler.UnifyPartialTypes(); }); /* * // Write out all type functions in inheritance order. This allows for complex references between types and * // nested types. * Profiler.Time("Write out type function declarations", () => * { * var allTypeDeclarations = new List<INamedTypeSymbol>(); * foreach (var syntaxTree in compilation.SyntaxTrees) * { * var semanticModel = compilation.GetSemanticModel(syntaxTree); * var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); * var typeDeclarations = GetTypeDeclarations(compilationUnit); * var types = typeDeclarations.Select(x => semanticModel.GetDeclaredSymbol(x)).ToArray(); * allTypeDeclarations.AddRange(types); * } * SweepSort(allTypeDeclarations, x => x); * * jsCompilationUnit.Body.Express(Js.Reference(Context.Instance.SymbolNames[classType.ContainingNamespace, classType.ContainingNamespace.GetFullName()]).Member(classType.GetShortTypeName()), * Js.Reference(SpecialNames.Define).Invoke(Js.Primitive(displayName), baseType)); * jsCompilationUnit.Assign(Js.Reference(Context.Instance.SymbolNames[classType.ContainingNamespace, classType.ContainingNamespace.GetFullName()]).Member(classType.GetShortTypeName()), * Js.Reference(SpecialNames.Define).Invoke(Js.Primitive(displayName), baseType)); * }); */ // Scan all syntax trees for anonymous type creation expressions. We transform them into class // declarations with a series of auto implemented properties. Profiler.Time("Running AnonymousTypeTransformer", () => { var anonymousTypeTransformer = new AnonymousTypeTransformer(jsCompilationUnit.Body, actions); foreach (var syntaxTree in compilation.SyntaxTrees) { var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); compilationUnit.Accept(anonymousTypeTransformer); } }); // Iterate through all the syntax trees and add entries into `actions` that correspond to type // declarations. Profiler.Time("Preparing for core transformation process", () => { foreach (var syntaxTree in compilation.SyntaxTrees) { var semanticModel = compilation.GetSemanticModel(syntaxTree); var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); var transformer = new JsTransformer(syntaxTree, semanticModel, jsCompilationUnit); var typeCollector = new TypeCollector(); compilationUnit.Accept(typeCollector); var typeDeclarations = typeCollector.TypeDeclarations.Where(x => x.GetContainingTypeDeclaration() == null); var delegateDeclarations = typeCollector.DelegateDeclarations.Where(x => x.GetContainingTypeDeclaration() == null); foreach (var type in typeDeclarations) { var _type = type; var typeSymbol = semanticModel.GetDeclaredSymbol(type); Action action = () => { var statements = (JsBlockStatement)_type.Accept(transformer); jsCompilationUnit.Body.Aggregate(statements); }; actions.Add(Tuple.Create(typeSymbol, action)); } foreach (var type in delegateDeclarations) { var _type = type; Action action = () => { var statements = (JsBlockStatement)_type.Accept(transformer); jsCompilationUnit.Body.Aggregate(statements); }; actions.Add(Tuple.Create((INamedTypeSymbol)ModelExtensions.GetDeclaredSymbol(semanticModel, type), action)); } } }); // Sort all the type declarations such that base types always come before subtypes. Profiler.Time("Sorting transformers", () => SweepSort(actions, x => x.Item1)); var transformationActions = actions.Select(x => x.Item2).ToArray(); Profiler.Time("Applying core transformation", () => { foreach (var item in transformationActions) { item(); } }); // Create cultures based on installed .NET cultures. Presumably this is the same regardless // of the platform that compiled this assembly. Only do this for the standard library. if (projectName == "mscorlib" && !Context.Instance.Compilation.Assembly.IsCultureInfoExportDisabled()) { foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures)) { JsExpression target = new JsVariableReferenceExpression(Context.Instance.CultureInfo.GetTypeName()).Invoke().Member("RegisterCulture"); jsCompilationUnit.Body.Add(target.Invoke(new[] { Js.Literal(culture.Name), Js.Literal(culture.DateTimeFormat.ShortDatePattern), Js.Literal(culture.DateTimeFormat.LongDatePattern), Js.Literal(culture.DateTimeFormat.ShortTimePattern), Js.Literal(culture.DateTimeFormat.LongTimePattern), Js.Literal(culture.DateTimeFormat.FullDateTimePattern), Js.Literal(culture.DateTimeFormat.YearMonthPattern), Js.Array(culture.DateTimeFormat.MonthNames.Select(x => Js.Literal(x)).ToArray()), Js.Array(culture.DateTimeFormat.AbbreviatedMonthNames.Select(x => Js.Literal(x)).ToArray()), Js.Array(culture.DateTimeFormat.DayNames.Select(x => Js.Literal(x)).ToArray()) }).Express()); } } // If the project type is a console application, then invoke the Main method at the very // end of the file. var entryPoint = Context.Instance.Compilation.GetEntryPoint(CancellationToken.None); if (entryPoint != null) { jsCompilationUnit.Body.Express(globalIdioms.InvokeStatic(entryPoint)); } // Test minification // var minifier = new JsMinifier(); // jsCompilationUnit.Accept(minifier); }
public async Task <Tuple <string, Project> > Compile(string projectFile) { var projectFileInfo = new FileInfo(projectFile); var projectFolder = projectFileInfo.Directory.FullName; // These two lines are just a weird hack because you get no files back from compilation.SyntaxTrees // if the user file isn't modified. Not sure why that's happening. var projectUserFile = projectFolder + "\\" + projectFileInfo.Name + ".user"; if (File.Exists(projectUserFile)) { File.SetLastWriteTime(projectUserFile, DateTime.Now); } var project = await MSBuildWorkspace.Create().OpenProjectAsync(projectFile); var projectName = project.AssemblyName; Compilation compilation = await project.GetCompilationAsync(); Context.Update(project.Solution, project, compilation); // Check for yield foreach (var syntaxTree in compilation.SyntaxTrees) { var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); var semanticModel = compilation.GetSemanticModel(syntaxTree); var yieldGenerator = new YieldGenerator(compilation, syntaxTree, semanticModel); compilationUnit = (CompilationUnitSyntax)compilationUnit.Accept(yieldGenerator); compilation = compilation.ReplaceSyntaxTree(syntaxTree, SyntaxFactory.SyntaxTree(compilationUnit, syntaxTree.FilePath)); } compilation = compilation.Clone(); Context.Update(project.Solution, project, compilation); // After the basic transformation happens, we need to fix up some references afterward foreach (var syntaxTree in compilation.SyntaxTrees) { var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); var semanticModel = compilation.GetSemanticModel(syntaxTree); var yieldFixer = new YieldGeneratorFixer(compilation, syntaxTree, semanticModel); compilationUnit = (CompilationUnitSyntax)compilationUnit.Accept(yieldFixer); compilation = compilation.ReplaceSyntaxTree(syntaxTree, SyntaxFactory.SyntaxTree(compilationUnit, syntaxTree.FilePath)); } Context.Update(project.Solution, project, compilation); // Check for async foreach (var syntaxTree in compilation.SyntaxTrees) { var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); var semanticModel = compilation.GetSemanticModel(syntaxTree); var asyncGenerator = new AsyncGenerator(compilation, syntaxTree, semanticModel); compilationUnit = (CompilationUnitSyntax)compilationUnit.Accept(asyncGenerator); compilation = compilation.ReplaceSyntaxTree(syntaxTree, SyntaxFactory.SyntaxTree(compilationUnit, syntaxTree.FilePath)); } Context.Update(project.Solution, project, compilation); var jsCompilationUnit = new JsCompilationUnit { UseStrict = true }; // If this is the runtime prjoect, declare the array to hold all the GetAssembly functions (this .js file // will be loaded first, and we only want to bother creating the array once. if (projectName == "mscorlib") { var assemblies = Js.Variable(SpecialNames.Assemblies, Js.Array()); jsCompilationUnit.Body.Local(assemblies); // This ensures that Function.$typeName returns `Function` -- this is important when using // a type function as a generic argument, since otherwise when we try to assembly a // unique key for the permuatation of type args including a type function, we would get // an empty string for that arg, which would break the cache. jsCompilationUnit.Body.Assign(Js.Reference("Function").Member(SpecialNames.TypeName), Js.Primitive("Function")); } // Declare assembly variable var assemblyVariable = Js.Variable("$" + projectName.MaskSpecialCharacters() + "$Assembly", Js.Null()); jsCompilationUnit.Body.Local(assemblyVariable); // Declare array to store all anonymous types var anonymousTypes = Js.Variable(compilation.Assembly.GetAssemblyAnonymousTypesArray(), Js.Array()); jsCompilationUnit.Body.Local(anonymousTypes); // Declare array to store all the type functions in the assembly var assemblyTypes = Js.Variable(compilation.Assembly.GetAssemblyTypesArray(), Js.Array()); jsCompilationUnit.Body.Local(assemblyTypes); // Build $GetAssemblyMethod, which lazily creates a new Assembly instance var globalIdioms = new Idioms(null); var getAssembly = Js.Function(); getAssembly.Body.If( assemblyVariable.GetReference().EqualTo(Js.Null()), assemblyVariable.GetReference().Assign(globalIdioms.CreateAssembly(compilation.Assembly, assemblyTypes.GetReference())) ); getAssembly.Body.Return(assemblyVariable.GetReference()); jsCompilationUnit.Body.Assign( Js.Reference(compilation.Assembly.GetAssemblyMethodName()), getAssembly); // Add $GetAssemblyMethod to global assemblies array jsCompilationUnit.Body.Express(Js.Reference("$assemblies").Member("push").Invoke(Js.Reference(compilation.Assembly.GetAssemblyMethodName()))); // Builds out all the namespace objects. Types live inside namepsaces, which are represented as // nested Javascript objects. For example, System.Text.StringBuilder is represented (in part) as: // // System = {}; // System.Text = {}; // System.Text.StringBuilder = function() { ... } // // This allows access to classes using dot notation in the expected way. var namespaceTransformer = new NamespaceTransformer(jsCompilationUnit.Body); foreach (var syntaxTree in compilation.SyntaxTrees) { var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); compilationUnit.Accept(namespaceTransformer); } var actions = new List <Tuple <INamedTypeSymbol, Action> >(); // Scan all syntax trees for anonymous type creation expressions. We transform them into class // declarations with a series of auto implemented properties. var anonymousTypeTransformer = new AnonymousTypeTransformer(jsCompilationUnit.Body, actions); foreach (var syntaxTree in compilation.SyntaxTrees) { var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); compilationUnit.Accept(anonymousTypeTransformer); } var diagnostics = compilation.GetDiagnostics(); foreach (var diagnostic in diagnostics) { Console.WriteLine("// " + diagnostic); } // Iterate through all the syntax trees and add entries into `actions` that correspond to type // declarations. foreach (var syntaxTree in compilation.SyntaxTrees) { var semanticModel = compilation.GetSemanticModel(syntaxTree); var compilationUnit = (CompilationUnitSyntax)syntaxTree.GetRoot(); var transformer = new JsTransformer(syntaxTree, semanticModel); var typeDeclarations = GetTypeDeclarations(compilationUnit); foreach (var type in typeDeclarations) { Action action = () => { var statements = (JsBlockStatement)type.Accept(transformer); jsCompilationUnit.Body.Aggregate(statements); }; actions.Add(Tuple.Create((INamedTypeSymbol)ModelExtensions.GetDeclaredSymbol(semanticModel, type), action)); } var delegateDeclarations = GetDelegates(compilationUnit); foreach (var type in delegateDeclarations) { Action action = () => { var statements = (JsBlockStatement)type.Accept(transformer); jsCompilationUnit.Body.Aggregate(statements); }; actions.Add(Tuple.Create((INamedTypeSymbol)ModelExtensions.GetDeclaredSymbol(semanticModel, type), action)); } } // Sort all the type declarations such that base types always come before subtypes. SweepSort(actions); foreach (var item in actions) { item.Item2(); } // If the project type is a console application, then invoke the Main method at the very // end of the file. var entryPoint = compilation.GetEntryPoint(CancellationToken.None); if (entryPoint != null) { jsCompilationUnit.Body.Express(globalIdioms.InvokeStatic(entryPoint)); } // Test minification // var minifier = new JsMinifier(); // jsCompilationUnit.Accept(minifier); // Write out the compiled Javascript file to the target location. var renderer = new JsRenderer(); jsCompilationUnit.Accept(renderer); return(Tuple.Create(renderer.Output, project)); }