Example #1
0
        public IEnumerable <Element> GetChildren(EntityToken entityToken, SearchToken searchToken)
        {
            if (UserValidationFacade.IsLoggedIn() &&
                !DataLocalizationFacade.ActiveLocalizationCultures.Contains(UserSettings.ActiveLocaleCultureInfo))
            {
                return(Enumerable.Empty <Element>());
            }

            if (entityToken is AssociatedDataElementProviderHelperEntityToken associatedData)
            {
                return(_pageAssociatedHelper.GetChildren(associatedData, false));
            }

            if (entityToken is DataGroupingProviderHelperEntityToken dataGrouping)
            {
                return(_pageAssociatedHelper.GetChildren(dataGrouping, false));
            }

            using (new DataScope(DataScopeIdentifier.Administrated))
            {
                var allChildPages = GetChildrenPages(entityToken, searchToken);
                List <KeyValuePair <PageLocaleState, IPage> > childPages = IEnumerableExtensionMethods.ToList(allChildPages, f => new KeyValuePair <PageLocaleState, IPage>(PageLocaleState.Own, f));

                List <Element> childPageElements = GetElements(childPages, entityToken is PageElementProviderEntityToken);

                return(GetChildElements(entityToken, childPageElements));
            }
        }
Example #2
0
        public MutableString RemoveAllExcept(IEnumerable <char> values)
        {
            if (null == values)
            {
                throw new ArgumentNullException("values");
            }

            if (0 == _value.Length)
            {
                return(this);
            }

#if NET20
            var list = IEnumerableExtensionMethods.ToList(values);
#else
            var list = values.ToList();
#endif

            if (0 == list.Count)
            {
                return(Clear());
            }

            for (var i = _value.Length - 1; i > -1; i--)
            {
                if (list.Contains(_value[i]))
                {
                    continue;
                }

                Remove(i, 1);
            }

            return(this);
        }
Example #3
0
        private static DataRow FillNormalDataRow(DataRow obj,
                                                 HtmlNode row)
        {
#if NET20
            var cells = IEnumerableExtensionMethods.ToList(row.Descendants("td"));
#else
            var cells = row.Descendants("td").ToList();
#endif

            if (0 == cells.Count)
            {
                return(obj);
            }

            var i = 0;
            foreach (var cell in cells)
            {
                var attribute = cell.Attributes["colspan"];
                var span      = null == attribute ? 1 : XmlConvert.ToInt32(attribute.Value);
                for (var s = 0; s < span; s++)
                {
                    obj[i++] = cell;
                }
            }

            return(obj);
        }
Example #4
0
        private static void AddVerticalDataRows(DataTable obj,
                                                HtmlNode body)
        {
#if NET20
            var rows  = IEnumerableExtensionMethods.ToList(body.Descendants("tr"));
            var cells = 0;
            foreach (var row in rows)
            {
                cells = Math.Max(cells, IEnumerableExtensionMethods.Count(row.Descendants("td")));
            }
#else
            var rows  = body.Descendants("tr").ToList();
            var cells = rows
                        .Select(row => row.Descendants("td").Count())
                        .Concat(new[] { 0 })
                        .Max();
#endif

            for (var i = 0; i < cells; i++)
            {
                obj.Rows.Add(obj.NewRow());
            }

            var column = 0;
            foreach (var item in rows)
            {
                var current = column;
                var row     = -1;
                foreach (var cell in item.Descendants("td"))
                {
                    row++;
                    for (var c = current; c < obj.Columns.Count; c++)
                    {
                        if (DBNull.Value == obj.Rows[row][current])
                        {
                            break;
                        }

                        row++;
                    }

                    var attribute = cell.Attributes["rowspan"];
                    var span      = null == attribute ? 1 : XmlConvert.ToInt32(attribute.Value);
                    if (1 == span)
                    {
                        obj.Rows[row][current] = cell;
                        continue;
                    }

                    for (var s = 0; s < span; s++)
                    {
                        obj.Rows[row][current + s] = cell;
                    }
                }

                column++;
            }
        }
Example #5
0
        public LexicalMatch MatchWithin(string value)
        {
            if (null == value)
            {
                throw new ArgumentNullException("value");
            }

            if (0 == value.Length)
            {
                return(null);
            }

            var result = Match(value);

            if (null != result)
            {
                return(result);
            }

            var parts = value.Split(' ');

            if (parts.Length < 2)
            {
                return(null);
            }

            var mutable = new MutableString(value);

#if NET20
            foreach (var part in PartsWithin(IEnumerableExtensionMethods.ToList(mutable.ToString().Split(' '))))
#else
            foreach (var part in PartsWithin(mutable.ToString().Split(' ').ToList()))
#endif
            {
                result = Match(part);
                if (null == result)
                {
                    continue;
                }

#if NET20
                var splits = StringExtensionMethods.Split(value, part, StringSplitOptions.None);
#else
                var splits = value.Split(part, StringSplitOptions.None);
#endif
                if (2 != splits.Length)
                {
                    continue;
                }

                result.Prefix = splits[0].Trim();
                result.Suffix = splits[1].Trim();
                return(result);
            }

            return(null);
        }
Example #6
0
        protected virtual IList <string> NextLine()
        {
            Line = null;
            while (!EndOfStream)
            {
                Line = ReadLine();
                LineNumber++;
                if (!string.IsNullOrEmpty(Line))
                {
                    break;
                }
            }

            return(string.IsNullOrEmpty(Line)
                       ? null
#if NET20
                       : IEnumerableExtensionMethods.ToList(Line.Split('\t')));
Example #7
0
        public LexicalMatch MatchEnding(string value)
        {
            if (null == value)
            {
                throw new ArgumentNullException("value");
            }

            if (0 == value.Length)
            {
                return(null);
            }

            var result = Match(value);

            if (null != result)
            {
                return(result);
            }

            var substring = new MutableString(value);
            var clone     = substring.Clone();

#if NET20
            foreach (var word in IEnumerableExtensionMethods.ToList(substring.ToString().Split(' ')))
#else
            foreach (var word in substring.ToString().Split(' ').ToList())
#endif
            {
                substring.RemoveFromStart(word).Trim();
                result = Match(substring);
                if (null == result)
                {
                    continue;
                }

                result.Prefix = clone.Prefix(substring).Trim();
                return(result);
            }

            return(null);
        }
Example #8
0
        public IEnumerable <Element> GetChildren(EntityToken entityToken, SearchToken searchToken)
        {
            if (entityToken is AssociatedDataElementProviderHelperEntityToken)
            {
                return(_pageAssociatedHelper.GetChildren((AssociatedDataElementProviderHelperEntityToken)entityToken, false));
            }

            if (entityToken is DataGroupingProviderHelperEntityToken)
            {
                return(_pageAssociatedHelper.GetChildren((DataGroupingProviderHelperEntityToken)entityToken, false));
            }

            using (new DataScope(DataScopeIdentifier.Administrated))
            {
                var allChildPages = GetChildrenPages(entityToken, searchToken);
                List <KeyValuePair <PageLocaleState, IPage> > childPages = IEnumerableExtensionMethods.ToList(allChildPages, f => new KeyValuePair <PageLocaleState, IPage>(PageLocaleState.Own, f));

                List <Element> childPageElements = GetElements(childPages, entityToken is PageElementProviderEntityToken);

                return(GetChildElements(entityToken, childPageElements));
            }
        }
Example #9
0
        private static IList <string> ColumnsRow(HtmlNode table)
        {
            var list = new List <string>();

#if NET20
            var row = IEnumerableExtensionMethods.FirstOrDefault(table.Descendants("tr"));
#else
            var row = table.Descendants("tr").FirstOrDefault();
#endif
            if (null == row)
            {
                return(list);
            }

#if NET20
            var headers = IEnumerableExtensionMethods.ToList(row.Descendants("th"));
#else
            var headers = row.Descendants("th").ToList();
#endif
            if (0 == headers.Count)
            {
#if NET20
                headers = IEnumerableExtensionMethods.ToList(row.Descendants("td"));
#else
                headers = row.Descendants("td").ToList();
#endif
            }

#if NET20
            foreach (var header in headers)
            {
                list.Add(ColumnName(header));
            }
#else
            list.AddRange(headers.Select(ColumnName));
#endif
            return(list);
        }
Example #10
0
        private static void FillDataTable(DataTable obj,
                                          HtmlNode table)
        {
#if NET20
            var body = 0 != IEnumerableExtensionMethods.Count(table.Descendants("thead"))
                           ? IEnumerableExtensionMethods.First(table.Descendants("tbody"))
                           : table;
            var rows = IEnumerableExtensionMethods.ToList(body.Descendants("tr"));
#else
            var body = table.Descendants("thead").Any()
                           ? table.Descendants("tbody").First()
                           : table;
            var rows = body.Descendants("tr").ToList();
#endif
            if (HasVerticalColumns(table))
            {
                AddVerticalDataColumns(obj, body);
                AddVerticalDataRows(obj, body);
                return;
            }

            var columns = Columns(table);
            for (var i = 0; i < columns.Count; i++)
            {
#if NET20 || NET35
                var name = string.IsNullOrEmpty(columns[i])
#else
                var name = string.IsNullOrWhiteSpace(columns[i])
#endif
                               ? XmlConvert.ToString(i)
                               : columns[i];
                obj.Columns.Add(name, typeof(HtmlNode));
            }

            AddNormalDataRows(obj, rows);
        }
Example #11
0
        private static IList <string> ColumnsHead(HtmlNode head)
        {
#if NET20
            var rows = IEnumerableExtensionMethods.ToList(head.Descendants("tr"));
#else
            var rows = head.Descendants("tr").ToList();
#endif
            if (0 == rows.Count)
            {
                return(new List <string>());
            }

            var matrix = new Matrix <string>();
            foreach (var cell in rows[0].Descendants("th"))
            {
                var colspan = cell.Attributes["colspan"];
                if (null == colspan)
                {
                    matrix.Width++;
                    continue;
                }

                for (var i = 0; i < XmlConvert.ToInt32(colspan.Value); i++)
                {
                    matrix.Width++;
                }
            }

            var carry = new List <int>();
            for (var i = 0; i < matrix.Width; i++)
            {
                carry.Add(0);
            }

            var y = 0;
            foreach (var row in rows)
            {
                var x = 0;
                matrix.Height++;
                foreach (var cell in row.Descendants("th"))
                {
                    while (0 != carry[x])
                    {
                        matrix[x, y] = matrix[x, y - 1];
                        carry[x]--;
                        x++;
                    }

                    var rowspan = cell.Attributes["rowspan"];
                    if (null != rowspan)
                    {
                        carry[x] = XmlConvert.ToInt32(rowspan.Value);
                    }

                    var colspan = cell.Attributes["colspan"];
                    var name    = ColumnName(cell);
                    var index   = 1;
                    for (var i = 0; i < (null == colspan ? 1 : XmlConvert.ToInt32(colspan.Value)); i++)
                    {
                        matrix[x++, y] = string.Format(CultureInfo.InvariantCulture, null == colspan ? "{0}" : "{0} ({1})", name, index++);
                    }
                }

                y++;
            }

#if NET20
            var list = new List <string>();
            foreach (var element in matrix.Row(matrix.Height - 1))
            {
                list.Add(element);
            }

            return(list);
#else
            return(matrix.Row(matrix.Height - 1).ToList());
#endif
        }