private string[] Pattern(Nokogiri.Node node, string selector) { return(TextOrEmpty(node, selector) .Select(Squish) .Where(NotNullOrEmpty) .ToArray()); }
private static string[] TextOrEmpty(Nokogiri.Node node, string selector) { var nodes = node.Search(selector); return(nodes == null || !nodes.Any() ? new string[0] : nodes.Select(n => n.Text).ToArray()); }
private string[] PossibleNumberPattern(Nokogiri.Node node) { var nodes = node.Search("fixedLine possibleLengths").FirstOrDefault(); if (nodes != null) { return(new string[] { $"\\d{{{(nodes["localOnly"]+","+nodes["national"]).Trim(',')}}}" }); } return(new string[] {}); }
private IEnumerable <string[]> ExampleNumbersForTerritoryNode(Nokogiri.Node node) { var name = TerritoryName(node); if (name == "001") { return new[] { new string[0] } } ; return(node.Search(example_numbers_selector()) .Select(node1 => new[] { node1.Text, name }) .ToArray()); }
private IDictionary CompileFormat(Nokogiri.Node node) { var format = new Dictionary <string, object> { { "pattern", node["pattern"] }, { "format", TextOrEmpty(node, "format").FirstOrDefault() }, { "leadingDigits", Pattern(node, "leadingDigits") }, { "formatRule", node["nationalPrefixFormattingRule"] }, { "intlFormat", TextOrEmpty(node, "intlFormat").FirstOrDefault() }, }; return(format); }
private IDictionary CompileTerritory(Nokogiri.Node node) { var possibleNumberPattern = Pattern(node, "generalDesc possibleNumberPattern"); var nationalNumberPattern = Pattern(node, "generalDesc nationalNumberPattern"); var d = new Dictionary <string, object> { { "name", TerritoryName(node) }, { "possibleNumber", possibleNumberPattern.FirstOrDefault() }, { "nationalNumber", nationalNumberPattern.FirstOrDefault() }, { "formattingRule", Squish(node["nationalPrefixFormattingRule"]) }, { "nationalPrefix", Squish(node["nationalPrefix"]) }, }; if ("true".Equals(Squish(node["nationalPrefixOptionalWhenFormatting"]))) { d.Add("nationalPrefixOptionalWhenFormatting", true); } return(d); }
private static string TerritoryName(Nokogiri.Node node) { return(node["id"]); }