bool parseCharacterAffix()

in lib/src/intl/number_format_parser.dart [171:217]


  bool parseCharacterAffix(StringBuffer affix) {
    var ch = pattern.current;
    if (ch == null) return false;
    if (ch == QUOTE) {
      if (pattern.peek == QUOTE) {
        pattern.moveNext();
        affix.write(QUOTE); // 'don''t'
      } else {
        inQuote = !inQuote;
      }
      return true;
    }

    if (inQuote) {
      affix.write(ch);
    } else {
      switch (ch) {
        case PATTERN_DIGIT:
        case PATTERN_ZERO_DIGIT:
        case PATTERN_GROUPING_SEPARATOR:
        case PATTERN_DECIMAL_SEPARATOR:
        case PATTERN_SEPARATOR:
          return false;
        case PATTERN_CURRENCY_SIGN:
          // TODO(alanknight): Handle the local/global/portable currency signs
          affix.write(currencySymbol);
          break;
        case PATTERN_PERCENT:
          if (result.multiplier != 1 && result.multiplier != PERCENT_SCALE) {
            throw const FormatException('Too many percent/permill');
          }
          result.multiplier = PERCENT_SCALE;
          affix.write(symbols.PERCENT);
          break;
        case PATTERN_PER_MILLE:
          if (result.multiplier != 1 && result.multiplier != PER_MILLE_SCALE) {
            throw const FormatException('Too many percent/permill');
          }
          result.multiplier = PER_MILLE_SCALE;
          affix.write(symbols.PERMILL);
          break;
        default:
          affix.write(ch);
      }
    }
    return true;
  }