using System.Text; using Nexus.Core.Validators; namespace PhoneBook.Core { /// /// Remove punctuation on input and insert punctuation on output. /// ///

/// Null input or output is passed thorugh as null. /// Non-null input or output must be strings. /// Output is formatted for local or long distane US telephone numbers. /// Output strings that are too short or too long are passed through. ///

public class TelephoneProcessor : Processor { public override bool ConvertInput(IProcessorContext incoming) { object source = incoming.Source; if (source == null) return true; string input = source as string; if (input == null) return false; char[] marks = {'-'}; string[] splits = input.Split(marks); StringBuilder sb = new StringBuilder(input.Length); foreach (string s in splits) { sb.Append(s); } incoming.Target = sb.ToString(); return true; } public override bool FormatOutput(IProcessorContext outgoing) { object source = outgoing.Source; if (source == null) return true; string output = source as string; if (output == null) return false; string mark = "-"; if (output == null) return false; string buffer = null; if (output.Length == 10) { // 012-345-6789 string buffer1 = output.Insert(6, mark); buffer = buffer1.Insert(3, mark); } else if (output.Length == 7) { // 012-3456 buffer = output.Insert(3, mark); } else buffer = output; outgoing.Target = buffer; return true; } } }