public double ValorTotal() { double result = ValorSomenteDoDigito(); if (digitoFilho != null) result += digitoFilho.ValorTotal(); return result; }
public string Extenso() { if (grupoFilho == null) return digito.Extenso(); else if (ValorSomenteDoGrupo() == 0) { return grupoFilho.Extenso(); } else { double valorGrupo = digito.ValorTotal(); string singularPlural = valorGrupo < 2 ? "singular" : "plural"; string nomeGrupo = ResourceManagerHelper .Instance .ResourceManager .GetString(string.Format("Extenso1e{0}{1}", (posicao - 1) * 3, singularPlural)); double valorGrupoFilho = grupoFilho.ValorTotal(); if (valorGrupoFilho == 0) { return string.Format("{0} {1}", digito.Extenso(), nomeGrupo); } else { Grupo proximoGrupoComValor = grupoFilho.PrimeiroGrupoComValor(); string separador = proximoGrupoComValor.Posicao == 1 ? " e" : ","; return string.Format("{0} {1}{2} {3}", digito.Extenso(), nomeGrupo, separador, grupoFilho.Extenso()); } } }