예제 #1
0
파일: Program.cs 프로젝트: phabh/svgtompa
        private static IEnumerable <T> GetBlocks <T>(SvgElement elements) where T : Block
        {
            if (typeof(T) == typeof(BlockText))
            {
                return(elements.Descendants().Where(e => e.ID != null && e.ID.Contains("#t="))
                       .Select(e =>
                {
                    return (new BlockText()
                    {
                        Text = Encoding.UTF8.GetString(Encoding.Default.GetBytes(e.ID.Substring(3)))
                    } as T);
                }));
            }
            else
            if (typeof(T) == typeof(BlockMenu))
            {
                var dictionaryMenu = new Dictionary <string, BlockMenu>();

                var menus = elements.Descendants().Where(e => e.ID != null && (e.ID.Contains("#t=") || e.ID.Contains("default")))
                            .ToList();

                foreach (var e in menus)
                {
                    var       nameMenu  = e.Parents.Where(p => p.ID != null && regex.IsMatch(p.ID)).First();
                    BlockMenu blockMenu = null;

                    if (!dictionaryMenu.ContainsKey(nameMenu.ID))
                    {
                        blockMenu            = new BlockMenu();
                        blockMenu.OptionList = new List <BlockMenuOption>();
                        blockMenu.MenuType   = MenuType.Default;
                    }
                    else
                    {
                        blockMenu = dictionaryMenu[nameMenu.ID];
                    }

                    if (e.Parent.ID.Contains("QuickReply"))
                    {
                        blockMenu.MenuType = MenuType.QuickReply;
                    }


                    if (e.Parent.ID.Contains("Title"))
                    {
                        blockMenu.Text = GetEncodedText(e.ID.Substring(3));
                    }
                    else
                    if (e.Parent.ID.Contains("option"))
                    {
                        var option = new BlockMenuOption();
                        option.Text = GetEncodedText(e.ID.Substring(3));

                        blockMenu.OptionList.Add(option);
                    }
                    else
                    if (e.ID.Contains("default"))
                    {
                        var option = new BlockMenuOption();
                        option.Text = "efault";

                        blockMenu.OptionList.Add(option);
                    }

                    if (dictionaryMenu.ContainsKey(nameMenu.ID))
                    {
                        dictionaryMenu.Remove(nameMenu.ID);
                    }

                    dictionaryMenu.Add(nameMenu.ID, blockMenu);
                }

                return(dictionaryMenu.Values.AsEnumerable() as IEnumerable <T>);
            }
            else
            if (typeof(T) == typeof(BlockImage))
            {
                var imageList = new List <BlockImage>();
                imageList.Add(new BlockImage());
                return(imageList.AsEnumerable() as IEnumerable <T>);
            }

            return(null);
        }