public Merger(SystemTarget target, bool isTestMode)
        {
            _target = target;

            _rootFolderPath = !isTestMode
                                                  ? FilePaths.GenerateXamlSearchFolderPath()
                                                  : FilePaths.GetExecutingAssemblyFilePath();
        }
        public string GenerateGenericXamlFile()
        {
            var        nameSpace        = GetValidNameSpaceDeclareStyle();
            var        nameSpaces       = new List <XAttribute>();
            XNamespace defaultNameSpace = "";

            foreach (var ns in _nameSpaces)
            {
                var key = ns.Key;

                if (key.StartsWith(Constants.Xmlns))
                {
                    key = key.TrimStart(Constants.Xmlns).TrimStart(Constants.Colon);
                }

                var value = ns.Value.StartsWith(Constants.Http, StringComparison.InvariantCultureIgnoreCase)
                                                    ? ns.Value
                                                    : string.Format("{0}{1}{2}", nameSpace, Constants.Colon, ns.Value);

                if (string.IsNullOrEmpty(key))
                {
                    defaultNameSpace = value;
                    nameSpaces.Add(new XAttribute(Constants.Xmlns, value));
                }
                else
                {
                    nameSpaces.Add(new XAttribute(XNamespace.Xmlns + key, value));
                }
            }

            var root = new XElement(defaultNameSpace + Constants.ResourceDictionaryNode);

            root.Add(new XComment(_target.ToString()));

            foreach (var ns in nameSpaces)
            {
                root.Add(ns);
            }

            if (_target == SystemTarget.WindowsStore)
            {
                var rootThemeNode = new XElement(defaultNameSpace + Constants.ThemeDictionariesNode);
                root.Add(rootThemeNode);

                CreateThemedResourceNode(_resourcesWinStoreDefault, Constants.DefaultTheme, rootThemeNode, defaultNameSpace);
                CreateThemedResourceNode(_resourcesWinStoreLight, Constants.LightTheme, rootThemeNode, defaultNameSpace);
                CreateThemedResourceNode(_resourcesWinStoreHighContrast, Constants.HighContrastTheme, rootThemeNode, defaultNameSpace);
            }

            foreach (var resource in _resources)
            {
                root.Add(resource.Value);
            }

            foreach (var style in _styles)
            {
                root.Add(style.Value);
            }

            root.Save(FilePaths.GenerateGenericFilePath(_target));

            return(root.ToString());
        }