Example #1
0
        private static IEnumerable <TelefoneNumber> ParseTelefoneNumbers(HtmlElement numbers)
        {
            if (string.IsNullOrWhiteSpace(numbers.InnerText))
            {
                yield break;
            }

            var lines = numbers.InnerText.SplitByNewLine().Select(s => s.ToLower());

            TelefoneNumber.TelefoneNumberType telefoneNumberType = TelefoneNumber.TelefoneNumberType.Telefon;
            foreach (var line in lines)
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }
                if (string.Equals(line, "Telefon:", StringComparison.InvariantCultureIgnoreCase))
                {
                    telefoneNumberType = TelefoneNumber.TelefoneNumberType.Telefon;
                    continue;
                }
                if (string.Equals(line, "Fax:", StringComparison.InvariantCultureIgnoreCase))
                {
                    telefoneNumberType = TelefoneNumber.TelefoneNumberType.Fax;
                    continue;
                }
                if (string.Equals(line, "Mobil:", StringComparison.InvariantCultureIgnoreCase))
                {
                    telefoneNumberType = TelefoneNumber.TelefoneNumberType.Mobil;
                    continue;
                }
                if (string.Equals(line, "Webseite:", StringComparison.InvariantCultureIgnoreCase))
                {
                    telefoneNumberType = TelefoneNumber.TelefoneNumberType.Webseite;
                    continue;
                }
                Debug.Assert(!line.Trim().EndsWith(":"));
                if (telefoneNumberType == TelefoneNumber.TelefoneNumberType.Webseite)
                {
                    yield return(new TelefoneNumber {
                        Number = line, Type = telefoneNumberType
                    });
                }
                else
                {
                    var telefoneNumber = ParseTelefoneNumber(line.Trim());
                    telefoneNumber.Type = telefoneNumberType;

                    yield return(telefoneNumber);
                }
            }
        }
Example #2
0
        private void ParseContact(Office office, HtmlNode officeContactNode)
        {
            var children = officeContactNode.ChildNodes.Where(n => n.HasInnerText()).ToArray();

            foreach (var child in children)
            {
                var entry = child.Descendants("span").Select(n => n.GetDecodedInnerText().TrimWhiteSpace()).ToArray();
                Assert(entry.Length >= 2);
                TelefoneNumber.TelefoneNumberType type = GetContactType(entry[0]);
                foreach (var contactRow in entry.Skip(1))
                {
                    var telefoneNumber = new TelefoneNumber
                    {
                        Number = contactRow,
                        Type   = type
                    };
                    office.TelefoneNumbers.Add(telefoneNumber);
                }
            }
        }
Example #3
0
        public string TranslateContactType(TelefoneNumber.TelefoneNumberType telefoneNumberType)
        {
            switch (telefoneNumberType)
            {
            case TelefoneNumber.TelefoneNumberType.Mobil:
                return(GetString("mobile"));

            case TelefoneNumber.TelefoneNumberType.Fax:
                return(GetString("fax"));

            case TelefoneNumber.TelefoneNumberType.Telefon:
                return(GetString("phone"));

            case TelefoneNumber.TelefoneNumberType.Webseite:
                return(GetString("website"));

            default:
                throw new ArgumentOutOfRangeException(nameof(telefoneNumberType), telefoneNumberType, null);
            }
        }