public ConversionStrategy CreateConversionStrategy(HundredGroup hundredGroup) { if (HasHundredsAndTensOrUnits(hundredGroup)) return new HundredsTensAndUnitsConversionStrategy(numberDescriber); if (HasHundreds(hundredGroup)) return new HundredsConversionStrategy(numberDescriber); return new TensAndUnitsConversionStrategy(numberDescriber); }
public override string Convert(HundredGroup hundredGroup) { var lookupResult = NumberDescriber.LookupNumber(hundredGroup.Number); if (lookupResult.Found) return lookupResult.Description; var tens = NumberDescriber.LookupNumber(hundredGroup.Tens); var units = NumberDescriber.LookupNumber(hundredGroup.Units); return Format(tens, units); }
private ConversionStrategy GetConversionStrategy(HundredGroup hundredGroup) { var factory = new ConversionStrategyFactory(NumberDescriber); return factory.CreateConversionStrategy(hundredGroup); }
private string ConvertTensAndUnits(HundredGroup hundredGroup) { var tensAndUnits = new HundredGroup(hundredGroup.Tens + hundredGroup.Units); return GetConversionStrategy(tensAndUnits).Convert(tensAndUnits); }
private string ConvertHundreds(HundredGroup hundredGroup) { var hundreds = new HundredGroup(hundredGroup.Hundreds); return GetConversionStrategy(hundreds).Convert(hundreds); }
public override string Convert(HundredGroup hundredGroup) { var hundreds = ConvertHundreds(hundredGroup); var tensAndUnits = ConvertTensAndUnits(hundredGroup); return Format(hundreds, NumberDescriber.Conjunction, tensAndUnits); }
public abstract string Convert(HundredGroup hundredGroup);
private static bool HasTensOrUnits(HundredGroup hundredGroup) { return (hundredGroup.Tens + hundredGroup.Units) > 0; }
private static bool HasHundredsAndTensOrUnits(HundredGroup hundredGroup) { return HasHundreds(hundredGroup) && HasTensOrUnits(hundredGroup); }
private static bool HasHundreds(HundredGroup hundredGroup) { return hundredGroup.Hundreds > 0; }
public override string Convert(HundredGroup hundredGroup) { var numberOfHundreds = NumberDescriber.LookupNumber(hundredGroup.NumberOfHundreds); var hundred = NumberDescriber.LookupPositionalName(100); return Format(numberOfHundreds, hundred); }