예제 #1
0
        internal BundleAsset GetBundle(string name, eBundleType type)
        {
            // normalize
            var n = name.ToUpper();

            if (type == eBundleType.script)
            {
                if (!_script_compressed_bundles.ContainsKey(n))
                {
                    throw new Exception("Script bundle name '" + name + "' could not be found.");
                }

                return(_script_compressed_bundles[n]);
            }

            if (type == eBundleType.style)
            {
                if (!_style_compressed_bundles.ContainsKey(n))
                {
                    throw new Exception("Style bundle name '" + name + "' could not be found.");
                }

                return(_style_compressed_bundles[n]);
            }

            return(null);
        }
예제 #2
0
        internal string GetBundleTags(string name, eBundleType type)
        {
            // normalize
            var n = name.ToUpper();

            if (type == eBundleType.script)
            {
                if (!_script_tag_bundles.ContainsKey(n))
                {
                    throw new Exception("Script bundle name '" + name + "' could not be found.");
                }

                return(_script_tag_bundles[n]);
            }

            if (type == eBundleType.style)
            {
                if (!_style_tag_bundles.ContainsKey(n))
                {
                    throw new Exception("Style bundle name '" + name + "' could not be found.");
                }

                return(_style_tag_bundles[n]);
            }

            return(string.Empty);
        }
예제 #3
0
        void GenerateReleaseBundleTags(List <BundleItFile> BundleResolvedFiles, eBundleType type)
        {
            var bname                  = string.Empty;
            var path                   = type == eBundleType.script ? _settings.ScriptPath : _settings.StylePath;
            var tag_template           = type == eBundleType.script ? _script_tag_template : _style_tag_template;
            var tag_cdn_template       = type == eBundleType.script ? _script_tag_standard_template : _style_tag_standard_template;
            var obfuscated_source_hash = string.Empty;

            StringBuilder tags;
            var           unique_bundles = BundleResolvedFiles.DistinctBy(b => b.bundle_name);

            foreach (var bundle in unique_bundles)
            {
                tags = new StringBuilder();
                var unique_resolved_bundles = BundleResolvedFiles.Where(b => b.bundle_name == bundle.bundle_name).DistinctBy(b2 => b2.resolved_bundle_name);

                foreach (var rbundle in unique_resolved_bundles)
                {
                    if (rbundle.IsCDN)
                    {
                        tags.AppendLine(string.Format(tag_cdn_template, rbundle.minifiedrelativepath));
                    }
                    else
                    {
                        if (type == eBundleType.script)
                        {
                            obfuscated_source_hash = _script_compressed_bundles[rbundle.resolved_bundle_name].obfuscated_source_hash;
                        }

                        if (type == eBundleType.style)
                        {
                            obfuscated_source_hash = _style_compressed_bundles[rbundle.resolved_bundle_name].obfuscated_source_hash;
                        }


                        tags.AppendLine(string.Format(tag_template, "/" + path + "/" + rbundle.resolved_bundle_name.ToLower(), obfuscated_source_hash));
                    }
                }

                if (type == eBundleType.script)
                {
                    _script_tag_bundles.Add(bundle.bundle_name, tags.ToString());
                }

                if (type == eBundleType.style)
                {
                    _style_tag_bundles.Add(bundle.bundle_name, tags.ToString());
                }
            }
        }
예제 #4
0
        internal string GetBundleTags(string name, eBundleType type)
        {
            // normalize
            var n = name.ToUpper();

            if (type == eBundleType.script)
            {
                if (!_script_tag_bundles.ContainsKey(n))
                    throw new Exception("Script bundle name '" + name + "' could not be found.");

                return _script_tag_bundles[n];
            }

            if (type == eBundleType.style)
            {
                if (!_style_tag_bundles.ContainsKey(n))
                    throw new Exception("Style bundle name '" + name + "' could not be found.");

                return _style_tag_bundles[n];
            }
            
            return string.Empty;
        }
예제 #5
0
        void GenerateReleaseBundles(List <BundleItFile> BundleResolvedFiles, eBundleType type)
        {
            var RootFolder = System.AppDomain.CurrentDomain.BaseDirectory;
            var unique_resolved_bundles = BundleResolvedFiles.DistinctBy(b => b.resolved_bundle_name);

            foreach (var rbundle in unique_resolved_bundles)
            {
                if (rbundle.IsCDN)
                {
                    continue;
                }

                var compressed_bundle = new StringBuilder();
                var bfiles            = BundleResolvedFiles.Where(bsf => bsf.resolved_bundle_name == rbundle.resolved_bundle_name);
                foreach (var f in bfiles)
                {
                    // if has_minified returns true, then find which path to use.
                    var path = string.Empty;
                    if (f.has_minified)
                    {
                        path = string.IsNullOrEmpty(f.minifiedrelativepath) ? f.debugrelativepath : f.minifiedrelativepath;
                    }
                    else
                    {
                        path = f.debugrelativepath;
                    }


                    // check for leading '/'
                    if (path[0] == "/".ToCharArray()[0])
                    {
                        path = path.Substring(1);
                    }


                    var filesource = LoadFile(Path.Combine(RootFolder, path));

                    // run it through YUI if not already minified
                    string compressed_src = string.Empty;
                    if (f.has_minified)
                    {
                        compressed_src = filesource;
                    }
                    else
                    {
                        if (type == eBundleType.script)
                        {
                            var YuiJsSettings = f.YuiJsSettings == null ? ConfigSettings.Instance.GlobalYuiCompressionSettings.Javascript : f.YuiJsSettings;
                            compressed_src = YUI_JS(filesource, YuiJsSettings);
                        }
                        if (type == eBundleType.style)
                        {
                            var YuiCssSettings = f.YuiCssSettings == null ? ConfigSettings.Instance.GlobalYuiCompressionSettings.Css : f.YuiCssSettings;
                            compressed_src = YUI_CSS(filesource, YuiCssSettings);
                        }
                    }

                    compressed_bundle.Append(compressed_src);
                }

                if (type == eBundleType.script)
                {
                    _script_compressed_bundles.Add(rbundle.resolved_bundle_name, new BundleAsset(compressed_bundle.ToString()));
                }

                if (type == eBundleType.style)
                {
                    _style_compressed_bundles.Add(rbundle.resolved_bundle_name, new BundleAsset(compressed_bundle.ToString()));
                }
            }
        }
예제 #6
0
        void LoadReleaseBundles(string bundlename, List <BundleItFile> files, List <BundleItFile> bundle_resolved_files, eBundleType type)
        {
            foreach (var s in files)
            {
                // load referenced bundle files
                if (!string.IsNullOrEmpty(s.bundle_ref_name))
                {
                    // get files by bundle name
                    List <BundleItFile> refbundlefiles = null;
                    if (type == eBundleType.script)
                    {
                        refbundlefiles = _script_files.Where(f => f.bundle_name == s.bundle_ref_name).ToList();
                    }

                    if (type == eBundleType.style)
                    {
                        refbundlefiles = _style_files.Where(f => f.bundle_name == s.bundle_ref_name).ToList();
                    }

                    LoadReleaseBundles(bundlename, refbundlefiles, bundle_resolved_files, type);
                }
                else
                {
                    var clone = BundleItFile.Clone(s);
                    clone.bundle_name = bundlename;
                    bundle_resolved_files.Add(clone);
                }
            }
        }
예제 #7
0
        void LoadDebugBundles(string bundlename, List <BundleItFile> files, StringBuilder bundlestring, eBundleType type)
        {
            foreach (var s in files)
            {
                // load referenced bundle files
                if (!string.IsNullOrEmpty(s.bundle_ref_name))
                {
                    // get files by bundle name
                    List <BundleItFile> refbundlefiles = null;
                    if (type == eBundleType.script)
                    {
                        refbundlefiles = _script_files.Where(f => f.bundle_name == s.bundle_ref_name).ToList();
                    }

                    if (type == eBundleType.style)
                    {
                        refbundlefiles = _style_files.Where(f => f.bundle_name == s.bundle_ref_name).ToList();
                    }

                    LoadDebugBundles(s.bundle_ref_name, refbundlefiles, bundlestring, type);
                }
                else
                {
                    if (type == eBundleType.script)
                    {
                        bundlestring.Append(string.Format(_script_tag_standard_template, s.debugrelativepath) + "\n");
                    }

                    if (type == eBundleType.style)
                    {
                        bundlestring.Append(string.Format(_style_tag_standard_template, s.debugrelativepath) + "\n");
                    }
                }
            }
        }
예제 #8
0
        internal BundleAsset GetBundle(string name, eBundleType type)
        {
            // normalize
            var n = name.ToUpper();

            if (type == eBundleType.script)
            {
                if (!_script_compressed_bundles.ContainsKey(n))
                    throw new Exception("Script bundle name '" + name + "' could not be found.");

                return _script_compressed_bundles[n];
            }

            if (type == eBundleType.style)
            {
                if (!_style_compressed_bundles.ContainsKey(n))
                    throw new Exception("Style bundle name '" + name + "' could not be found.");

                return _style_compressed_bundles[n];
            }

            return null;
        }
예제 #9
0
        void GenerateReleaseBundleTags(List<BundleItFile> BundleResolvedFiles, eBundleType type)
        {
            var bname = string.Empty;
            var path = type == eBundleType.script ? _settings.ScriptPath : _settings.StylePath;
            var tag_template = type == eBundleType.script ? _script_tag_template : _style_tag_template;
            var tag_cdn_template = type == eBundleType.script ? _script_tag_standard_template : _style_tag_standard_template;
            var obfuscated_source_hash = string.Empty;

            StringBuilder tags;
            var unique_bundles = BundleResolvedFiles.DistinctBy(b => b.bundle_name);
            foreach (var bundle in unique_bundles)
            {
                tags = new StringBuilder();
                var unique_resolved_bundles = BundleResolvedFiles.Where(b => b.bundle_name == bundle.bundle_name).DistinctBy(b2 => b2.resolved_bundle_name);
                
                foreach (var rbundle in unique_resolved_bundles)
                {
                    if (rbundle.IsCDN)
                        tags.AppendLine(string.Format(tag_cdn_template, rbundle.minifiedrelativepath));
                    else
                    {
                        if (type == eBundleType.script)
                            obfuscated_source_hash = _script_compressed_bundles[rbundle.resolved_bundle_name].obfuscated_source_hash;

                        if (type == eBundleType.style)
                            obfuscated_source_hash = _style_compressed_bundles[rbundle.resolved_bundle_name].obfuscated_source_hash;


                        tags.AppendLine(string.Format(tag_template, "/" + path + "/" + rbundle.resolved_bundle_name.ToLower(), obfuscated_source_hash));
                    }
                }

                if (type == eBundleType.script)
                    _script_tag_bundles.Add(bundle.bundle_name, tags.ToString());

                if (type == eBundleType.style)
                    _style_tag_bundles.Add(bundle.bundle_name, tags.ToString());
            }
        }
예제 #10
0
        void GenerateReleaseBundles(List<BundleItFile> BundleResolvedFiles, eBundleType type)
        {
            var RootFolder = System.AppDomain.CurrentDomain.BaseDirectory;
            var unique_resolved_bundles = BundleResolvedFiles.DistinctBy(b => b.resolved_bundle_name);

            foreach (var rbundle in unique_resolved_bundles)
            {
                if (rbundle.IsCDN)
                    continue;

                var compressed_bundle = new StringBuilder();
                var bfiles = BundleResolvedFiles.Where(bsf => bsf.resolved_bundle_name == rbundle.resolved_bundle_name);
                foreach (var f in bfiles)
                {
                    // if has_minified returns true, then find which path to use.
                    var path = string.Empty;
                    if (f.has_minified)
                        path = string.IsNullOrEmpty(f.minifiedrelativepath) ? f.debugrelativepath : f.minifiedrelativepath;
                    else
                        path = f.debugrelativepath;


                    // check for leading '/'
                    if (path[0] == "/".ToCharArray()[0])
                        path = path.Substring(1);


                    var filesource = LoadFile(Path.Combine(RootFolder, path));

                    // run it through YUI if not already minified
                    string compressed_src = string.Empty;
                    if (f.has_minified)
                        compressed_src = filesource;
                    else
                    {
                        if (type == eBundleType.script)
                        {
                            var YuiJsSettings = f.YuiJsSettings == null ? ConfigSettings.Instance.GlobalYuiCompressionSettings.Javascript : f.YuiJsSettings;
                            compressed_src = YUI_JS(filesource, YuiJsSettings);
                        }
                        if (type == eBundleType.style)
                        {
                            var YuiCssSettings = f.YuiCssSettings == null ? ConfigSettings.Instance.GlobalYuiCompressionSettings.Css : f.YuiCssSettings;
                            compressed_src = YUI_CSS(filesource, YuiCssSettings);
                        }
                    }

                    compressed_bundle.Append(compressed_src);
                }

                if (type == eBundleType.script)
                    _script_compressed_bundles.Add(rbundle.resolved_bundle_name, new BundleAsset(compressed_bundle.ToString()));

                if (type == eBundleType.style)
                    _style_compressed_bundles.Add(rbundle.resolved_bundle_name, new BundleAsset(compressed_bundle.ToString()));
            }
        }
예제 #11
0
        void LoadReleaseBundles(string bundlename, List<BundleItFile> files, List<BundleItFile> bundle_resolved_files, eBundleType type)
        {
            foreach (var s in files)
            {
                // load referenced bundle files
                if (!string.IsNullOrEmpty(s.bundle_ref_name))
                {

                    // get files by bundle name
                    List<BundleItFile> refbundlefiles = null;
                    if (type == eBundleType.script)
                        refbundlefiles = _script_files.Where(f => f.bundle_name == s.bundle_ref_name).ToList();

                    if (type == eBundleType.style)
                        refbundlefiles = _style_files.Where(f => f.bundle_name == s.bundle_ref_name).ToList();

                    LoadReleaseBundles(bundlename, refbundlefiles, bundle_resolved_files, type);
                }
                else
                {
                    var clone = BundleItFile.Clone(s);
                    clone.bundle_name = bundlename;
                    bundle_resolved_files.Add(clone);
                }

            }
        }
예제 #12
0
        void LoadDebugBundles(string bundlename, List<BundleItFile> files, StringBuilder bundlestring, eBundleType type)
        {
            foreach (var s in files)
            {
                // load referenced bundle files
                if(!string.IsNullOrEmpty(s.bundle_ref_name)){

                    // get files by bundle name
                    List<BundleItFile> refbundlefiles = null;
                    if (type == eBundleType.script)
                        refbundlefiles = _script_files.Where(f => f.bundle_name == s.bundle_ref_name).ToList();

                    if (type == eBundleType.style)
                        refbundlefiles = _style_files.Where(f => f.bundle_name == s.bundle_ref_name).ToList();

                    LoadDebugBundles(s.bundle_ref_name, refbundlefiles, bundlestring, type);
                }
                else
                {
                    if(type == eBundleType.script)
                        bundlestring.Append(string.Format(_script_tag_standard_template, s.debugrelativepath) + "\n");
                    
                    if(type == eBundleType.style)
                        bundlestring.Append(string.Format(_style_tag_standard_template, s.debugrelativepath) + "\n");

                }
                    
            }
        }