示例#1
0
        public virtual Namespace <Models.View> GetNamespace(Site site, params string[] exculdes)
        {
            var views = All(site, "").Where(it => !exculdes.Any(ex => ex.EqualsOrNullEmpty(it.Name, StringComparison.OrdinalIgnoreCase)));

            Dictionary <string, Namespace <Models.View> > namespaces = new Dictionary <string, Namespace <Models.View> >(StringComparer.CurrentCultureIgnoreCase);
            Namespace <Models.View> root = new Namespace <Models.View>();

            foreach (var item in views)
            {
                string parentName            = "";
                Namespace <Models.View> last = null;
                var names = item.Name.Split(".".ToArray(), StringSplitOptions.RemoveEmptyEntries);
                foreach (var name in names.Take(names.Length - 1))
                {
                    string fullName = "";
                    if (string.IsNullOrEmpty(parentName))
                    {
                        fullName = name;
                    }
                    else
                    {
                        fullName = parentName + "." + name;
                    }
                    if (!namespaces.ContainsKey(fullName))
                    {
                        last = new Namespace <Models.View>()
                        {
                            Name     = name,
                            FullName = fullName
                        };
                        namespaces[fullName] = last;
                        if (!string.IsNullOrEmpty(parentName))
                        {
                            namespaces[parentName].AddNamespace(last);
                        }
                        else
                        {
                            root.AddNamespace(last);
                        }
                    }
                    else
                    {
                        last = namespaces[fullName];
                    }
                    parentName = fullName;
                }
                if (last == null)
                {
                    root.AddEntry(item.Name, item);
                }
                else
                {
                    last.AddEntry(item.Name, item);
                }
            }
            return(root);
        }
示例#2
0
        public static Namespace <T> Extract <T>(IEnumerable <T> list)
            where T : PathResource
        {
            Dictionary <string, Namespace <T> > namespaces = new Dictionary <string, Namespace <T> >(StringComparer.CurrentCultureIgnoreCase);
            Namespace <T> root = new Namespace <T>();

            foreach (var item in list)
            {
                string        parentName = "";
                Namespace <T> last       = null;
                var           names      = item.Name.Split(".".ToArray(), StringSplitOptions.RemoveEmptyEntries);
                foreach (var name in names.Take(names.Length - 1))
                {
                    string fullName = "";
                    if (string.IsNullOrEmpty(parentName))
                    {
                        fullName = name;
                    }
                    else
                    {
                        fullName = parentName + "." + name;
                    }
                    if (!namespaces.ContainsKey(fullName))
                    {
                        last = new Namespace <T>()
                        {
                            Name     = name,
                            FullName = fullName
                        };
                        namespaces[fullName] = last;
                        if (!string.IsNullOrEmpty(parentName))
                        {
                            namespaces[parentName].AddNamespace(last);
                        }
                        else
                        {
                            root.AddNamespace(last);
                        }
                    }
                    else
                    {
                        last = namespaces[fullName];
                    }
                    parentName = fullName;
                }
                if (last == null)
                {
                    root.AddEntry(item.Name, item);
                }
                else
                {
                    last.AddEntry(item.Name, item);
                }
            }
            return(root);
        }