public string Convert(string input) { var numbers = input.Split(new []{"."},StringSplitOptions.RemoveEmptyEntries); var chunks = Chunk(numbers[0]); var seperators = new Seperators(); var sb = new StringBuilder(); sb.Prepend(seperators.Next()); sb.Prepend(VerbaliseLast(chunks.Pop(), chunks.Count > 0)); while (chunks.Count > 0) { var chunk = chunks.Pop(); var next = seperators.Next(); sb.Prepend(next); var verbalise = Verbalise(chunk); sb.Prepend(verbalise); } if (numbers.Length > 1) { sb.Append(" point"); foreach (var digit in numbers[1]) { sb.AppendFormat(" {0}", verbalLookup[int.Parse(digit.ToString())]); } } return sb.ToString() .Trim(); }
protected override string CalcNodeIndent(ITreeNode node) { var indent = new StringBuilder(); foreach (ITokenNode token in node.GetFirstTokenIn().PrevTokens()) { TokenNodeType tokenType = token.GetTokenType(); if (tokenType == PsiTokenType.WHITE_SPACE) { indent.Prepend(token.GetText()); } else if (tokenType != PsiTokenType.NEW_LINE) { indent.Prepend(new string(' ', token.GetTextLength())); } else { break; } } return indent.ToString(); }
protected override string CalcLineIndent(ITreeNode node) { string customIndent = GetCustomIndent(node, CustomIndentType.RelativeLineCalculation); if (customIndent != null) { return customIndent; } var indent = new StringBuilder(); foreach (ITokenNode token in node.GetFirstTokenIn().PrevTokens()) { TokenNodeType tokenType = token.GetTokenType(); if (tokenType == PsiTokenType.WHITE_SPACE) { indent.Prepend(token.GetText()); } else if (tokenType == PsiTokenType.NEW_LINE) { break; } } return indent.ToString(); }